📌  相关文章
📜  至少有两个 0 和至少两个 1 的字符串的DFA

📅  最后修改于: 2021-09-27 22:54:38             🧑  作者: Mango

问题 –绘制具有至少两个 0 和至少两个 1 的字符串的确定性有限自动机 (DFA)。

阅读这个问题后,我们想到的第一件事就是计算 1 和 0 的数量。此后,如果它们都至少为 2,则接受字符串,否则不接受。但是我们在 DFA 中没有任何内存概念,所以我们不能通过这种方法来做到这一点。

Input  : 1 0 1 1 0 0
Output : Accepted

Input  : 1 1 1 0 1 
Output : Not accepted

使用的方法 –
我们观察到的第一件事是 0 和 1 都应至少为 2。如果其中任何一个小于 2,则字符串将不被接受。在这个字符串,只有在 0 和 1 都至少为 2 的最后一种情况下才会被接受。

State Count of 0 Count of 1
Q0 0 0
Q1 0 1
Q2 0 >=2
Q3 1 0
Q4 1 1
Q5 1 >=2
Q6 >=2 0
Q7 >=2 1
Q8 ACCEPTED >=2 >=2

最初 0 和 1 的计数都为零,我们处于状态 Q0。

  • 步骤 1:如果输入为 1,则 1 的计数增加到 1。转到状态 Q1
    如果输入为 0,则 0 的计数增加到 1。转到状态 Q3
  • 步骤 2:如果输入为 1,则 1 的计数增加到 2。转到状态 Q2
    如果输入为 0,则 0 的计数增加到 1。转到状态 Q4
  • 第 3 步:如果输入为 1,则 1 的计数继续增加 1。保持相同状态
    如果输入为 0,则 0 的计数增加到 1。转到状态 Q5
  • 步骤 4:如果输入为 1,则 1 的计数增加到 1。转到状态 Q4
    如果输入为 0,则 0 的计数增加到 2。转到状态 Q6
  • 步骤 5:如果输入为 1,则 1 的计数增加到 2。转到状态 Q5
    如果输入为 0,则 0 的计数增加到 2。转到状态 Q7
  • 第 6 步:如果输入为 1,则 1 的计数继续增加 1。保持相同状态。
    如果输入为 0,则 0 的计数增加到 2。转到状态 Q8
  • 步骤 7:如果输入为 1,则 1 的计数增加到 1。转到状态 Q7
    如果输入为 0,则 0 的计数继续增加 1。保持相同状态。
  • 步骤 8:如果输入为 1,则 1 的计数增加到 2。转到状态 Q8
    如果输入为 0,则 0 的计数继续增加 1。保持相同状态。
  • 步骤 9:如果输入为 1,则 1 的计数继续增加 1。保持相同状态。
    如果输入为 0,则 0 的计数继续增加 1。保持相同状态。
    如果字符串完成则接受