- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
授课题目 NFA确定化与DFA化简 授课学时 2 授课时间 2011.9 教学重点、难点
带空边的非确定有限自动机确定化算法;
确定有限自动机化简算法; 教学内容:
1. 非确定有限自动机和确定有限自动机的等价性。
对任何一个NFA M,都存在一个DFA M’ , 使得L(M’)=L(M)
首先定义两个闭包:
1) 设I是NFA M的状态集的子集,定义I的(闭包(_CLOSURE(I)为:
若q ∈I ,则q ∈(_CLOSURE(I)
若q ∈I,那么从q出发经任意条ε弧而能到达的任何状态q’都属于(_CLOSURE(I)。
2) 设I是NFA M 的状态集的子集,a∈∑,可以定义状态子集Ia∈S,对任一sj∈Ia,必有si∈I,使得si和sj之间存在一条由si指向sj的有向弧,弧上的标记字符恰为 a。
Ia=(_CLOSURE(J)
其中,J是那些可从I中的某一状态节点出发经过一条a弧而能到达的状态节点的全体。
然后对给定的NFA按照如下的步骤进行确定化:
(1) 构造一张表,共有|∑|+1列,第一列为状态子集I,然后对每个a∈∑分别设一列Ia;
(2) 第一行第一列的状态子集为I为(_CLOSURE(s0),其中s0为初始状态;
(3) 为第一列中的I和每个k∈∑求Ik,并记入相应的Ik列。如果它和表格第一列中的所有状态子集均不相同,则此表生成一个新行,将它填入新行的第一列中。
(4) 重复步骤(3),直到对每个I和k∈∑均已求得Ik,且不再生成新的状态子集为止。此过程在有限步内一定可以终止,因为如果|S|=n,则状态子集最多只有2n 个,上述表最多只有2n行;
(5) 将第一列中的每个状态子集重命名为新的状态,则上述表格便成为新的状态状换矩阵。
例 设有NFA M =({ 1 , 2, … 9} , { a , b } , f , {1}, {6 , 7 , 9 }), 其中f如图2.8所示.
对此NFA ,我们首先构造一张表,表的每一行含有 |∑|+1 列。将表的第二行的第一列处单元格的值置为ε__CLOSURE(s0),这里为ε__CLOSURE(1)={1,2}。
然后我们开始计算表中其它单元格的值。一般而言,如果某一行的第一列中的状态子集已经确定,记为I,那么对k∈∑求Ik,并记入这一行相应的Ik列。然后我们检查这一行所有的状态子集Ik,看它们是否已经在表的第一列中出现过,如果某一个Ik没有出现过,则在此表的最下面生成一个新行,将它填入新行的第一列中。
重复上述的过程,直至所有已生成的Ik 均已在表的第一列中出现过。这种NFA确定化的方法称为子集法。
按照子集法NFA M进行确定化构造出的状态转换矩阵表如图所示。
I
Ia
Ib
{1,2}
{2,4,5,6,7}
{3,8}
{2,4,5,6,7}
φ
{3,9,8}
{3,8}
{9}
φ
{3,9,8}
{9}
φ
{9}
φ
φ
对NFA M进行确定化构造出的状态转换矩阵表
对表格的状态子集进行重命名,分别用1、2、3、4、5来代表{1,2}、{2,4,5,6,7}、{3,8}、{3,9,8}、{9}这五个状态子集,形成如图2.10所示的状态转换矩阵,它即是和NFA M等价的DFA M’。
I
A
b
1
2
3
2*
4
3
5
4*
5
5*
和NFA M等价的DFA M’
2. 确定有限自动机化简
对同一个语言,可以有无限多个有限自动机来描述,从功能上看,这些有限自动机是等价的,但其构成的复杂程度差别很大;对一个NFA,把它确定化后,得到的DFA所具有的状态数可能并不是最小的。那么,有没有一个最小的DFA呢,这就是有限自动机的化简或最小化问题。
一个确定有限自动机M的化简是指:寻找一个状态数最少的 DFA M’,使得L(M)=L(M’)。
定义 设DFA M 的两个不同状态q1和q2 , 如果对任意输入的符号串x,从q1和q2出发,总是同时到达接受状态或拒绝状态中,则称q1和q2是等价的。如果q1和q2不等价,则称q1和q2是可区分的。
显然,DFA的终止状态和非终止状态是不等价的。
定义 从有限自动机的初始状态开始,任何输入序列都不能到达的那些状态称为无关状态。
定义 如果DFA M 没有无关状态,也没有彼此等价的状态,则称DFA M 是最小的(或规约的)。
下面我们介绍一个常用的DFA化简方法:分离法,也称为划分法。
分离法的基本思想:首先DFA中的无关状态,可以直接去掉,对DFA的功能无影响。然后将DFA的状态集划分为一些不相交的子集,使得任何两个不同子集中的状态都是可区分的,而同一子集中的任何两个状态都是等价的,然后在每一个子集中选一个代表,合并掉其它的等价状态,这样就得到了一个最小的DFA。
分离法的步骤
文档评论(0)