如何证明一种语言不是上下文无关的?


88

我们了解了无上下文语言CFL。它具有无上下文语法下推自动机的特征,因此很容易显示给定语言是无上下文的。

但是,如何显示相反的内容?我的助教坚称要这样做,我们必须为所有语法(或自动机)证明它们无法描述手头的语言。这似乎是一项艰巨的任务!

我读过一些抽奖式引理,但看起来确实很复杂。


Ntpick:无法确定语言是否与上下文无关。
reinierpost

1
@reinierpost我看不到您的评论与问题有何关系。这是关于证明事物,而不是决定(从算法上)。
拉斐尔

就是这个它的点容易证明语言是上下文无关的,一般。如果对frafl来说很容易,那一定是由于某些特殊条件(通常不适用于语言),例如提供了描述该语言的下推式自动机。
reinierpost

@reinierpost这种推理似乎假设难以确定的暗示(等于?)难以证明。我不知道那是真的。
拉斐尔

Answers:


69

据我所知,抽水外迄今为止最简单,最常用的技术。如果发现困难,请先尝试普通版本,那还不错。对于语言而言,还有其他一些手段与上下文无关。例如,不确定的语言并非无关紧要。

就是说,我对除引理之外的其他技术也很感兴趣。

编辑:这里是用于泵送引理一个例子:假设该语言被上下文无关(P是素数集合的)。抽动引理有很多/ 量词,所以我将其变得像一个游戏:L={akkP}P/

  1. 抽水引理给你一个p
  2. 您给字词的长度至少为psp
  3. 泵送引理重写它是这样的:一些条件下(| v X ý |p| v ÿ |1s=uvxyz|vxy|p|vy|1
  4. 你给一个整数n0
  5. 如果不在L中,则您赢了,L不是上下文无关的。uvnxynzLL

对于这个特定的语言任何一个ķ(与ķ pķ是一个素数)会做的伎俩。然后抽引理给你 ü v X Ÿ ž| v ÿ | 1。不要反驳上下文打浆度,你需要找到ň这样| u v n x y n z | 不是素数。sakkpkuvxyz|vy|1n|uvnxynz|

|uvnxynz|=|s|+(n1)|vy|=k+(n1)|vy|

然后将:k + k | v ÿ | = ķ 1 + | v ÿ |不是素数这样ü v Ñ X ý Ñ Ž 大号。不能使用抽运引理,因此L不是上下文无关的。n=k+1k+k|vy|=k(1+|vy|)uvnxynzLL

第二个例子是语言。我们(当然)必须选择一个字符串,并表明不可能将其分解为这五个部分,并且每个派生的抽取字符串都保留在该语言中。{www{a,b}}

字符串是此证明的合适选择。现在我们只需要查看vy的位置即可。关键部分是vy必须在其中包含某些内容(可能两者都有),并且vy(以及x)都包含在长度p子字符串中-因此它们之间的距离不能太远。s=apbpapbpvyvyvyxp

该字符串对于y可能存在的位置有很多可能性,但是事实证明,其中的几种情况实际上看起来非常相似。vy

  1. v ÿ b *。因此,它们都包含在相邻 s或 b s之一中。这是相对容易的情况下,争论,因为它那种无所谓哪他们在假设。 | v ÿ | = ķ pvyavybab|vy|=kp
    • 如果他们在首节 S,那么当我们泵,新的字符串的前半部分是一个p + ķ b p - ķ / 2,第二个是b ķ / 2p b p。显然,这不是w w的形式。aap+kbpk/2bk/2apbpww
    • 其他三个部分中任何一个的参数几乎相同,只是k / 2在索引中的位置。kk/2
  2. 跨越两个部分。在这种情况下抽下来是你的朋友。再次有可能发生这种情况的地方(确切地说是3个),但我只做一个说明性的地方,其余地方应该很容易从那里弄清楚。 vxy
    • 假设跨越第一个a部分和第一个b部分之间的边界。令v y = a k 1 b k 2(与a s和b s在vy中的位置无关紧要,但我们知道它们是有序的)。然后,当我们抽空(即i = 0的情况)时,我们得到新的字符串s ' = a p k 1 b p k 2vxyabvy=ak1bk2abvyi=0,但这时如果小号'可以被分成瓦特瓦特,中点必须某处在第二部分,所以前半部分是一个p - ķ 1个 b p - ķ 2ķ 1 + ķ 2/ 2,和第二半是一个p - ķ 1 + ķ 2/ 2 b ps=apk1bpk2apbpswwaapk1bpk2a(k1+k2)/2ap(k1+k2)/2bp。显然,这些不是相同的字符串,因此我们不能在其中放置yvy

其余情况从那里应该是相当透明的-它们是相同的想法,只是在第一个实例中将y放在其他三个位置,在第二个实例中将两个位置。但是,在所有情况下,您都可以通过以下方式进行泵送:将字符串分成两半时,顺序明显混乱。vy


确实,kozen的游戏就是解决这个问题的方法。
socrates

45

奥格登的引理

引理(奥格登(Ogden))。为上下文无关的语言。然后有一个恒定Ñ使得对于每Ž 大号和的任何方式标记Ñ的或更多的位置(符号)Ž为“可分辨的位置”,然后ž可以写成Ž = û v 瓦特X ÿ,使得LNzL Nzzz=uvwxy

  1. 具有至少一个不同的位置。vx
  2. 最多具有 N个不同的位置。vwxN
  3. 对于所有ü v 瓦特X ý 大号i0uviwxiyL

例。。假设L是上下文无关的,并且让N为奥格登引理给出的常数。令z = a N b N + N c N + 2 N (属于L),并假设我们标记了L={aibjck:ij,jk,ik}LNz=aNbN+N!cN+2N!L作为区别,符号所有位置(即z的前N个位置)。令z = u v w x y是满足奥格登引理条件的z的分解。aNzz=uvwxyz

  • 如果X包含不同的符号,然后ü v 2 w ^ X 2 Ÿ 大号,因为会有错误的顺序符号。vxuv2wx2yL
  • x中的至少一个必须仅包含符号a,因为仅区分了a。因此,如果X 大号b *X 大号Ç *,然后v 大号+。令p = | v | 。然后1 p Ñ,这意味着p分割Ñ 。让qvxaaxL(b)xL(c)vL(A+)p=|v|1pNpN!。然后 ž ' = û v 2 q + 1瓦特X 2 q + 1个 Ÿ应该属于大号。然而, v 2 q + 1 = 一个2 p q + p = 一个2 Ñ + p。由于 u w y恰好具有 N - p个符号 a,因此 zq=N!/pz=uv2q+1wx2q+1yLv2q+1=a2pq+p=a2N!+puwyNpa 2 N + N个符号 a。但是 v x都没有 c,因此 z '也有 2 N + Ñ符号 Ç,这意味着 ž '大号,这违背奥格登引理。发生类似的矛盾,如果 X 大号+ X 大号Ç *。我们的结论大号z2N!+Navxcz2N!+NczLxL(A+)xL(c)L 不是没有上下文的。

行使。使用奥格登引理,表明不是上下文无关。L={aibjckd:i=0 or j=k=}

抽引引物

这是奥格登引理的一个特例,其中所有位置都可以区分。

引理。为上下文无关的语言。然后有一个恒定Ñ使得对于每Ž 大号ž可以写成Ž = û v 瓦特X ÿ,使得LNzLzz=uvwxy

  1. |vx|>0
  2. |vwx|N
  3. 对于所有ü v 瓦特X ý 大号i0uviwxiyL

帕里克定理

这比奥格登的引理更具有技术性。

定义。。我们定义Ψ ΣΣ *Ñ ÑΨ Σ瓦特= 1... Ñ其中,是出现次数一个瓦特Σ={a1,,an}ΨΣ:ΣNn

ΨΣ(w)=(m1,,mn),
miaiw

定义。一个子集Ñ Ñ被称为线性,如果它可以被写成: 小号= { Ü 0 + Σ 1 ķ一个ü  对于一些组  ü Ñ Ñ  和  一个Ñ }SNn

S={u0+1ikaiui: for some set of uiNn and aiN}

定义。一个子集Ñ Ñ被称为半直链,如果它是线性集的有限集合的并集。SNn

LΣL

ΨΣ[L]={ΨΣ(w):wL}

L={0m1n:m>n or (m is prime and mn)}

行使。使用帕里克定理,证明一元字母表上任何与上下文无关的语言也是规则的。


1
我接受jmad的回答,因为问题明确提到了Pumping Lemma。不过,我非常感谢您的回答;在这里收集所有主要方法是一件好事。
拉斐尔

1
很好,但是请注意,抽水式引理是奥格登引理的
特例

当然。尽管如此,大多数人还是会先尝试PL。许多人甚至都不了解OL。
拉斐尔

1
Ginsburg和Spanier的一个定理建立在Parikh定理的基础上,为有界情况下的上下文无关性提供了充要条件。math.stackexchange.com/a/122472
sdcvvc 2013年

能否请您根据其他操作定义“杰出职位”?还是至少是非正式的?我在许多不同的地方都找到了逐字逐句地复制OL的定义,但是到目前为止,它们中的任何一个都不愿意解释它的含义。
wvxvw

34

关闭属性

CFL

LCFLLCFLLCFLLCFL

与使用其他先验知识较少的结果相比,这通常更短(并且往往更容易出错)。这也是可以应用于各种类别的对象的一般概念。

示例1: 与常规语言的交集

L(e)e

L={ww{a,b,c},|w|a=|w|b=|w|c}

LL(abc)={anbncnnN}CFL

CFLLCFL

示例2 :( 反)同态

L={(ab)2ncmd2nm(aba)nm,nN}

ϕ(x)={ax=aεx=bbx=cx=d

ϕ(L)={a2nb2na2nnN}.

现在,有了

ψ(x)={aax=ax=cbbx=bandL1={xnbnynx,y{a,c}nN},

L1=ψ1(ϕ(L)))

L1L2=L(abc)L3={anbncnnN}

L3=L2ψ1(ϕ(L))

LCFLL3L3LCFL


互换引理

交汇处引理 [1]提出了一种用于上下文打浆度的必要条件是比更强奥格登引理。例如,它可以用来表明

{xyyzx,y,z{a,b,c}+}CFL

抵制许多其他方法。这是引理:

LCFLcLn2QnLn=LΣnmnm2k|Qn|cLn2ziQn

  1. zi=wixiyii=1,,k
  2. |w1|=|w2|==|wk|
  3. |y1|=|y2|==|yk|
  4. m|x1|=|x2|==|xk|>m2
  5. wixjyiLn(i,j)[1..k]2

n,mQn

目前,我没有免费的参考资料,上面的表述摘自1981年的[1]的预印本。我非常感谢帮助您找到更好的参考资料。看来最近已经(重新)发现了相同的属性[2]。


其他必要条件

Boonyavatana和Slutzki [3]调查了几种类似于抽水和互换引理的条件。


  1. W. Ogden,RJ Ross和K. Winklmann撰写的“上下文无关语言互换性引理”(1985年)
  2. T. Yamakami(2008)将常规和上下文无关语言交换语言
  3. R. Boonyavatana和G.Slutzki(1988)的上下文无关语言的互换或泵(DI)难题。


19

由于设置的非上下文无关语言不是半确定的(akare),因此没有通用方法。如果有一个通用方法,我们可以用它来半确定这个集合。

情况甚至更糟,因为给定两个CFL,因此无法确定它们的交点是否也是CFL。

参考:Hopcroft和Ullman,“自动机理论,语言和计算简介”,1979年。


2
一个有趣的(但可能是更高级和开放性的问题)将对非CFL的子类进行分类,可以使用特定方法将其证明为非CFL。
卡夫

我不是在寻找一种可计算的方法,而是在寻找笔和纸的证明技术。后者不一定暗示前者。
拉斐尔

13

Ogden条件(OC)的更强形式是

Bader-Moura病(BMC)

LΣnzLd(z)e(z)d(z)>ne(z)+1z=uvwxy

  1. d(vx)1e(vx)=0
  2. d(vwx)ne(vwx)+1
  3. i0uviwxiyL

LBMC(Σ)L

CFL(Σ)BMC(Σ)OC(Σ)

参考:Bader,C.,Moura,A.,《奥格登引理的概括》。JACM 29,没有。2,(1982),404–407


2
为什么不干脆一路Dömösi和Kudlek的泛化dx.doi.org/10.1007/3-540-48321-7_18 ...
安德拉斯·萨拉蒙

@AndrásSalamon:我不知道!:-) ...也许您可以将其作为新答案发布,称OC,BMC,PC是它的特殊情况(所有显着位置或无排除位置)。
2013年

欢迎您发布,现在没有时间。
安德拉斯·萨拉蒙

这个答案将从一个例子中受益。
拉斐尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.