为常规语言抽取引理
Posted
技术标签:
【中文标题】为常规语言抽取引理【英文标题】:Pumping lemma for regular language 【发布时间】:2013-01-20 05:39:32 【问题描述】:我在检查给定语言是否使用抽引引理时有点困惑。
假设我们必须检查是否:
L. 是否接受偶数个
0
的语言?
我们知道它是有规律的,因为我们可以为 L 构造一个 DFA。但我想用泵引理来证明这一点。
现在假设,我取一个字符串w= "0000"
:
现在将字符串划分为x = 0
、y = 0
和z = 00
。现在在为i = 2
应用抽引引理时,我将得到字符串"00000"
,它在我的语言中不存在,因此通过抽引引理证明该语言不规则。但它被 DFA 接受了吗?
任何帮助将不胜感激 谢谢
【问题讨论】:
【参考方案1】:您对抽取引理并不完全清楚。
什么抽引理说:
正式定义:Pumping lemma for regular languages
让
L
成为常规语言。然后存在一个整数p
≥ 1
仅取决于L
使得 @ 中的每个字符串w
长度至少为p
的987654333@(p
称为"pumping length"
)可以写成w
em> =xyz
(即w
可分为三个子串),满足如下条件:
|
y
| ≥ 1
|
xy
| ≤
p
对于所有i
≥ 0
,xy
i
z
∈
@987654353 @
但这句话的意思是:
如果一种语言真的是一种常规语言,那么一定有某种方式从all生成(pump)新字符串足够大的字符串。
足够大的字符串表示,长度≥P的语言字符串。因此,即使语言是常规语言,可能不会从 small 字符串生成新字符串
某种方式的意思是,如果语言确实是常规语言并且我们选择的w
是正确的。那么应该至少有一种方法将w
分成三个部分xyz
,这样通过重复(抽)y
任意次数,我们可以在该语言中生成新的字符串。 正确选择w
意味着:w
在语言中并且足够大≥P
注意:在第二点中,即使您根据正式定义将w
正确分解为xyz
,仍有一些新生成的字符串不在语言中。 和你一样。
在这种情况下,您将使用其他可能的y
选项重试。
在您选择的字符串w
= "0000" 中,您可以打破w
使得y = 00
。选择y
,您总能在语言中找到一个新生成的字符串,即“偶数个零”
你在证明中犯了一个错误,你正在为特定字符串 0000 做。你应该证明所有w
≥ P。 所以你的证明仍然不完整
阅读我的这个答案IN CONTEXT OF PUMPING LEMMA FOR REGULAR LANGUAGES
在那个答案中,我已经解释了将w
分解为xyz
并抽取y
意味着找到循环部分并重复循环部分以生成新字符串语言。
当我们证明某种语言是规则的;那么实际上我们不知道循环部分在哪里,所以我们尝试所有可能的选择,以满足抽引引理的规则 1,2 和 3。
并且 Pumping lemma 表示,如果语言是规则且无限的,则 DFA 中必须有一个循环,并且语言中每个足够大的字符串都通过 DFA 的循环部分(根据pigeonhole principle)(因此y
可以'不为空。这是上述正式定义中的规则 1)。
想想,循环可以在初始位置或结尾,所以x
和z
可以是空字符串。
但实际上我们不知道循环在 DFA 中的位置,因此我们尝试了所有可能的方法。
证明一种语言是规则的:你要证明对于所有足够长的字符串(w) 在语言中,至少有 一种 方式(y) 可以生成通过重复循环部分任意次数 (i) 次,以语言中的新字符串。
证明一种语言不正规:你要找到至少一个足够长的字符串( w) 在语言中没有选择任何方式'y',以便它可以生成新的字符串所有可能的重复(i)。
To proof using Pumping Lemma:
+-------------------------+--------------------------+----------------+--------------+
| | Sufficient large W in L | y | i >=0 |
+-------------------------+--------------------------+----------------+--------------+
| language is regular | For all W (all W can use | At-least one | For all i>=0 |
| | to generate new W' in L) | | |
+-------------------------+--------------------------+----------------+--------------+
| language is NOT regular | Find Any W (at-least 1 | With all (Show | At-least one |
| | W that can't generates | no possible Y | i |
| | new W' in L | exists) | |
+-------------------------+--------------------------+----------------+--------------+
注意::该规则总是不能证明“天气语言是正常的?”
抽取引理是语言正常的必要但非充分条件。满足这些条件的语言可能仍然是非常规的。Reference
为了证明一种语言是正常的,你有一些necessary and sufficient conditions for a language to be regular.
【讨论】:
You can't prove a language is regular using the pumping lemma though. 存在满足抽水引理但不规则的语言(尽管大多数实用语言不是这样,但它仍然不是证明) . @DPenner 非常感谢您提供此信息 DPenner。我应该在我的答案中添加这个。我通过您的个人资料看到您也为 TOC 提供了很好的答案。我在哪里可以找到你的个人资料链接:) 添加指向其他question的链接 抽水引理只能用来证明一种语言的“不规则性”。抽水引理的反面是不正确的。这可以使用常规语言的“广义抽水引理”来证明。要证明一种语言是正则的,您需要生成一个接受/表示该语言的 DFA/NFA 或正则表达式。【参考方案2】:虽然接受的答案以自己的方式是完整的,但我不得不添加一些内容。我有一个非常有趣的方法来利用泵引理来证明给定的语言不是常规语言。 只是为了讨论一个上下文,让我陈述引理:
为正则语言抽取引理:
对于任何正则语言 L,都存在一个整数 k。
使得对于所有具有 |x| 的 x ∈ L ≥ k,存在 u, v, w ∈ Σ∗,这样 x = uvw,并且
(1) |紫外线| ≤ k
(2) |v| ≥1
(3) 对于所有 i ≥ 0:u(v^i)w ∈ L
k 被称为Pumping lemma constant
。让我直截了当地向您展示如何证明语言 L 不规则。
现在要开始游戏,您需要两个玩家。一个是 Reader(R
),另一个是 Adversary(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 可以是正则或不规则语言,恰好满足抽水引理条件。
永远记住,抽水引理是if
(L
是常规的),then
语句。反之亦然,不一定是TRUE
。虽然在某些情况下可能是TRUE
。
因此,只有当您想证明一种语言不是正则语言时,抽水引理才有用。
(来源:Theory of Computation(NPTEL): Prof. Somenath Biswas(IIT Kanpur)
【讨论】:
以上是关于为常规语言抽取引理的主要内容,如果未能解决你的问题,请参考以下文章