NFA转换为DFA:子集构造法


下面给出一个关于 NFA 到 DFA 转化的例子,我们使用 a(b|c)* 做例: 

        对于ε的边表示一种零代价的转换,例如,n1可以在没有任何字母(a,b,c)输入操作的情况下直接滑到n2或n3,n4,n6,

也就是说n1和n2或n3,n4,n6是等价的。

        n0在a字母输入后,可以通过 n1-n2-n3-n4(n1,n2,n3,n4之间为ε,不需要输入操作,故可依次到达)到达n4就终止,因为继续前进需要输入b

同理,还可以依次通过 n1-n12-n3-n6以及 n1-n2-n9。通过的节点构成集合q1={n1,n2,n3,n4,n6,n9}。

        q1集合中的每一个节点在输入b的情况下可以进入的所有状态节点(只有n4的输入为b,其他为ε),即n5-n8-n3-n4或n5-n8-n3-n6或n5-n8-n9,

就是集合q2={n5, n8, n9, n3, n4, n6 },继续重复该步骤,得到所有的子集。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM