为什么不接受此DFA?

时间:2020-08-07 22:46:07

标签: dfa

因此,我应该构造一个DFA,该DFA接受长度为2的{0,1}上所有字符串的集合。

所以sigma = {0,1}

L = {00,01,10,11}

我最初尝试的是:

为什么错了?

enter image description here

2 个答案:

答案 0 :(得分:2)

假设B是最终状态,它甚至可以接受长度为1的字符串。这就是为什么。再添加一个状态来标记长度2,它应该很好。

A 0,1 B 0,1(C)0,1 D

()-接受状态

还要通过添加D来确保长度超过3的任何内容都将成为非终端状态。

答案 1 :(得分:1)

这是您想要的DFA:

enter image description here

这样,如果第二个输入符号之后还有另一个输入符号-您从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为中心)的原因。