答案 0 :(得分:2)
假设B是最终状态,它甚至可以接受长度为1的字符串。这就是为什么。再添加一个状态来标记长度2,它应该很好。
A 0,1 B 0,1(C)0,1 D
()-接受状态
还要通过添加D来确保长度超过3的任何内容都将成为非终端状态。
答案 1 :(得分:1)
这是您想要的DFA:
这样,如果第二个输入符号之后还有另一个输入符号-您从C转到D,并且永远无法回到接受状态。
顺便说一句,也许更重要的是-我自己没有画这张图。我使用了graphviz,这是一个不错的工具,可用于可视化DFA。代码是:
digraph G {
node [shape="circle"];
Start [shape="none" label=""];
C [shape="doublecircle"];
Start -> A;
A -> B [label="0,1"];
B -> C [label="0,1"];
C -> D [label="0,1"];
D -> D [label="0,1"];
}
甚至还有在线渲染器,例如this one。
“开始”节点是一种使箭头指向DFA初始状态的方法(这就是为什么尽管有4种状态,但图像仍以B为中心)的原因。