【问题标题】:Deterministic finite automata - state diagram确定性有限自动机 - 状态图
【发布时间】:2013-10-19 22:35:22
【问题描述】:

如果我必须使用状态图绘制确定性有限自动机,以便接受一种语言,例如 {λ ε {a,b}*:单词 λ 包含偶数个 a 和奇数个 b} ,我怎么知道我有多少个州?

【问题讨论】:

  • 检查这个有限自动机,我已经对 DFA 中的每个状态进行了描述。将最终状态设为 Q3。
  • 是这样的吗?? Q1={奇数“a”,偶数“b”} Q2={偶数“a”,偶数“b”} Q3={偶数“a”,奇数“b”} Q4={奇数“a”,奇数“b” "} Q1Q2Q3Q4Q1 其中 Q3 是最终状态。

标签: automata


【解决方案1】:

4 个状态就足够了。您需要同时满足两个条件:偶数个 a 和奇数个 b。彼此无关,每个条件都可以是真或假。

如果我们用 1 表示 true 和用 0 表示 false,我们会得到 4 个不同的 可能性:两者都是 false,其中之一 (但不是另一个)是真的,或者他们两个都是真的。因此,我们得到了一个真值表:

even a | odd b
---------------
   0       0
   0       1
   1       0
   1       1

让我们用q[0, 0] 表示第一行,第二行用q[0, 1] 表示,以此类推。现在我们必须为每个状态指定转换,并确定我们的初始状态。

无论我们处于何种状态,都有两种可能的输入:ab。因此,对于每个状态,我们必须指定两个转换。

现在,我们的初始状态是我们在使用任何输入之前所处的状态。由于 0 是偶数,我们得到我们的初始状态是q[1, 0]。我们的接受状态是两个条件都满足时,即q[1, 1]

最后,我们有了状态转换,

q[0, 1] 是我们的初始状态

q[1, 0] reads b ->  q[1, 1]
q[1, 0] reads a ->  q[0, 0]

q[1, 1]是我们的接受状态

q[1, 1] reads b ->  q[1, 0] 
q[1, 1] reads a ->  q[0, 1]

q[0, 1] 只有当我们阅读至少一个a

时,才会达到此状态
q[0, 1] reads b ->  q[0, 0]
q[0, 1] reads a ->  q[1, 1]  

q[0, 0] 这个状态只有在我们读过至少一个a

时才会达到
q[0, 0] reads b ->  q[0, 1]
q[0, 0] reads a ->  q[1, 0]

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2011-11-22
  • 2011-04-21
  • 1970-01-01
  • 2015-01-10
  • 1970-01-01
  • 1970-01-01
  • 2013-11-29
  • 2013-04-28
相关资源
最近更新 更多