【问题标题】:PDA question > need helpPDA 问题 > 需要帮助
【发布时间】:2011-03-25 16:06:56
【问题描述】:

我的任务是构建识别语言 A= {a^m b^n | 的 PDA。 m > n} with ∑ = {a, b}..我有点困惑怎么做..你们能帮我解决这个问题吗?谢谢

【问题讨论】:

  • 家庭作业?请说明您是如何尝试解决问题的以及您遇到的问题。
  • 你好 Jouni,谢谢你的回复..其实这是我老师的作业..她让我回答这个问题,但我不知道如何回答这个..因为她没有解释清楚这一章..

标签: computer-science automata


【解决方案1】:

在 Wikipedia 页面上查看此 example 以了解下推自动机:它用于语言 { 0n1n  | n ≥ 0 },即一些数量的零后跟相同数量的一。这与您的任务不完全相同,但相似。你能根据你的课程材料理解描述吗?您将如何修改它以识别您需要的语言?

【讨论】:

  • 这一章我不是很明白。。@@老师只解释了很短的时间。我想我需要更多地了解 PDA。
【解决方案2】:

我们不要直接跳到为这个问题设计一个 PDA,而是先试着理解这个问题。

可以从给定语言生成的可能字符串有哪些。
那么可以有无限的这样的字符串,例如 -

  1. aab
  2. aaab
  3. aaa...b
  4. aaaa..bb

这个想法是确保 a 的数量总是大于 b 的数量,或者我们可以说一个字符串中的 b 的数量永远不应超过 PDA 接受的字符串中的 a 的数量。

所以现在我们有一个问题。

如何确保 a 的数量大于 b 的数量

对于一个字符串,如果我们开始取消字符串中每个 'b' 的 a's
我们将得到以下结论

  1. a 的数量等于 b 的数量 - 取消后什么都没有了
  2. b 的数量大于 a 的数量 - 取消后我们只剩下几个 b
  3. a 的数量大于 b 的数量 - 取消后我们只剩下几个 a

如果我们尝试在“问题”和上面的那些点之间建立关系,我们观察到属于上面第 3 点的字符串是 PDA 可以接受的字符串。

现在让我们如下定义我们的 PDA

P = ({q0,q1,qf}, {a,b}, δ, {a,b,Z0}, q0, Z0, {qf})

过渡函数(δ):

δ(q0, a, Z0) = (q0,aZ0)  
δ(q0, a, a) = (q0, aa)  
δ(q0, b, a) = (q1, Λ)  
δ(q1, b, a) = (q1, Λ) 
δ(q1, Λ, a) = (qf, Z0) 
δ(q1, b, Z0) = (q2, Z0)  
δ(q1, Λ, Z0) = (q2, Z0)

解释:

  1. 我们最初将 a 存储在堆栈中(q0 状态)
  2. 当遇到第一个 b 时,我们从堆栈中弹出 a 并将状态更改为 q1
  3. 我们继续从堆栈中弹出 a
  4. 如果没有 b 可以从堆栈中弹出 a,我们将状态更改为 qf 以指示字符串接受。 (第 3 点)
  5. 如果剩下的 b 很少,但没有从堆栈中弹出的 a,我们将状态从 q1 更改为 q2(Trap)。 (第 2 点)
  6. 如果堆栈中既没有 a 被弹出,b 也没有留在输入字符串中,我们再次将状态从 q1 更改为 q2(Trap)。 (第 1 点)

【讨论】:

    猜你喜欢
    • 2014-09-12
    • 1970-01-01
    • 2011-05-22
    • 2011-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    相关资源
    最近更新 更多