让我试试这个:
Node 0:
a -> node 1 <-- This means, "if the next character is a, then go to node 1"
b -> node 0
END -> error
Node 1:
a -> node 1
b -> node 2
END -> error
Node 2:
a -> node 1
b -> node 3
END -> error
Node 3:
a -> node 4
b -> node 0
END -> error
Node 4:
END -> Success!
a -> node 1
b -> node 0
我相信应该这样做。每个节点都有 3 个可能的箭头,用于 a、b 或字符串结尾 (END)。作为“abbaEND”一部分的每个输入都会导致下一个节点并最终成功,并且不属于“abbaEND”的每个输入都会将您带回适当的节点。基本上,如果它是 a,它会将其视为另一个“abba”块的开始,如果它是 ab,则假定“abba”接下来会出现。提前结束是失败的。那应该是您的 DFA 地图。
因此,使用 a 和 b 的任何字符串作为输入......这个 DFA 应该只以 Success 结尾!如果字符串以“abba”结尾,并且对于任何其他字符串都应该以错误结尾。