【问题标题】:PDA to accept a language of strings containing more a's than b'sPDA 接受包含 a 多于 b 的字符串语言
【发布时间】:2012-03-29 17:06:59
【问题描述】:

制作一个 PDA 来识别以下语言:a 多于 b 的字符串语言

我这几天一直在为这个问题苦苦挣扎,我似乎已经完全陷入了精神障碍。谁能提供一些指导或指导我如何解决这个问题?

【问题讨论】:

    标签: automata formal-languages pushdown-automaton


    【解决方案1】:

    PDA 可以解决“a 多于 b”的问题。

    你所要做的就是:

    • 当输入为a且堆栈为空或顶部有a时,将a压入堆栈;弹出b,如果b 是顶部。

    • 当输入为b且堆栈为空或顶部有b时,将b压入堆栈;弹出a,如果a 在顶部。

    • 最后,当字符串完成时,如果a 位于堆栈顶部,则以空输入进入最终状态。否则,a 的数量不会多于 b 的数量。

    【讨论】:

      【解决方案2】:

      对于as和bs个数的问题,我想出了一个更通用的解决方案,见下图:

      其中 a > b 比 bs 意味着更多,a

      Z表示栈底,A/B为栈符号。

      我对此感到很兴奋,因为这款 PDA 将 3 个不同的状态分开。在您的问题中,您可以将 a > b 状态设置为最终状态,并将 a = b 设置为开始状态。

      如果您想更进一步,您可以使用此 PDA 轻松生成 a >= b、a - b >= 1、2

      【讨论】:

        【解决方案3】:

        我假设您的意思是a^nb^m 形式的字符串,其中n>m

        这个想法相对简单,对于a,你将它压入堆栈(在一个循环中),对于b,你切换到一个单独的循环以从堆栈中弹出a。如果堆栈是空的,你放弃失败。如果在第一个循环中得到ab 以外的任何内容,或者在第二个循环中得到b 以外的任何内容,则放弃失败。

        最后,您尝试弹出另一个a,如果堆栈为空,您将放弃失败(即,您在堆栈上的b 至少与a 一样多,可能更多)。如果没有,成功。

        编辑:作为旁注,我不相信这是解决这个问题的正确网站,可能对程序员更好。不确定,所以不投票结束。

        【讨论】:

        • 如果 b 前面有更多 a 并且字符串以 a 结尾,则您的建议有效。但是,当字符串以 'b' 结尾或字符串在 'a' 前面有 'b' 时,它会失败,例如 bbbaaaa 会失败,baaaaaab 也会失败 有什么建议吗?
        • 确实如此,是的,但是现在该语言不再是 CFG 了吗?
        • 感谢您的帮助,还有一个问题。对于这个问题,PDA 将接受哪些字符串变体,以及它将拒绝哪些字符串变体。我假设它可以接受 a 和 b 的任何变化,只要字符串中的 a 比 b 多。谢谢
        • 你告诉我,这是你的问题......不过,对于一个 CFG,要进行计数,你需要在 ab 之间明确区分(或者如果你会像abbaa一样,你会在第三个字符上堆积下溢,你不知道你是否有足够的a来)。
        【解决方案4】:

        PDA 接受的 a 多于 b

        【讨论】:

          【解决方案5】:

          交易的基本信息如下图所示。

          这是完整的交易。

          其中є等于NULL。 $ 符号在字符串的开头被压入堆栈并在末尾弹出以确定字符串已被完全读取并现在结束。 qo 是开始状态,q5 是最终状态

          它是非确定性下推自动机(NPDA)。因此由于 NPDA,拒绝字符串的交易不会显示在其中。

          【讨论】:

          • 如果字符串中的第一个符号是b,会发生什么?这不接受b^ia^j 形式的字符串,其中i < j。我错过了什么吗?
          • 根据上面的评论,如果输入是 b,这不会处理这种情况。
          猜你喜欢
          • 2019-03-15
          • 2017-09-04
          • 2021-08-19
          • 2014-11-06
          • 2015-04-08
          • 2020-08-24
          • 2014-03-23
          • 1970-01-01
          相关资源
          最近更新 更多