📅  最后修改于: 2020-12-17 06:51:06             🧑  作者: Mango
为过渡表设计NFA,如下所示:
Present State | 0 | 1 |
---|---|---|
→q0 | q0, q1 | q0, q2 |
q1 | q3 | ε |
q2 | q2, q3 | q3 |
→q3 | q3 | q3 |
解:
可以通过使用表中给出的映射函数来绘制过渡图。
这里,
δ(q0, 0) = {q0, q1}
δ(q0, 1) = {q0, q2}
Then, δ(q1, 0) = {q3}
Then, δ(q2, 0) = {q2, q3}
δ(q2, 1) = {q3}
Then, δ(q3, 0) = {q3}
δ(q3, 1) = {q3}
设计一个∑ = {0,1}的NFA可以接受所有以01结尾的字符串。
解:
因此,NFA为:
设计一个∑ = {0,1}的NFA,其中双“ 1”后跟双“ 0”。
解:
带有双1的FA如下:
它应该紧随其后的是双0。
然后,
现在在double 1之前可以有0和1的任何字符串。类似地,在double 0之后,可以有0和1的任何字符串。
因此,NFA变为:
现在考虑字符串01100011
q0 → q1 → q2 → q3 → q4 → q4 → q4 → q4
设计一个NFA,其中所有字符串都包含一个子字符串1110。
解:
该语言由包含子字符串1010的所有字符串组成。部分转换图可以是:
现在1010可能是子字符串。因此,我们将添加输入0和1,以便可以维护语言的子字符串1010。因此,NFA变为:
上面的过渡图的过渡表如下:
Present State | 0 | 1 |
---|---|---|
→q1 | q1 | q1, q2 |
q2 | q3 | |
q3 | q4 | |
q4 | q5 | |
*q5 | q5 | q5 |
考虑字符串111010,
δ(q1, 111010) = δ(q1, 1100)
= δ(q1, 100)
= δ(q2, 00)
卡着了!因为从q2到输入符号0都没有路径。我们可以用另一种方式处理字符串111010。
δ(q1, 111010) = δ(q2, 1100)
= δ(q3, 100)
= δ(q4, 00)
= δ(q5, 0)
= δ(q5, ε)
由于状态q5是接受状态。我们得到了完整的扫描,并达到了最终状态。
设计一个∑ = {0,1}的NFA,可以接受所有从右端起第三个符号始终为0的字符串。
解:
因此,我们从右端得到的第三个符号始终为“ 0”。 NFA可以是:
上面的图片是NFA,因为在状态q0和输入0下,我们可以进入状态q0或q1。