请你注意这个结论:DFA是NFA的特例 对每个NFA N一定存在一个DFA M,使得L(M)=L(N)。对每个NFA N存在着与之等价的DFA M。与某一NFA等价的DFA不唯一。 在有穷自动机的理论里,有这样的定理:设L为一个由不确定的有穷自动机接受的集合,则存在一个接受L的确定的有穷自动机。我们不对定理进行证明,只介绍一种算法(这种算法称为子集法),将NFA转换成接受同样的语言的DFA。 为什麽对DFA如此亲睐呢?因为它的行为很容易用程序来模拟。 DFA M=(K,Σ,f,S,Z)的行为的模拟程序
为介绍算法首先定义对状态集合I的几个有关运算: 1. 状态集合I的ε-闭包,表示为ε-closure(I),定义为一状态集,是状态集I中的任何状态S经任意条ε弧而能到达的状态的集合。 回顾在前面章节对转换函数的扩充:如输入字符是空串,则自动机仍停留在原来的状态上,显然,状态集合I的任何状态S都属于ε-closure(I)。 2. 状态集合I的a弧转换,表示为move(I,a),定义为状态集合J,其中J是所有那些可从I中的某一状态经过一条a弧而到达的状态的全体。 我们使用图4.4的NFA N的状态集合来理解上述两个运算。 |