是{www | ……}是否与上下文无关?


12

众所周知,的补语是与上下文无关的。但是的补码呢?{ w ^ w ^ | w ^ ∈ Σ * } {wwwΣ}{ w ^ w ^ w ^ | w ^ ∈ Σ * }{wwwwΣ}


1
我发现这是P.Dömösi,S。Horváth,M。Ito,L。Kászonyi,M。Katsura中的定理4:由原始单词组成的形式语言。link.springer.com/chapter/10.1007/3-540-57163-9_15
domotorp '19

Answers:


11

我相信仍然是CFL,并采用了经典证明。这是草图。

考虑L = { x y z | x | = | y | = | z | x ý ý Ž }L={xyz:|x|=|y|=|z|(xyyz)},这是补体 { 瓦特瓦特瓦特}{www},具有长度的话不 00 MOD 33除去。

L ' = { u v | ü | 3 | v | 3 0 ü 2 | ü | / 3v | v | / 3 }L={uv:|u|3|v|30u2|u|/3v|v|/3}。显然,L 'L是CFL,因为您可以猜测位置pp并认为uu在此之后以p / 2p/2结尾。我们证明L = L L=L

  • 大号大号'LL:让 w ^ = X Ÿ ž 大号w=xyzL。假设有一个 pp使得 x py pxpyp。然后写 üu 3 p / 23p/2的第一字符瓦特w,和 vv为其余部分。自然, u 2 | ü | / 3 = X pu2|u|/3=xp。现在是 v | v | / 3v|v|/3?第一:

| v | / 3 = | w |3 p / 2 / 3 = | w | / 3 - p / 2。

|v|/3=(|w|3p/2)/3=|w|/3p/2.

因此,在w中w,这是位置: | ü | + | v | / 3 = 3 p / 2 + | w | / 3 p / 2 = | w | / 3 + p

|u|+|v|/3=3p/2+|w|/3p/2=|w|/3+p,
换句话说,将pp放置在y中y。这表明 u 2 | ü | / 3 = x py p =v | v | / 3u2|u|/3=xpyp=v|v|/3

如果y pz pypzp,则让uu为前3个2|瓦特|/3+p32(|w|/3+p)的字符瓦特w,使得ù2| ü| /3u2|u|/3ypyp; vvww的其余部分。然后: | ü| +| v| /3=2| w| /3+p

|u|+|v|/3=2|w|/3+p
因此,v| v| /3=zpv|v|/3=zp

  • 大号'大号LL:我们扭转先前的过程。让 w ^ = ü v 大号w=uvL。写 p = 2 | ü | / 3p=2|u|/3。然后: p + | w | / 3 = 2 | ü | / 3 + | u v | / 3 = | ü | + | v | / 3.
    p+|w|/3=2|u|/3+|uv|/3=|u|+|v|/3.
    因此, w p =u 2 | ü | / 3v | v | / 3 = w p + | w | / 3wp=u2|u|/3v|v|/3=wp+|w|/3,和瓦特大号wL(因为如果瓦特w的形式为 X X Xxxx,必须认为瓦特p = 瓦特p + |瓦特| / 3wp=wp+|w|/3对于所有 pp)。

2
哇,真不可思议!我并不认为我已经按照你的说法的每一个细节,就像我没有看到你的最后一行(“对于最后一位”)的意思,或者你为什么不的情况下分开| w | / 3 < p / 2,但您的解决方案最终会起作用。我将主要技巧总结为3 a + 3 b = 2 a + b a + 2 a|w|/3<p/2 + 2 b。类似的技巧也适用于任何 L r = { w r3a+3b=2a+(ba)+2a+2b}。我想知道是否 L ' = { x y z | x | = | y | = | z | x y }是否与上下文无关。Lr={wr}L={xyz:|x|=|y|=|z|(xy)}
domotorp

1
@domotorp:干杯!好了,“最后一点”是不必要的,谢谢!至于“ | w | / 3 < p / 2的情况 ”,我不确定你的意思。我错过了什么?至于您的L ,我想知道是否也这样做“证明”!目前还不能确定:)|w|/3<p/2L
迈克尔Cadilhac

2
哦,我的坏,p / 2 | w | / 3总是成立!p/2|w|/3
domotorp

可能不是问题,但是p可能是奇数,因此您应该处理这种情况ü | p为奇数时= 3 p / 2 p|u|=3p/2(?)p
Marzio De Biasi

@MarzioDeBiasi:是的,这正是为什么这是一个草图:-)
迈克尔Cadilhac

10

这就是我考虑使用PDA解决此问题的方法。我认为,它在直观上更加清晰。

一个字Xx不是形式的瓦特瓦特瓦特www当且仅当或者(i)| x | 0|x|≢0(MOD 3),这是很容易检查,或(ii)有一些输入符号一个a从相应的符号不同bb发生| w | |w|职位以后。

我们使用通常的技巧,即通过使用一个新的“栈底”符号Z来存储整数值|来维护整数t tt | 作为堆栈上计数器的数量,sgn(t)由PDA的状态决定。因此,我们可以通过执行适当的操作来增加或减少tZ|t|tt

目的是使用不确定性来猜测您正在比较的两个符号的位置,并使用堆栈来记录t := | x | 3 dt:=|x|3d,其中dd是这两个符号之间的距离。

我们按以下步骤完成此操作:为看到的每个符号递增t,直到选择了第一个猜出的符号a,然后在状态中记录a。对于每个随后的输入符号,直到你决定你看到b,减量21用于输入长度和- 3为的距离)。猜测第二个符号b的位置,并记录a b。继续增加t为后续输入符号。接受如果t = 0(顶部Z可以检测到)并且a b

这样做的好处是,应该完全清楚如何将其扩展到任意能力。


2
确实,很整洁!
domotorp

1
嗯,好多了的确:-)
迈克尔Cadilhac

4

只是从一个不同的角度(“面向语法”)的角度证明了{ w k }的补码对于使用闭包属性的任何固定k都是CF。

首先要注意在补{ w ^ ķ }总有这样W¯¯ w ^ + 1。我们关注w 1w 2并从生成以下内容的简单CF语法开始:

大号= { 一个00 ... 0 瓦特1b 00 ... 0 w ^ 2000 ... 0 W¯¯ ķ || w ^| =n}={a0n1b 0 n k 1 1 }

例如,对于k = 3,我们有L = { ab0 一个0b 000 一个00b 00000 } G ^ 大号 = { 小号一个b 0 | a X 00 X 0 X 00 | 0 b 0 }

Then apply closure under inverse homomorphism, and union:

First homomorphism: φ(1)a,φ(0)b,φ(1)0,φ(0)0

Second homomorphism: φ(0)a,φ(1)b,φ(1)0,φ(0)0

L=φ1(L)φ1(L) is still context free

Apply closure under cyclic shifts to L to get the set of strings of length kn not of the form wk:

L=Shift(L)={uuwk|u|=kn}.

Finally add the regular set of strings whose length is not divisible by k in order to get exactly the complement of {wk}:

L{{0,1}nnmodk0}={uuwk}

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.