下面给出一个关于 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 },继续重复该步骤,得到所有的子集。