将NFA转换为DFA

时间:2013-02-13 09:14:06

标签: automata nfa

NFA http://i48.tinypic.com/2lwof1z.png

我无法理解如何转换。

如果2得到'a'的输入会因为空字符串而变为(1,4)或(1,2,4)吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

如果状态Q2获得“a”输入,则下一个状态可以是Q1Q2,0r Q4

在您的NFA中,您的最终状态为Q4

其等效DFA如下:

                 a-  
                 ||
                 ▼|
--►(Q0)---a---►((Q1))---b----►((Qf))  
                 ▲-----a--------| 

Q1Q2是最终状态。

其正则表达式为:a (a + ba)* (b + ε )

ε为空符号(epsilon)

答案 1 :(得分:0)

我们开始将NFA转换为DFA并识别空输入闭包集(从这里开始,我将用L-closure表示空输入闭包)。
    L(1)=(1,2)我们可以在空输入时从1开始访问2     L(2)=(2)2中没有空输入边。
    L(3)=(3)3中没有空输入边。
    L(4)=(1,2,4)我们可以从1和4中从1开始访问1.

  

如果2得到'a'的输入,它将变为(1,4)或(1,2,4)因为   空字符串?

如果2得到'a'的输入,它将变为L(1)UL(4)=(1,2,4)。

由于我们的起始节点在NFA中为1,因此在DFA中它将是L(1),即(1,2)。

T((1,2),a)=L(1)UL(3)UL(4)=(1,2,3,4)  
T((1,2),b)=F  
T((1,2,3,4),a)=L(1)UL(3)UL(4)=(1,2,3,4)  
T((1,2,3,4),b)=L(4)=(1,2,4)  
T((1,2,4),a)=L(1)UL(3)UL(4)=(1,2,3,4)  
T((1,2,4),b)=F  

由于4是NFA中的接受节点,因此在包含4的DFA节点中将接受节点,即(1,2,3,4)和(1,2,4)。