这是NFA:
以下是我为DFA创建的两个表,然后尝试了与DFA等效的表:
问题在于它不能解释epsilon,因为当有epsilon箭头时,我不知道如何转换。
答案 0 :(得分:1)
这是epsilon-NFA,只需将epsilon-NFA转换为等效的NFA,而无需epsilon过渡。制作表格,就像将NFA转换为DFA一样,不仅要检查输入与该状态的关系,还应首先检查epsilon转换的状态,然后再检查输入,然后再使用epsilon转换(这称为epsilon-closure)。这样,您将获得输入将达到的状态集。您唯一需要做的就是使用epsilon过渡作为最终状态来标记可以达到最终状态的任何状态。然后,您可以构建没有ε过渡的NFA,然后可以使用您的知识将其转换为DFA。只是一个例子;在您的表中,您显示B的输入0有一个空集,但实际上它可以将epsilon转换为C并在那里取一个0,因此它实际上不是一个空集。
答案 1 :(得分:1)
要说明epsilon过渡,可以在读取下一个符号前后进行任意数量的epsilon过渡。因此,您不仅要考虑在阅读符号0
时可以去的地方(例如),而且还要考虑在进行ε* 0 ε*
之前和之后的epsilon过渡时可以去的地方。 / p>
这意味着,当您从状态{A}
开始并读取符号0
时,您可以进入以下状态:
A --0--> B
A --0--> B --ε--> C
A --0--> C
A --ε--> B --ε--> C --0--> C
要阅读符号1
,可以进入以下状态:
A --1--> A
A --1--> A --ε--> B
A --1--> A --ε--> B --ε--> C
A --ε--> B --1--> B
A --ε--> B --1--> B --ε--> C
A --ε--> B --ε--> C --1--> C
因此,在生成的DFA中,过渡将如下所示:
+-------+---------+---------+
| state | 0 | 1 |
+-------+---------+---------+
| {A} | {B,C} | {A,B,C} |
+-------+---------+---------+