【问题标题】:Pumping lemma to show that `{a^n b^m | n=km for k in N}` is not regular抽引理表明 `{a^n b^m | n=km for k in N}` 不规则
【发布时间】:2015-01-05 11:31:44
【问题描述】:

我应该如何使用抽水引理证明L={a^n b^m | n=km for k in N} 不是常规语言?

我从Lw=a^n b^mn=km 中的一些k 中的k 开始。 w 有三种可能的分解方式:

  1. a^i * a^j * a^(n-i-j) b^m
  2. a^i * a^(n-i) b^j * b^(m-j)
  3. a^n b^i * b^j * b^(m-i-j)

在第2)点抽中间部分会导致混词,这显然不是L,但我不明白为什么1)不能给你一个很好的分解:

假设你抽了a^jx 次。那么新单词中a的数量将是i+xj+n-i-j = n+(x-1)j。我们知道n=km 有一些m。我们必须证明存在一个x,使得新词不在L 中。但是让我们假设j=m(这当然是可能的,因为n=km 总是有足够数量的a,除非k=0,但是我们得到了一个微不足道的情况)。然后是n+(x-1)j = km+(x-1)m = m(n+x-1),其形式为{a^n b^m | n=km for k in N},适用于所有x。所以对于每个w,我们有一个分解uvz,这样u v^i z就在L中,对于所有i。因此,根据抽水引理,L 是正则的。

我错过了什么?

编辑:给出的 Pumping 引理的公式:

L 成为具有k 状态的DFA 接受的常规语言。让wL 中长度为>= k 的任何单词。那么w 可以写成u v z|uv| <=kv>0u v^i zL 对于所有i>=0

【问题讨论】:

    标签: regular-language finite-automata dfa pumping-lemma


    【解决方案1】:

    可能更简单的证明方法是首先修改语言。

    因为正则语言在补码和与另一个正则表达式的交集下封闭

    这意味着您可以通过证明complement(L) 不是常规语言来证明L 不是常规语言,因为如果L' 是常规语言,则L 是常规语言,反之亦然。交叉路口也是如此。

    证明 L' 也不是正则就足够了:

    L' = intersection(complement(L),a*b*})
    

    这样

    L'={a^nb^m|n != k*m, for any k in N}
    

    然后证明变得更容易了,因为您可以显示您用作抽水引理的任何部分,如果它的长度为l,您可以抽水足够多次以达到倍数。

    【讨论】:

    • 好吧,我明白这证明了这一点,尽管在我的课程中从未提到过补码下的闭包。但是为了我对泵引理及其应用的理解,我也想知道我在自己的证明中哪里出错了,因为我找不到缺陷
    • 好吧,你说你拿一个词a^nb^m让你自己很难,你应该拿一个词大于或等于抽水长度p。因此,例如a^pb^p 是一个很好的候选者。
    • 但是当抽a^p x 次时,分解- * a^p * b^p 仍然会给你一个有效的词。现在uv 的长度是p p,对吧?
    • @konewka: 是的,也许你可以使用a^pb^{2p}。现在因为|xy| x 只能包含a,无论a 的数量是多少,您都不会再得到倍数。通过在p 上炸开部分字符串,您可以让事情变得更简单。
    • (呃,犯了一个小错误,它是a^(p+1)b^(2p+2)。这取决于您是否将边界视为包含(<=)或排他(<)。但同样的论点成立.
    猜你喜欢
    • 2018-06-18
    • 1970-01-01
    • 2021-12-11
    • 2018-10-21
    • 2013-02-16
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 2022-06-28
    相关资源
    最近更新 更多