




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、有穷自动机的原理及应用雷鹏2013-01-05DFA 与 NFA转移目标是一个状态集合,可能包含多个状态DFA 与 NFA 的转化ADFA Acyclic DFA 无环自动机一个无环自动机表达了一个有限的字符串集合Trie最简单,最大的 ADFAMinADFA 最小化的无环自动机又叫 DAWG (Directed Acyclic Word Graph)需要的内存很小,极端情况下可将 n 压缩到O(log(n)随着字符串集合的增大,MinADFA 可能反而更小后缀自动机因子自动机典型应用Regular Expression 正则表达式Lexical Analyzing 词法分析Pattern M
2、atching 模式匹配精确匹配,前缀匹配多模匹配(AC自动机)Dictionary Compressing 词表压缩自动机最小化,字典序计算DFA 的最小化两个 DFA 等价如果这两个DFA表达的语言相同等价的两个DFA的状态数可能不同状态数最小的那个DFA称为最小的DFA更小的 DFA 需要的内存更小两个DFA同构状态数相等,表达的语言相同对状态编号做一置换后,完全等同规格化的DFA:状态编号为从初始状态执行深度优先遍历的序号063 的二进制串未最小化的Tree 形状的 DFA (Trie)最小化的 DAG 形状的 DFA (DAWG)未最小化的Tree 形状的 DFA (Trie)最小化
3、的 DAG 形状的 DFA (DAWG)062 的二进制串相当于将n个状态压缩到O(log(n)个状态该自动机是未规格化的极端的例子:字符串 “1” “99999”未最小化的Tree 形状的 DFA (Trie)最小化的 DAG 形状的 DFA (DAWG)intint_tintmax_tint8_tint16_tint32_tint64_tuintuint_tuintmax_tuint8_tuint16_tuint32_tuint64_tDFA 的最小化算法Hopcroft 算法原理MyhillNerode 等价对任意输入,同一分区(子集)中两个状态 p, q的行为相同,则 p, q 是 M
4、yhillNerode 等价的行为相同即:对任意w,(p,w) 与 (q,w)要么都是都是终止状态,要么都不是都不是终止状态Partition Refinement可直译为分区细化分区细化Partition Refinement 是 Hopcroft 算法的一个关键操作,该操作使用一个函数将集合的当前切分中的每个分区进行再切分,直到不能继续切分Hopcroft 算法伪代码P := F, Q F ; / 表示集合减法,Q表示所有状态的集合,F 表示终止状态集合W := F,QF ; / 此伪代码来源于维基百科,但维基百科此行有误/QF也必须加入 W (WaitingSet) / 其它一些论文中将
5、 W 初始化为 min(F, Q F) , 也不对while (W is not empty) do choose and remove a set A from W for each c in do let X be the set of states for which a transition on c leads to a state in A for each set Y in P for which X Y is nonempty do replace Y in P by the two sets X Y and Y X if Y is in W replace Y in W by
6、 the same two sets else add min( X Y, Y X ) to WHopcroft 算法实现逆自动机一般DFA的逆是一个NFA,结构比较复杂Trie的逆是一棵倒长的树,结构非常简单用 smallmap 收集反向转移双向链表(插入、删除均为 O(1) )用数组下标做链接集合的一个切分切分可用一个置换(permutation)表达切分切分是指将一个集合切分切分成多个互不相交的子集Waiting Set可以任意次序进出栈式的Waiting Set可使算法运行得更快ADFA最小化的基本原理ADFA最小化的实用算法注册表按右语言等价的定义,实现一个 mapTargetSet
7、 是 StateID 标识的状态的转移:pair(Char,Target) 的有序集合根据新的输入(字符串)和当前状态构造一个 TargetSet 作为Key,用该Key查找map,如果找到,则用找到的状态替换当前状态替换时,使用深度优先,后序遍历(从深往浅)为什么该算法不能用在非ADFA上?数学归纳法必须有初始条件初始条件即至少一个的终止状态不能循环论证ADFA的最小化:字典序的输入1.一旦执行最小化,前面的自动机状态不会再变(深度优先,后序)2.找出(当前串与上一个串的)公共前缀CommonPrefix3.从上一个串尾至CommonPrefixLen执行状态合并(按注册表)4.每次加入一个
8、串,整个DFA是不完全不完全最小化的,完成时需要执行一次最终的最小化ADFA的最小化:任意顺序的输入汇合状态(Confluence State):有多个前驱状态的状态需要克隆从汇合状态开始的路径加入当前串之后,在当前串的路径上从后往前执行最小化每加入一个串,整个自动机是完全完全最小化的ADFA 与字典序号我们大多数情况下需要一个Map普通的ADFA只能表示 Set可行的策略:从 ADFA 中得到一个串在该 ADFA中的字典序将map 的 Value保存一个数组中最好也可以从字典序反推出ADFA中的一个串附加一些数据,即可实现每个状态同时保存该状态的右语言集合的尺寸或者,每个状态转移(图的边)保
9、存转移字符小于自己的转移字符的其它目标状态的右语言尺寸之和这种策略对应的算法更快,直观上看需要更多的内存,但实际上,每个状态的第一个转移对应的这个数字总为0,可以省去,再加上对于很多自动机,状态的平均转移数小于2,从而,需要的内存甚至更少(只有当平均转移数大于2时,这种策略才需要更多的内存)!路径压缩将直线形的状态序列压缩成一个状态序列中每个状态只有一个后续状态除序列起始起始状态,其它状态都不是汇合汇合状态除序列末尾末尾状态,其它状态都不是终止终止状态路径压缩一般可以将状态数压缩到原来的30%甚至更少路径压缩的DFA串匹配速度更快在压缩的路径上是精确的串比较,无状态转移路径压缩的适用范围路径压
10、缩可以应用到任意形状的DFA上包括有环有环的 DFARadix Tree 是一种应用了路径压缩的 Trie在 MinDFA 上应用路径压缩可进一步减小状态数应用了路径压缩的DFA不再是严格意义上的DFA无法(很难)进行修改操作通用的DFA算法不再适用与计算字典序的算法完美兼容AC(Aho-Corasick)自动机AC自动机与 TrieAC自动机是基于Trie的每个状态中有附加数据一个 fail link 模式串集合的一个子集因为一个模式串可能是另一个模式串的后缀AC自动机可以用 Double Array 实现AC自动机最坏情况时间复杂度是最优的扩展的AC自动机DFA 的实现最简单的实现(需附带
11、一个位图保存终止状态标志)typedef unsigned int state_id_t;typedef unsigned char char_t;typedef state_id_t automata_t256;缺点:空间消耗太大,仅适用于Demo非常小的 DFA 状态转移非常密集的 DFA实际应用中往往有包含数亿,甚至数十亿状态的自动机,我们需要更紧凑的实现正则表达式的DFA一般比较小,也比较密,用这种简单实现是可行的。Google RE2 中的 DFA 就是用了这种实现紧凑的实现工程实践Double Array Trie & Bitmap Small CharSet DFA启发式填充方法(往往可以填充到99.9%以上)Offline填充:BFS/DFS 遍历时填充,不需重定位Online填充:无空位时需要重定位Bitmap Byte Char Set DFAmin/max char + 指针(整数表示的相对偏移)仅一个转移时,指针直接指向目标状态有多个转移时,指针指向内存池中的Bitmap+数组popcnt 的合理使用在搜索项目中的应用纠
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 光伏运行规程
- 甲状腺疾病操作流程
- 腹膜炎的病理生理
- 主题团日仪式教育
- 给船装上动力
- 2025年会计职称考试《初级会计实务》财务风险预警解题技巧试题集
- 2025年托福口语模拟测试卷:心理健康与心理支持系统试题
- 2025年会计职称考试《初级会计实务》会计信息质量要求重点内容梳理试题
- 2025年统计学期末考试题库:综合案例分析题解法精讲与答案
- 2025年小学英语毕业考试模拟卷(笔试综合)英语听力技巧训练与解析
- 人名调解员培训课件
- 水利工程中的水利法规与政策体系
- 20s206自动喷水与水喷雾灭火设施安装
- 能源托管服务投标方案(技术方案)
- 工业机器人操作与安全防护培训
- 臀部脓肿的护理查房
- 光伏-施工安全培训
- 儿童环内环内置式包皮
- 修订《科学》(大象版)实验目录表
- 中药材的规范化生产的概况课件
- 汽车客运站危险源辨识和风险评价记录表
评论
0/150
提交评论