我们可以将非确定性有限自动机转换为确定性有限自动机吗?

是的,我们可以将 NFA 转换为 DFA。对于每个 NFA,都存在一个等效的 DFA。等效性是根据语言接受度来定义的。由于 NFA 只不过是一个有限自动机,其中允许输入符号上的一个或多个转换为零。它总是可以构造有限自动机,并行模拟特定输入符号上 DFA 的所有移动,然后得到一个有限自动机,其中每个输入符号上都会有一个转换。这里,对应于一个NFA,存在一个DFA。要构造等价于 NFA 的 DFA,应该记住 DFA 的状态是 NFA 状态的集合。

算法 NFA – 到 – DFA

输入- NFA 具有一组状态 N = {n 0 ,n 1 ……n n },起始状态为 n 0

输出- DFA,状态集 D′={d 0 ,d 1 ,d 2 ……d n },起始状态为 d 0

d 0 =ε−闭包 (n 0 )

D′={d 0 }

设置 d 0未标记

while there is an unmarked state d in D′. {

   set d marked {

      For each input symbol 'a' {

         Let T be a set of states in NFA to which there is a transition on 'a' from some state ni in d d′=ε−closure (T).

         If d′ is not already present in D′ {

            D′=D′∪{d′}

            Add transition d→d′,labeled 'a'

            set d′ unmarked

         }

      }

   }

}

示例- 为以下 LEX 程序设计词法分析器。

AUXILIARY DEFINITION S

letter = A|B|C|…….|Z

digit = 0 |1|2|………|9

TRANSLATION RULES

begin    {return 1}

end      {return 2}

If       {return 3}

then     {return 4}

else     {return 5}

letter  (letter+digit)* {value=Install ( );return 6}

digit + {value=Install ( );return 7}

<      {value=1;return 8}

<=     {value=2;return 8}

=      {value=3;return 8}

< >    {value=4;return 8}

>      {value=5;return 8}

>=     {value=6;return 8}

解决方案

  • 各种模式的组合 NFA 将是

  • Convert NFA to DFA - 相应的 DFA 将是。

状态{0, 1, 7, 11, 14, 19, 24, 26, 28, 30, 33, 35, 38, 40}组合起来命名为q0,构成DFA的起始状态。

在组合 NFA 中,从状态 1 到状态 2 和从状态 24 到 25 的转换是相同的,因为输入“b”是一个字母。

状态 2、25 合并。类似地,其他状态被组合。

状态 29、31 和 36 被合并,因为它们都在获得输入“<”后到达。

类似地,其他状态被组合。

以上是 我们可以将非确定性有限自动机转换为确定性有限自动机吗? 的全部内容, 来源链接: utcz.com/z/363286.html

回到顶部