- 1、本文档共58页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 编译原理 * 例题:假设有一个不确定的有限自动机 NFA M’= (K’,∑’∪{ε} ,f’ ,S0’ ,Z’), 其中K’={1,2,3,4},∑’={a,b,c},S0’ =1, Z’={4}, 状态图如图3.13所示。 接受的语言: L(M’) ={a m b | m≥1} ∪{a c n | n≥1} ∪{ε}, 构造一个DFA M= (K,∑ ,f ,q0,Z), 使L(M)=L(M’) 1 2 3 4 a a a c c b ε 图3.13 NFA M’的状态图 * 编译原理 * 构造确定的有限自动机过程如下: 1)首先根据ε闭包的计算方法求NFA M的开始状态S0’的ε闭包,从而确定DFA M的开始状态q0。 q0 =ε-closure(S0’)= ε-closure(1)={1,4} 2)根据弧转换集的计算方法求开始状态q0对每个输入符号的弧转换集q0a、q0b和q0c从而确定与开始状态q0有关的状态转换函数。 f(q0,a)=q0a =ε-closure( f({1,4},a) ) =ε-closure(f(1, a )∪f(4, a ) ) =ε-closure({2,3}∪Φ)={2,3} 1 2 3 4 a a a c c b ε * 编译原理 * 将{2,3}作为新状态,并令q1 ={2,3},即得到f(q0,a)= q1 q0的b弧转换集q0b= ε-closure( f({1,4},b) ) = ε-closure(Φ)= Φ,即 f(q0,b) = Φ; q0的c弧转换集q0c= ε-closure( f({1,4},c) ) = ε-closure(Φ)= Φ; f(q0,c) = Φ; 1 2 3 4 a a a c c b ε * 编译原理 * 由于f(q0,b) = Φ,f(q0,c) =Φ,说明没有新状态产生。至此,我们得到有关开始状态q0的全部状态转换函数只有一个,即f(q0,a)= q1。 1 2 3 4 a a a c c b ε * 编译原理 * 3)按步骤2的方法,对每个新状态计算相关的状态转换函数。 计算状态q1(2,3)的状态转换函数: q1的a弧转换集q1a=ε-closure( f({2,3},a) ) =ε-closure(2)= {2} 将{2}作为新状态, 并令q2={2} q1的b弧转换集q1b=ε-closure( f({2,3},b) ) =ε-closure(4)= {4} 将{4}作为新状态, 并令q3={4} q1的c弧转换集q1c=ε-closure(f({2,3},c))=ε-closure(3,4)={3,4} 将{3,4}作为新状态, 并令q4={3,4} 至此,得到有关开始状态q1的全部状态转换函数。 f(q1, a ) =q2 , f(q1, b ) = q3,f(q1, c) = q4 1 2 3 4 a a a c c b ε * 编译原理 * 接下来,计算状态q2、q3、q4的有关状态转换函数如下: f(q2, a ) = {2}=q2 , f(q2, b ) = {4}=q3 , f(q2,c ) = Φ f(q3,a ) = Φ , f(q3,b ) = Φ , f(q3,c ) = Φ f(q4, a ) =Φ ,f(q4, b ) =Φ,f(q4, c ) = {3,4}= q4 计算到此,不再有新状态出现。 1 2 3 4 a a a c c b ε * 编译原理 * 4)根据上面求出的各个状态确定终结状态集 Z={p| p ∩Z’≠ Φ }, 其中p为M的每个状态子集。 因为q0 ={1,4}、q1 = {2,3}、q2={2}、q3={4}、q4={3,4}, 而Z’={4}, q0、q3、q4与Z’相交不为空,所以确定终结状态集 Z= {q0, q3 , q4} * 编译原理 * 最后,我们得到确定的有穷自动机如下: DFA M= ({q0, q1 , q2, q3 , q4},{a,b,c}, f, q0 , {q0, q3 , q4}) 其中状态转换函数为: f(q0,a)= q1 f(q1,a)= q2,f(q1,b)= q3,f(q1,c)= q4 f(q2,a)= q2,f(q2,b)= q3 f(q4, c ) = q4 该转换后的自动机的状态图及状态转换矩阵如图3.14(a)、(b)所示。 * 编译原理 * q0 q1 q2 q3 q4 a a a b b c c 图3.14 (a)转换后的DFA M的状态图 ∑ 状态 c a b
文档评论(0)