编译原理-DFA与NFA的等价性
DFA与NFA的等价性 DFA与NFA的等价性,使得L(M)=L(M’) NFA 和DFA的差别 状态 NFA DFA 初始状态 不唯一 唯一 弧上的标记 字(单字符字、ε) 字符 转换关系 非确定 确定 DFA与NFA的等价性证明 假定NFA M=<S, Σ, δ, S 0 , F>,我们对M的状态转换图进行以下改造: 引进新的初态结点X和终态结点Y,X,Y∉S,从X到S 0中任意状态结点连一条ε箭弧, 从F中任意状态结点连一条ε箭弧到Y。(解决初始状态唯一性) 对M的状态转换图进一步施行替换,其中k是新引入的状态。(简化弧上的标记) 然后下面是NFA转换前后的状态 总来时就是两步走,第一步加入唯一的初态,第二步就是引入中间节点,将弧上的标记拆分成单字符 DFA与NFA的等价性证明 NFA确定化--子集法(解决ε弧和转换关系) 设I是的状态集的一个子集,定义I的ε-闭包ε-closure(I)为: 若s∈I,则s∈ε-closure(I); 若s∈I,则从s出发经过任意条ε弧而能到达的任何状态s’都属于ε-closure(I) 即,ε-closure(I)=I∪{s’|从某个s∈I出发经过任意条ε弧能到达s’} 设a是Σ中的一个字符,定义 I a = ε-closure(J) 其中,J为I中的某个状态出发经过一条a弧而到达的状态集合。 转换过程 确定化:不失一般性