设计一个识别至少包含两个 0 和至少包含两个 1 的字符串的 DFA


确定性有限自动机 (DFA) 是一个 5 元组

M=(Q, Σ, δ,q0,F)

其中,

  • Q:称为状态的有限集合。
  • Σ:称为字母表的有限集合。
  • δ:Q × Σ → Q 是转移函数。
  • q0 ϵ Q 是起始状态或初始状态。
  • F:终止状态或接受状态。

问题

构造一个识别至少包含两个 0 和至少包含两个 1 的字符串的 DFA。

解决方案

基于给定条件在字母表 Σ ={0,1} 上生成的语言是 -

L={0011,001011,0001010,0011001,010101,……}

给定的语言接受至少两个 0,意味着它可以接受两个或两个以上的 0,并且至少两个 1,意味着它接受两个或两个以上的 1。

假设,

  • 输入 - 00010
  • 输出 - 字符串被拒绝

因为,给定的输入不包含至少两个 1。

即使它至少包含两个 0,它也不会接受该字符串。

为了接受字符串,两个条件都必须满足,如果其中一个不满足,则该字符串将不会被机器接受。

  • 输入 - 001001001
  • 输出 - 字符串被接受

现在为给定的输入构造 DFA -

状态0 的数量1 的数量
→ q000
q101
q20> =2
q310
q411
q51> =2
q6> =20
q7> =21
*q8> =2> =2

DFA 将如下所示 -

解释

如果输入是 1,则 1 的数量增加到 1。转移到状态 q1。如果输入是 0,则 0 的数量增加到 1。转移到状态 q3。

如果输入是 1,则 1 的数量增加到 2。转移到状态 q2。如果输入是 0,则 0 的数量增加到 1。转移到状态 q4。

如果输入是 1,则 1 的数量始终增加 1。然后保持在同一状态。如果输入是 0,则 0 的数量增加到 1。转移到状态 q5。

如果输入是 1,则 1 的数量增加到 1。转移到状态 q4。如果输入是 0,则 0 的数量增加到 2。转移到状态 q6。

如果输入是 1,则 1 的数量增加到 2。转移到状态 q5。如果输入是 0,则 0 的数量增加到 2。转移到状态 q7。

如果输入是 1,则 1 的数量始终增加 1。然后保持在同一状态。如果输入是 0,则 0 的数量增加到 2。转移到状态 q8

如果输入是 1,则 1 的数量增加到 1。转移到状态 q7。如果输入是 0,则 0 的数量持续增加 1。然后保持在同一状态。

如果输入是 1,则 1 的数量增加到 2。转移到状态 q8。如果输入是 0,则 0 的数量持续增加 1。然后保持在同一状态。

如果输入是 1,则 1 的数量始终增加 1。然后保持在同一状态。如果输入是 0,则 0 的数量持续增加 1。然后保持在同一状态。

最后,如果字符串结束,则它被接受。

更新于: 2021年6月15日

3K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告