有限自动机

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有限自动机相关的知识,希望对你有一定的参考价值。

有限自动机
有一个有限的状态集合和一些从一个状态转向另一个状态的边,每条边上标记有一个符号;其中一个状态是初态,某些状态是终态。
确定的有限自动机 (DFA)
确定的有限自动机中,不会有从同一状态出发的两条边的标记有相同的符号,DFA以如下方式接收或拒绝一个字符串
1.从初始状态出发,对于输入字符串的每个字符,自动机都将沿着一条确定的边后到达另一状态。
2.对n个字符的字符串进行n次状态转换后,自动机达到了一个终态,自动机将接受该字符串。若达到的不是终态,或者找不到与输入字符匹配的边,那么拒绝。
自动机可以用转换矩阵或者转换表来表示。(类似图的邻接矩阵,邻接表)此外还需要一个终结数组,将状态编号映射至接受的动作。

非确定有限自动机(NFA) 是一种需要对从一个状态出发的多条标有相同符号的边进行选择(可以转换到多个状态)的自动机.它也可能存在标有空的边。

正则表达式可以转换成一个非确定有限自动机。


NFA装换成DFA
因为实现DFA比较容易实现NFA比较复杂。我们可以尝试把NFA转换成DFA,然后再实现。
具体方法是把状态的NFA转换成 状态数组的DFA。一个结点不再表示一个状态,而是表示通过一个字符匹配所能达到的所有状态的集合。

构造DFA是一种机械性地工作,很容易编程实现,所以出现了lex、flex这种用来生成词法分析器代码的程序。

以上是关于有限自动机的主要内容,如果未能解决你的问题,请参考以下文章

有限自动机需要正则表达式:偶数个 1 和偶数个 0

DFA确定有限状态自动机

基于有限状态自动机的数据类型识别功能

词法分析器:通过有限自动机实现正则表达式?

有限自动机、下推自动机和图灵机示例

AC算法—有限自动机的多模式匹配