【问题标题】:Proof through Number of Derivation Steps通过推导步骤数证明
【发布时间】:2015-01-05 22:44:32
【问题描述】:

鉴于 G = {a, b, c, d}, {S, X, Y}, S, {S->XY, X->aXb, X->ab, Y->cYd, Y->cY, Y- >cd}}

证明|w|c-|w|d+|w|a≥|w|b

|w|a 是字符串中有多少个 'a。这是有道理的,'c' 将比 'd' 多(或相同数量),因为没有生产规则可以在不生成 c 的情况下生成 d,而在不使用 Y->cY 的情况下生成 'c'。我需要使用推导步骤数的归纳来正式证明这一点,并且整天都在尝试。任何帮助表示赞赏。

【问题讨论】:

  • 也许这个问题更适合CS Theory
  • 谢谢。我不知道堆栈交换的这一部分。我会在那里转发
  • @LasseV.Karlsen 不,CS 理论仅适用于研究级别的问题(并且他们强烈要求这样做)。不过有CS.SE
  • 这个问题似乎离题了,因为它是关于计算机科学的,没有直接应用于编程。可以在Computer Science询问。

标签: theory proof automata formal-languages induction


【解决方案1】:

我们将使用这个语法

S -> XY
X -> aXb
X -> ab
Y -> cYd
Y -> cY
Y -> cd

并且显示语言的语法有|w|c - |w|d + |w|a ≥ |w|b。证明是对产生式X -> aXbY -> cYdY -> cY 的应用数量进行归纳。

基本情况:只有一个字符串没有调用这些产生式,即abcd,它满足|w|c - |w|d + |w|a >= |w|b,因为1 - 1 + 1 >= 1

归纳假设:假设该声明适用于使用上面给出的三个产生式之一(包括 k 应用程序)派生的所有字符串。

归纳步骤:我们表明该声明适用于由 k+1 应用程序派生的字符串。由于我们的每个产生式在 LHS 和 RHS 中都有相同类型和数量的非终结符,并且由于 RHS 在所有情况下也包含终端,因此在派生的语言中存在一个较短的字符串,这些产生式的应用至少少了一个。根据假设,较短的字符串具有|w|c - |w|d + |w|a >= |w|b。对于我们的字符串,分三种情况:

  1. X -> aXb 是应用的 k+1st 产品。这会将 |w|a|w|b 增加 1,我们已经确定了 |w|c - |w|d + |w|a + 1 >= |w|b + 1 iff |w|c - |w|d + |w|a >= |w|b
  2. Y -> cYd 是应用的k+1st 产品。这将 |w|c|w|d 增加 1,我们有 |w|c + 1 - (|w|d + 1) + |w|a >= |w|b 持有 iff |w|c - |w|d + |w|a >= |w|b,我们已经确定了。
  3. Y -> cY 是应用的k+1st 产品。这将 |w|c 增加 1,得到 |w|c + 1 - |w|d + |w|a >= |w|b,因为 |w|c + 1 - |w|d + |w|a > |w|c - |w|d + |w|a >= |w|b 是正确的。

k+1st 产生式选择的三种可能情况中,k+1 产生式中派生的字符串保持该属性。通过归纳,该属性适用于这些产生式的所有应用程序n

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-27
    • 1970-01-01
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    • 1970-01-01
    • 2018-11-06
    • 2014-10-15
    相关资源
    最近更新 更多