【发布时间】:2015-04-14 19:48:45
【问题描述】:
我刚参加了期中考试,但无法回答这个问题。
我们怎样才能表明下面的语言是模棱两可的?
L={a n bm c p : n≠m} U {a n bm c p : m≠p}
我认为这很难,谁能帮助我使用自动化工具或......我们如何证明它?
【问题讨论】:
标签: grammar context-free-grammar computation-theory context-free-language
我刚参加了期中考试,但无法回答这个问题。
我们怎样才能表明下面的语言是模棱两可的?
L={a n bm c p : n≠m} U {a n bm c p : m≠p}
我认为这很难,谁能帮助我使用自动化工具或......我们如何证明它?
【问题讨论】:
标签: grammar context-free-grammar computation-theory context-free-language
考虑语言{a<sup>n</sup>b<sup>m</sup>c<sup>p</sup> : n≠m} 的一种可能语法:
S → A X C | X B C
X → ε | a X b
A → a | a A
B → b | B b
C → ε | C c
在这个语法中,任何单词的最左边的派生词都不会扩展,C 直到所有其他非终结符都被扩展。联合的另一半的语法非常相似(a<sup>n</sup>b<sup>m</sup>c<sup>p</sup> : m≠p} 将在扩展任何其他非终结符之前类似地扩展所有 As。因此,两个子集的交集中的任何单词都将具有(至少)两个不同的推导。
证明该语言本质上是模棱两可的,需要证明上述对于该语言的任何语法都是正确的。这样的证明有效地基于 Ogden 引理,它是上下文无关语言的泵引理的推广;证明包括证明可以通过两种不同的方式“抽取”某个词。
比较容易找到相似语言的证明
{a<sup>n</sup>b<sup>m</sup>c<sup>p</sup> : n=m} ∪ {a<sup>n</sup>b<sup>m</sup>c<sup>p</sup> : m=p} 本质上是模棱两可的:它经常被用作形式语言理论教科书中的示例。我认为您的语言的证明“更难”,因为它可能需要考虑更多案例,但应该非常相似。
另一种方法是 Flajolet 的分析方法。
【讨论】: