正常语言的抽取引理

时间:2013-02-05 10:18:06

标签: regular-language dfa computation-theory pumping-lemma

我在使用泵浦引理检查给定语言是否正常时有点困惑。

假设我们必须检查:

  

L。语言是否接受偶数0的常规语言?

我们知道这是常规的,因为我们可以为L构建DFA。但我想用抽取引理来证明这一点。

现在假设我采用字符串w= "0000"

现在将字符串分为x = 0y = 0z = 00。现在在为i = 2应用抽取引理时,我将得到字符串"00000",其中以我的语言出现,因此通过引用引理证明该语言不规则。但它被DFA接受了吗?

任何帮助将不胜感激 谢谢

2 个答案:

答案 0 :(得分:12)

你并不完全清楚泵浦引理。

什么抽水引理说:

正式定义:Pumping lemma for regular languages

  

L 成为常规语言。然后存在一个整数 p ≥ 1,仅取决于 L ,以便每个字符串 w < / em> in L 的长度至少为 p p 称为{{ 1}})可以写成 "pumping length" = w (即 xyz 可以分为三个子串),满足以下条件:

     
      
  1. w | y
  2.   
  3. | ≥ 1 | xy | ≤
  4.   
  5. 适用于所有 p i ≥ 0 xy i z
  6.   

但这句话所说的是:

如果某种语言确实是常用语言,则必须以某种方式所有 生成( pump )新字符串足够大的字符串

  1. 足够大的字符串 表示字符串长度≥ P 的字符串。
    因此可能不会字符串生成新字符串,即使语言是常规语言

  2. 某种方式 意味着,如果语言真的是常规的,我们选择的L是正确的。然后应该至少单程在三个部分w中打破w,以便通过重复(抽取)xyz任意次,我们可以生成语言中的新字符串 正确选择y表示:w语言且足够大≥ P

  3. note :在第二点,即使您根据正式定义将w正确地分解为w,仍有可能某些新生成的字符串不在语言。 正如您所做的那样

    在这种情况下,您将尝试使用其他可能的xyz选项。

    在您选择的字符串y =“ 0000 ”中,您可以将w分解为w。选择y = 00时,您总会在语言中找到一个新生成的字符串“偶数为零”

    你在证明你正在为特定字符串0000做的一个错误。你应该证明所有y P 所以你的证据仍然不完整

    阅读我的回答IN CONTEXT OF PUMPING LEMMA FOR REGULAR LANGUAGES

    在该答案中,我已经解释过w分解为w并且抽取xyz 意味着找到循环部分并重复循环部分以生成语言中的新字符串 当我们证明某些语言是正常的;那么实际上我们不知道循环部分在哪里,所以我们尝试所有可能的选择,满足抽水引理的规则1,2&amp; 3.

    Pumping引理说如果语言是规则的且无限的,那么DFA中必须有一个循环,语言中每个足够大的字符串都会通过DFA的循环部分(根据pigeonhole principle)(因此{{ 1}}不能为null。这是上面正式定义中的规则-1)。

    请注意,循环可以位于初始位置或结束位置,因此yy可以是空字符串。

    但实际上我们不知道DFA中的循环在哪里,所以我们尝试所有可能的方法。

    要定期证明语言:您需要证明 所有 足够长的字符串(<在语言中 w 至少一种方式 y )通过重复循环部分任意数字 i )来生成语言中的新字符串次。

    要证明某种语言常规:您要充分找到 至少一个 语言中的长字符串( w ),无法选择任何方式 这样就可以使用所有可能的重复 i )生成新字符串

    x

    注意::规则始终无法证明“语言天气是否正常?”

      

    抽取引理是必要的,但不足以使语言成为常规。满足这些条件的可能语言可能仍然是非常规的   Reference

    要证明某种语言是正常的,您有一些necessary and sufficient conditions for a language to be regular.

答案 1 :(得分:0)

尽管接受的答案以其自己的方式是完整的,但我必须添加一些内容。我有一个很好玩的方法来利用激进式引理来证明给定语言不是常规语言。 只是为了有一个背景要谈论,让我说一下引理:

抽取常规语言的引词:

对于任何常规语言L,都有一个整数k。

对于所有带有| x |的x∈L ≥k,存在u,v,w∈∑ ∗,这样 x = uvw,并且

(1)| uv | ≤k

(2)| v | ≥1

(3)对于所有i≥0:u(v ^ i)w∈L

k称为Pumping lemma constant。让我直截了当地讲一下,向您展示如何证明L语言不是常规语言。

现在开始游戏,您需要两个玩家。一个是读者(R),另一个是对手(A)。

输入:一种语言L

R的目标:通过某种矛盾证明L语言不是正常的。

A的目标:以某种方式准备好面对R的论点,不要让他/她造成矛盾。

现在让我们开始争论。

A:语言L不是不规则的,因为没有人可以使用具有一定泵浦常数k的泵浦引理显示矛盾。 (每种语言仅映射到一个整数k)

R:让我假设你说的话。如果语言L是常规语言,则它必须满足泵引理的条件。因此,让我选择一个合适的字符串x∈L(| x |> = k),以帮助以后创建矛盾。

A:受到R的挑战,A尽力找到至少一个合适的分区来分隔字符串x的u,v和w,这样

x = uvw  and |uv| <= k and |v| > 0

R:如果A给出了任何可能的分区,则在能够显示i> = 0这样的整数的情况下赢得参数,

u(v^i)w ∉ L

因为现在R已显示语言L至少有一个字符串x,它没有任何分区(u,v,w),因此满足抽水引理。之所以发生矛盾,是因为我们假设L为正则是FALSE。因此,L语言被证明是不规则的。

如果R无法显示以上内容,则这不是常规语言的证明。这只是意味着L可以是正则语言或不规则语言,恰好满足抽水引理条件。

请始终记住,抽奖引理是ifL是常规的),then语句。反之亦然,不一定是TRUE。尽管在某些情况下可能是TRUE

因此,仅当您想证明某种语言不是常规语言时,抽动引理才有用。

(来源:Theory of Computation(NPTEL): Prof. Somenath Biswas(IIT Kanpur)