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


88

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

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

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


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

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

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

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

Answers:


69

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

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

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

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

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

|uvnxynz|=|s|+(n−1)|vy|=k+(n−1)|vy|

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

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

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

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

  1. 或 v ÿ ∈ b *。因此,它们都包含在相邻的 s或 b s之一中。这是相对容易的情况下,争论,因为它那种无所谓哪他们在假设。 | v ÿ | = ķ ≤ p。 vy∈a∗vy∈b∗ab|vy|=k≤p
    • 如果他们在首节 S,那么当我们泵,新的字符串的前半部分是一个p + ķ b p - ķ / 2,第二个是b ķ / 2一p b p。显然,这不是w w的形式。aap+kbp−k/2bk/2apbpww
    • 其他三个部分中任何一个的参数几乎相同,只是和k / 2在索引中的位置。kk/2
  2. 跨越两个部分。在这种情况下抽下来是你的朋友。再次有可能发生这种情况的地方(确切地说是3个),但我只做一个说明性的地方,其余地方应该很容易从那里弄清楚。 vxy
    • 假设跨越第一个a部分和第一个b部分之间的边界。令v y = a k 1 b k 2(与a s和b s在v和y中的位置无关紧要,但我们知道它们是有序的)。然后,当我们抽空(即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′=ap−k1bp−k2apbps′wwaap−k1bp−k2a(k1+k2)/2ap−(k1+k2)/2bp。显然,这些不是相同的字符串,因此我们不能在其中放置和y。vy

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


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

45

奥格登的引理

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

  1. 具有至少一个不同的位置。vx
  2. 最多具有 N个不同的位置。vwxN
  3. 对于所有,ü v 我瓦特X 我 ý ∈ 大号。i≥0uviwxiy∈L

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

  • 如果或X包含不同的符号,然后ü v 2 w ^ X 2 Ÿ ∉ 大号,因为会有错误的顺序符号。vxuv2wx2y∉L
  • 和x中的至少一个必须仅包含符号a,因为仅区分了a。因此,如果X ∈ 大号(b *)或X ∈ 大号(Ç *),然后v ∈ 大号(甲+)。令p = | v | 。然后1 ≤ p ≤ Ñ,这意味着p分割Ñ !。让qvxaax∈L(b∗)x∈L(c∗)v∈L(A+)p=|v|1≤p≤NpN!。然后 ž ' = û 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!+puwyN−pa有 2 N !+ N个符号 a。但是 v和 x都没有 c,因此 z '也有 2 N !+ Ñ符号 Ç,这意味着 ž ' ∉ 大号,这违背奥格登引理。发生类似的矛盾,如果 X ∈ 大号(甲+)或 X ∈ 大号(Ç *)。我们的结论大号z′2N!+Navxcz′2N!+Ncz′∉Lx∈L(A+)x∈L(c∗)L 不是没有上下文的。

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

抽引引物

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

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

  1. 。|vx|>0
  2. 。|vwx|≤N
  3. 对于所有,ü v 我瓦特X 我 ý ∈ 大号。i≥0uviwxiy∈L

帕里克定理

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

定义。令。我们定义Ψ Σ:Σ * → Ñ Ñ由Ψ Σ(瓦特)= (米1,... ,米Ñ),其中,米我是出现次数一个我在瓦特。Σ={a1,…,an}ΨΣ:Σ∗→Nn

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

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

S={u0+∑1≤i≤kaiui: for some set of ui∈Nn and ai∈N}

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

LΣL

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

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

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


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

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

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

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

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

34

关闭属性

CFL

L∈CFLL′∈CFLL′∉CFLL∉CFL

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

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

L(e)e

L={w∣w∈{a,b,c}∗,|w|a=|w|b=|w|c}

L∩L(a∗b∗c∗)={anbncn∣n∈N}∉CFL

CFLL∉CFL

示例2 :( 反)同态

L={(ab)2ncmd2n−m(aba)n∣m,n∈N}

ϕ(x)={ax=aεx=bbx=c∨x=d

ϕ(L)={a2nb2na2n∣n∈N}.

现在,有了

ψ(x)={aax=a∨x=cbbx=bandL1={xnbnyn∣x,y∈{a,c}∧n∈N},

L1=ψ−1(ϕ(L)))

L1L2=L(a∗b∗c∗)L3={anbncn∣n∈N}

L3=L2∩ψ−1(ϕ(L))

LCFLL3L3L∉CFL


互换引理

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

{xyyz∣x,y,z∈{a,b,c}+}∉CFL

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

L∈CFLcLn≥2Qn⊆Ln=L∩Σnmn≥m≥2k≥|Qn|cLn2zi∈Qn

  1. zi=wixiyii=1,…,k
  2. |w1|=|w2|=⋯=|wk|
  3. |y1|=|y2|=⋯=|yk|
  4. m≥|x1|=|x2|=⋯=|xk|>m2
  5. wixjyi∈Ln(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⊆Σ∗nz∈Ld(z)e(z)d(z)>ne(z)+1z=uvwxy

  1. d(vx)≥1e(vx)=0
  2. d(vwx)≤ne(vwx)+1
  3. i≥0uviwxiyL

L∈BMC(Σ)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.