无法从NFA转换为DFA


11

我有一个简单的问题,就是假设给定是DFA的字母集,那么制作一个DFA就能接受所有以双字母(aa,bb)开头或以双字母(aa,bb)结尾的输入。给定的语言。Σ={一种b}

我试图通过以下方法来解决此问题:

  1. 生成正则表达式
  2. 制作相应的NFA
  3. 使用Powerset构造来推导DFA
  4. 最小化DFA中的状态数

第1步: 给定问题的正则表达式为(除其他之外):

((aa|bb)(a|b)*)|((a|b)(a|b)*(aa|bb))

步骤2: 给定表达式的NFA为:

NFA
(来源:livefilestore.com

在表格形式中,NFA为:

State    Input:a     Input:b
->1        2,5         3,5
  2        4           -
  3        -           4
 (4)       4           4
  5        5,7         5,6
  6        -           8
  7        8           -
 (8)       -           -

第3步:使用Powerset结构转换为DFA:

Symbol, State       +   Symbol, State (Input:a) +   Symbol, State (Input:b)
   ->A, {1}         |        B, {2,5}           |        C, {3,5}
     B, {2,5}       |        D, {4,5,7}         |        E, {5,6}
     C, {3,5}       |        F, {5,7}           |        G, {4,5,6}
   (D), {4,5,7}     |        H, {4,5,7,8}       |        G, {4,5,6}
     E, {5,6}       |        F, {5,7}           |        I, {5,6,8}
     F, {5,7}       |        J, {5,7,8}         |        E, {5,6}
   (G), {4,5,6}     |        D, {4,5,7}         |        K, {4,5,6,8}
   (H), {4,5,7,8}   |        H, {4,5,7,8}       |        G, {4,5,6}
   (I), {5,6,8}     |        F, {5,7}           |        I, {5,6,8}
   (J), {5,7,8}     |        J, {5,7,8}         |        E, {5,6}
   (K), {4,5,6,8}   +        D, {4,5,7}         +        K, {4,5,6,8}

步骤4:最小化DFA:

我先更改了K-> G,J-> F,I-> E。在下一次迭代中,H-> D和E-> F。因此,最终表为:

  State    +   Input:a     +   Input:b
   ->A     |      B        |      C
     B     |      D        |      E
     C     |      E        |      D
    (D)    |      D        |      D
    (E)    |      E        |      E

从图表上看,它看起来像:

最终DFA
(来源:livefilestore.com

...这不是必需的DFA!我对结果进行了三重检查。那么,我哪里出错了?

注意:

  • -> =初始状态
  • ()=最终状态

3
这是已经提出的基本问题的一个很好的例子,因为您包括了整个思路。
拉斐尔

非常感谢,谢谢!^^
Anurag Kalia

Answers:


5

您可以执行第3步(DFA),但是最小化是不正确的。

显然,最小化的DFA是不正确的,因为输入baab(不是原始语言,也不在步骤3中被DFA接受)都会导致最终状态E

查看最小化步骤,看来您具有统一的最终状态和非最终状态;例如J(最终)-> F(不是最终),而I(最终)-> E(不是最终)。将最终状态与非最终状态合并会更改自动机接受的语言,从而导致接受上述不正确的字符串。


1
哦。因此,这就是在这里造成问题的原因。现在,我记得,上一次使用此方法时,表中根本没有任何特定的接受状态!
Anurag Kalia
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.