有限自动机(DFA)分析 - webdancer's Blog
有限自动机(DFA)分析
DFA可以用状态表来形象的表示,如下:
(图摘自http://www.javaeye.com/topic/336577,文章讲述了如何利用dfa来进行文字过滤)
它有点和边构成,其中点成为状态;边称为转移。状态中两种状态较为特殊:初始状态(s)和接受状态(Q)。
DFA精确定义:
DFA是一个 (Q,Σ ,§, q0,F) 构成的五元组,其中:
1.Q是有限状态集合。2.Σ 是有限字符集合。3.§是(Q,Σ )—>Q的转移函数。4。q0是初始状态。5.F是接受状态集合。
注:能被确定有限状态自动机识别的语言是正则语言。
DFA运算的精确定义:
设M= (Q,Σ ,§, q0,F)是一个DFA,w=w1w2w3...wn是一个language.那么,如果存在状态序列r0r1r2...rn,且满足以下三个条件:
(1)r0=q0;(2)§(ri , wi )=r(i+1) ,i=0,1,2,3,...,n (3) rn=F。
则称M接受w。
如何设计自动机:
设计自动机应该是极富创造力的工作,但是还是应该掌握一些构造的技巧:
(1)当你读字符串时,搞清楚应该记住关于字符串的什么信息。提取一些关键信息,确定可能性,得出状态集Q。
(2)通过转移来得到状态序列。
(3)确定初始、接受状态。
当然,以上只是简单的描述。
如何来描述DFA呢?
使用什么样的数据结构来描述DFA呢?
(1)根据状态图,当然可以使用矩阵来表示。
(2)也可以用Trie树来表示。可以,使用DAT。