有限自动机(DFA)分析 - webdancer's Blog

有限自动机(DFA)分析

webdancer posted @ 2010年9月14日 07:59 in 算法 with tags 算法 , 2959 阅读

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。


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter
Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee