Answers:
矛盾证明通常用于表明一种语言不是常规语言:让为所有常规语言提供true的属性,如果您的特定语言未验证,则它不是常规语言。可以使用以下属性:P
为了使用闭包属性证明语言不是规则语言,该技术是通过保留规则性的操作将与规则语言结合起来,以获得已知的非规则语言,例如原型语言。例如,让。假设是正规的,因为正规语言在补码下是封闭的,所以的补码。现在采取的交集和这是规律的,我们得到这是不正规。L I = { a n b n | Ñ ∈ Ñ } 大号= { 一个p b q | p ≠ q } 大号大号大号Ç 大号Ç 一个⋆ b ⋆我
Myhill-Nerode定理可以用来证明不是正规的。对于,。所有类都是不同的,并且此类的数量无穷。由于常规语言必须具有有限数量的类,不是常规的。p ≥ 0 我/ 一个p = { 一- [R b [R b p | ř ∈ Ñ } = 我。{ b p } 我
根据Dave的回答,这是使用抽水引理的分步“手册”。
回忆抽水的引理(取自戴维的答案,摘自维基百科):
令为常规语言。然后存在一个整数(仅取决于使得)每串在长度至少的(被称为“泵送长度”)可被写为(即,罐分为三个子字符串),满足以下条件:
- 和
- 一个“抽” 仍然在:对于所有,。
假设您被赋予某种语言并且您想通过抽水引理证明它不是正常的。证明如下所示:
在进行示例之前,让我重申步骤3和步骤4(这是大多数人出错的地方)。在步骤3中,您需要选择一个特定单词。明确写下来,例如“ 00001111”或“ ”。非特定单词的示例:“ ”或“前缀为000的单词”。
另一方面,在步骤4中,您需要考虑多个情况。例如,如果,仅说并不足以成立矛盾。您还必须检查和,以及所有其他可能的选项。
现在让我们按照步骤操作,证明是不规则的。
可以在此处找到解释如何沿相同方向使用抽引引理的youtube剪辑
在Wikipedia中,常规语言的抽取语言如下:
令为常规语言。然后存在一个整数p ≥ 1(仅取决于大号),使得每个字符串瓦特在大号长度至少的p(p被称为“泵送长度”)可被写为瓦特= X ý Ž(即,瓦特罐分为三个子字符串),满足以下条件:
- 和
- 对于所有,X ÿ 我 Ž ∈ 大号。y是可以泵送的子字符串(可删除或重复任意次数,并且结果字符串始终在L中)。
(1)表示要泵送的回路y的长度必须至少为一; (2)表示循环必须在前p个字符内发生。x和z没有限制。
简单地说,对于任何正则语言L,任何足够长的字可以分成3个部分。即瓦特= X ÿ Ž,使得所有的弦X ÿ ķ ž为ķ ≥ 0 ,可以在大号。
现在让我们考虑一个例子。让。
为了证明这是不规则的,您需要考虑所有分解样子,因此可以给定x,y和z的所有可能事物是x y z = (01 )p 2 p(我们选择查看长度为3 p的特定单词,其中p是泵浦长度)。我们需要考虑字符串的y部分出现的位置。它可以与所述第一部分重叠,并且将因此等于或者(01 )ķ + 1,(10 ),1(01)ķ或0(10)ķ,对于一些ķ≥0(不要忘记, | ÿ | ≥1)。它可能与第二部分重叠,这意味着对于k>0,y= 2 k。否则它可能会重叠在单词的两个部分上,其形式为(01)k + 1 2 l,(10)k。, 1 (01 )ķ 2 升或 0 (10 )ķ 2 升,对于 ķ ≥ 0和升≥ 1
现在,让每个人都陷入矛盾,这将是一个不是您所用语言的单词。例如,如果我们取,则抽运引理说,例如,x y 2 z = x 0 (10 )k 2 l 0 (10 )k 2 l z必须在语言,适当选择x和z。但是这个词不能用2出现在1之前的语言。
其他情况将导致的个数大于2的个数,反之亦然,或者将导致单词不具有(01 )n 2 n的结构,例如连续两个0。
别忘了。在这里,缩短证明很有用:上面的许多分解都是不可能的,因为它们会使z部分过长。
上面的每种情况都需要导致这样的矛盾,然后这将是泵激引理的矛盾。瞧!语言不是正常的。
对于给定的语言,让
的(普通)生成函数的,即其每单位长度的字计数的序列。
以下语句为[ FlSe09,p52]:
即,与P,Q多项式。
因此,任何语言,它的生成函数是不理性的是不正规。不幸的是,所有线性语言也都具有理性的生成功能¹,因此该方法不适用于更简单的非常规语言。另一个缺点是很难获得(并且表明它不合理)。
示例:考虑正确嵌套括号词的语言,即Dyck语言。它是由明确的语法生成的
可以转化为等式
一种解决方案(具有所有正系数的解决方案)是
。
由于 [ Kuic70 ]且S不合理,因此Dyck语言不规则。
[FlSe09] P. Flajolet和R. Sedgewick(2009)的分析组合学 [Kuic70] W. Kuich(1970)关于上下文无关语言的熵
这就是我的答案从这里扩展版本使用泵引理来证明语言是不是经常,因为这应该是一个参考的问题。
那么,您认为抽奖引理看起来很复杂吗?不用担心 这是一种稍微不同的获取方法,该方法也隐藏在@Romuald的答案中。(测验:在哪里?)
让我们从记住确定性的有限状态自动机(DFA)接受每种常规语言开始。DFA是有限有向图,其中每个顶点对于字母表中的每个字母都具有一个精确的边缘。字符串会基于标记为“开始”的顶点为您提供图形中的遍历,并且DFA会接受该遍历是否以标记为“接受”的顶点结束。(这些顶点称为“状态”,因为不同的数学领域喜欢为同一件事组成自己的术语。)
通过这种思维方式,很容易看到:如果字符串和b将DFA驱动到相同的状态,那么对于任何其他字符串c,a c和b c会将DFA驱动到相同的状态。为什么?因为步行的起点和定义步行的字符串完全确定了终点。
稍有不同:如果是规则的,并且字符串a和b将识别自动机驱动到相同状态,则对于所有字符串c,a c和b c都在L中或都不在L中。
我们可以用它来证明语言不通过想象它,然后想出经常和b驱动DFA到相同的状态,并Ç使一ç是在语言和b Ç不是。从@Dave的答案中获取示例语言。想象一下它是规则的,因此它可以识别带有m个状态的DFA 。在鸽子洞原理说,至少两个{ (01 )我:0 ≤ 我≤ 中号+ 1 }发送DFA到相同的状态,比方说一个= (01和 b = (01 )q。由于 p ≠ q,我们看到 a 2 p是该语言,而 b 2 p不是该语言,因此该语言不能是规则的。
令人高兴的是,该示例实际上是证明语言不规范的模板:
还有其他技巧,但是这一技巧可以轻松解决大多数作业问题。
编辑:较早的版本对此概念与Pumping Lemma的关系进行了一些讨论。
we see that a2p is in the language and b2p is not, so this language can't be regular.
最后如何提出此声明。请您举个例子
在这里跟随答案,我将描述证明基于Kolmogorv复杂非规律性的方法。
在“通过Kolmogorov复杂性进行形式语言理论的新方法”中讨论了这种方法。Ming Li和Paul MB Vitanyi(请参阅第3.1节)。
让表示的字符串的Kolmogorov复杂X,即图灵机的最短的编码长度中号,使得中号(ε )= X(任何常用的定义都行)。然后,可以使用以下引理证明非规律性:
KC-规律:让是规则的语言,那么存在一个常数C ^仅取决于大号,使得对于所有X ∈ Σ *,如果ÿ是Ñ '吨ħ串(相对于词典式排序)在大号X = { ý ∈ Σ * | X ÿ ∈ 大号},然后ķ (Ý )≤ ø (登录Ñ )。
人们可以理解(并且证明)上述引理如下,对于任何,来描述Ñ '吨ħ在串大号X一个需要指定:
由于我们只需要记住处理之后的状态,而不需要记住x本身,因此可以根据L将其隐藏在常数中。索引n需要log n位来描述,我们得到上面的结果(为完整起见,需要添加生成y所需的特定指令,但这只会在最终描述中添加一个常数因子)。
这个引理说明如何约束它们的成员的所有字符串的柯尔莫哥洛夫复杂对于一些正规语言大号和X ∈ Σ *。为了显示非规则性,可以假设L是规则的,并证明边界过于严格(例如,无限组字符串的有限Kolmogrov复杂度)。
上面链接的答案包含一个示例,说明如何使用此引理显示是不规则的,本文提供了更多示例。为了完整起见,我们在这里显示如何证明L = { 0 n 1 n | Ñ ≥ 0 }是不规律的。
鉴于一些,我们用ý X 我的我'吨ħ在字大号X。注意y 0 i 1 = 1 i。使用上述引理,着眼于前缀X的形式的X = 0 我和固定Ñ = 1,我们得到∀ 我≥ 0 :ķ (Ý 0 我 1。由于 y 0 i 1 = 1 i,这意味着我们可以用一个常数来约束形式为 1 i的所有字符串的Kolmogorov复杂度,这显然是错误的。值得一提的是,我们可以探讨一个 X,如 X = 0 ñ足够大 ň满足 ķ (0 ñ)≥ 日志ñ(我们先从一个高度复杂的前缀)。由于 y x 1 = 1 n,我们得到,矛盾(假设 n > 2 c)。
对于一元语言(超过1个字母的语言),有一个简单的标准。让我们固定字母表,以及用于甲⊆ Ñ,定义 大号(甲)= { σ Ñ:Ñ ∈ 甲} 。
定理。让。以下是等效的:
是规则的。
是上下文无关的。
存在,使得对于所有Ñ ≥ Ñ 0,它认为Ñ ∈ 甲 IFF Ñ + 米∈ 甲。(我们说A最终是周期性的。)
让。然后0. 一个0 一个1 一2 ...是合理的。
生成函数是一个有理函数。
该定理可以通过多种方式证明,例如,使用抽引引理,Myhill-Nerode理论,Parikh定理,一元语言上的DFA结构(在Pollard的ρ算法中,它们看起来像“ ” ),等等。 。这是有用的推论。
结果。让,并假设大号(一)是有规律的。
极限存在。(这是渐近密度的甲。)
如果则A是有限的。
如果然后阿是cofinite(即,¯ 阿是有限的)。
作为一个例子,该语言不是正则,由于集已消失渐近密度,但是无限的。
常规语言的类别在各种闭合操作下被闭合,例如联合,交集,补码,同态,正则替换,逆同态等等。通过简化为已知为非常规语言,可以用来证明给定语言不是常规语言。
作为一个非常简单的例子,假设我们知道,语言是没有规律的。然后,我们可以证明语言(用同样多的所有单词的语言 S和 S)是不是正规如下:
假设是正则的。然后也将是有规律的。但,这是已知不是规则的。