自动生成的词法分析器跟之前讲的图转移算法是类似的,因为是自动生成,为了把整个流程形式化,需要用另外一个数学工具--有限状态自动机。 从数学上讲,有限状态自动机是什么概念呢? 输入一个字符串,如果字符串能够接受,则输出Yes,否则输出No。有限状态自动机是一个五元组,M=(S, Σ, ...
分类:
其他好文 时间:
2015-02-01 14:48:50
阅读次数:
213
有限状态机(Finite-state machine)又称有限状态自动机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。常用与:正则表达式引擎,编译器的词法和语法分析,游戏设计,网络协议,企业应用中等方面。这里给出其一般实现方法和一个应用举例。...
分类:
编程语言 时间:
2014-11-16 13:25:35
阅读次数:
298
KMP本身不复杂,但网上绝大部分的文章(包括本文的2011年版本)把它讲混乱了。下面,咱们从暴力匹配算法讲起,随后阐述KMP的流程 步骤、next 数组的简单求解 递推原理 代码求解,接着基于next 数组匹配,谈到有限状态自动机,next 数组的优化,KMP的时间复杂度分析,最后简要介绍两个KMP的扩展算法。
全文力图给你一个最为完整最为清晰的KMP,希望更多的人不再被KMP折磨或纠缠,不再被一些混乱的文章所混乱,有何疑问,欢迎随时留言评论,thanks。...
分类:
其他好文 时间:
2014-11-01 21:52:40
阅读次数:
325
简介Aho-Corasick算法简称AC算法,通过将模式串预处理为确定有限状态自动机,扫描文本一遍就能结束。其复杂度为O(n),即与模式串的数量和长度无关。思想自动机按照文本字符顺序,接受字符,并发生状态转移。这些状态缓存了“按照字符转移成功(但不是模式串的结尾)”、“按照字符转移成功(是模式串的结...
分类:
编程语言 时间:
2014-11-01 00:54:51
阅读次数:
578
在图示中,键标注在节点中,值标注在节点之下。每一个完整的英文单词对应一个特定的整数。Trie 可以看作是一个确定有限状态自动机,尽管边上的符号一般是隐含在分支的顺序中的。键不需要被显式地保存在节点中。图示中标注出完整的单词,只是为了演示 trie 的原理。trie 中的键通常是字符串,但也可以是其它...
分类:
其他好文 时间:
2014-10-27 22:45:53
阅读次数:
309
http://blog.csdn.net/kenden23/article/details/18696083本题是十分麻烦的题目,情况是非常多,网上也很多方法,其中最有效,优雅的方法是有限状态自动机(Finite automata machine)。其他一般方法都会十分复杂,而代码不能算优雅。为此我...
分类:
其他好文 时间:
2014-10-26 11:30:51
阅读次数:
171
本文以一个有限状态自动机(FSM)为例来介绍几种从有限状态自动机转化为正则表达式的方法。 有一个FSM能接受能被3整除的二进制串(如字符串0,其十进制为0(考虑其到初始状态,认为读到0,亦为可接受状态);字符串11,其十进制为3;字符串110,其十进制为6;......这些都可接受)。这个有限...
分类:
其他好文 时间:
2014-09-08 00:54:56
阅读次数:
256
题意好难看懂的说。。。 有限状态自动机DFA是这么一个有序组;Σ代表输入字符集,表示此自动机的工作范围;U代表所有的状态集合;s是初始状态;T是最终状态;phi代表转移函数,定义为phi : U × Σ → U。 利用DFA进行字符串识别是要你做这么一件事情:The input of the a.....
分类:
其他好文 时间:
2014-07-30 23:27:35
阅读次数:
364
后缀自动机(SAM)
搜了网上,多介绍应用,[3]算是一个比严格的定义性描述,并给出了证明。但是这个证明我并未看懂,下面综合一些资料给一些个人的直观但不失严谨的理解。
给定一个串A的后缀自动机是一个有限状态自动机(DFA),它能够且仅能够接受A的后缀,并且我们要求它的状态数最少。
设n=|A|, 状态数:st=[n+1,2n-1], 边数:eg=[n,3n-4]。构造:空间复杂度:26*st...
分类:
其他好文 时间:
2014-07-02 08:50:12
阅读次数:
338