使用抽水引理来证明语言的非规律性

时间:2018-01-14 16:53:59

标签: regex computer-science grammar context-free-grammar

这是一般规则......

  

L成为常规语言。然后存在一个整数p ≥ 1,仅取决于L,因此w长度至少为Lp的每个字符串p都会被调用"抽水长度")可写为w = xyz(即,w可分为三个子串),满足以下条件:

     
      
  • |y| ≥ 1

  •   
  • |xy| ≤ p

  •   
  • 适用于所有i ≥ 0, x y^i z ∈ L

  •   

......到目前为止一直很好。

但是为了证明给定的语言是非常规的,考虑一个案例是否足够(从而使第三点无效)? 例如:

L = {a b^n c^k d^m | k,n,m>0 AND m>n} <-- given language
w = {a b^n c d^m  | n=1 AND m=2} = abcdd  <-- arbitrary instance of the language
x = a
y = bc
z = dd

i=2x y^i z将成为abbccdd,因此n=2m>n现在为false

这足以证明吗?

OT:你如何在stackoverflow中编写顶点/上标字符?

2 个答案:

答案 0 :(得分:2)

  

为了证明给定的语言是非常规的,考虑一个案例

就足够了

是的,这是使用泵浦引理时的常见模式。证据应该是矛盾的,首先假设语言 是常规的。然后你会在语言中找到一个与泵浦引理相矛盾的示例字符串。抽取引理说明了每个字符串(在某些情况下),所以找到一个反例足以证明这个矛盾。

答案 1 :(得分:1)

所提供的语言为L = {a b^n c^k d^m | k,n,m>0 AND m>n} - 这意味着此语言中的d s比b更多。

回答你的问题:

  

但是为了证明给定的语言是非常规的,是吗?   足以考虑一个案例(从而使第三个案件无效)   点)?

这个想法是正确的。您希望使用Pumping Lemma for Regular Languages,如果您能证明将Pumping Lemma应用于给定语言的单词会产生一个不在该语言中的单词,那么您已经证明该语言不能是常规语言。 / p>

泵送引理在这个意义上经常使用和有用。

  

这足以证明吗?

您展示的证据是正确的想法,但未正确应用。你选择了

x = a
y = bc
z = dd

并应用抽水引理会产生abcbcdd,这当然不是语言的一部分,但现在抽水时间会发挥作用。

你有语言

L = {a b^n c^k d^m | k,n,m>0 AND m>n}

现在,您要查找单词并选择p和相应的子字符串,应用正则语言的抽取引理,并显示生成的单词不是该语言。然后,您可以得出结论,该语言不规律。

您选择的子字符串不合适。有一个错误,我在评论你的问题时提到过。我会采用一般方法:

w = {a b^n c^k d^m  | n,p,m > 0 and m > n and n < p }
x = a
y = b^n
z = c^k d^m

因此,使用Pumping Lemma,我们可以说以下内容:

  • |y| >= 1因为根据定义b^n with n > 0
  • |xy| = |a b^n| <= p其中p是抽水长度
  • 因此我们可以假设p = n + 1|a b^n|
  • xy至少包含ab,因此p >= 1
  • |w| >= p,因为我们之前已将p设置为n + 1,因此k > 0m > n
  • 对于所有x y^i z
  • L位于i >= 0

现在选择一个n + 1 = m的单词,即单词中只有一个d b。这个词在L中,看起来像a b^n c^k d^m。现在我们应用Pumping Lemma,这个单词最多可以a b^n+1 c^k d^m。但这是一个矛盾,因为现在抽取的字中bd一样多,因此该字不在L语言中。我们可以得出结论,L不是常规的。