汉明距离等于或大于2的等长单词对的语言是否与上下文无关?


26

以下语言上下文是否免费?

L={uxvyu,v,x,y{0,1}+,|u|=|v|,uv,|x|=|y|,xy}

如sdcvvc所指出的,该语言中的单词也可以描述为汉明距离为2或更大的两个相同长度单词的串联。

我认为它不是上下文无关的,但是我很难证明这一点。我尝试将此语言与常规语言(例如)相交, 然后使用抽引引理和\或同态性,但是我总是得到一种过于复杂的语言,难以描述和编写下。 0101


您是否尝试泵送字符串?0u1x1u0x
帕尔GD

是的,但是我没有从语言中抽出这个字符串(这并不意味着这是不可能的,只是我没有这样做)。
罗伯特777

1
@PålGD,您可能需要一种“标记”作品的方法,例如1u01x01u01x0
vonbrand

8
该语言可以表示为,其中是汉明距离。请注意,如果我们将2替换为1,则它是上下文无关的cs.stackexchange.com/questions/307),但此处使用的技巧将不起作用。我个人认为它不是上下文无关的。{uv:|u|=|v|,d(u,v)2}d
sdcvvc 2013年

1
@sdcvvc:是的,一个将划分为以便其中一个不同的位在,另一个在。我站得住了。uuxux
安德拉斯·萨拉蒙

Answers:


7

注意[2019-07-30]证明是错误的...问题比听起来更复杂。

在尝试失败之后,这是另一个想法。

如果我们将与常规语言相交,我们将获得CF语言。LLreg=0101010

如果我们使用(一个正好为4 1的字符串),也许我们会有更多的运气。Lreg=010101010

令,如果可以将分成两半,则非正式地将设为,这样一半就正好包含 或两个半都包含两个,但位置不匹配。L1=LLregwL1{0,1,3,4} 1s1

假设为CF,令为Chomsky范式的语法,并令L1G

w=uv=0a10b10c10d10eL1

我们有(偶数长度)和|u|=|v|d(u,v)2

如果将注意力集中在的四个1的生成方式上,我们将在图1的顶部显示三种情况。图1的中央部分显示了第一种情况(但其他情况类似)。 。w

在此处输入图片说明
图1(完整图片可在此处下载

如果我们选择和我们会看到两对1之间的零必须是可独立泵浦的(图中的红色节点):特别是对于足够大的,我们会在内部子树上获得一个重复的非终端节点(图2中的节点X),或者在通向第一个或第二个1的路径中(图2中的节点Y)重复一个子序列。请注意,图2进行了一些简化:两个之间以及两个之间可以有更多的非终端节点(但仅产生第一个1的右侧为0)。a=e,c=2ab,dabaXYsY...Zi...YZi

在此处输入图片说明
图2

因此,我们可以确定任意,然后选择足够大的以得到第一个和第二个之间的零序列上的可独立泵送的节点。对于第三个和第四个1之间的零序列,我们可以选择。 但是是可独立泵送的,因此有一个可泵送子串,即和。我们得到的字符串是:a=e=k,c=2ab1d=b!+b0 b p b Ŷ b = X ý ž | y | = p | x | 0 | z | 0 X Ŷ Ž = b + b
0bpbyb=xyz,|y|=p,|x|0,|z|0xyiz=b!+b

w=0k10b!+b102k10b!+b10k

但是。因此,不是CF,最后不是CF。wL1L1L

如果证明正确(???),则可以扩展到每种语言Lk={uv:|u|=|v|,d(u,v)k},k2


恐怕赏金将在我们实际验证此证明之前失效,因此,除非在接下来的4小时内出现任何严重信息,否则这是迄今为止最好的尝试。
jmite 2013年

@jmite:不用担心,它很有可能像上一次那样是错误的尝试(持续了大约30分钟,然后才发现一个小错误):-) :-)
Vor

为什么要区分大小写?语法中的分支与单词的两半无关。但是我认为这并不重要;如果证明有效,则不需要区分大小写。查看假定的语法并使用Pumping引理的证明代替引理本身是一个不错的技巧(应该更频繁地执行此操作)。我有一个(真正的)关注点:如果泵送子串,则会得到;我看不出您如何到达。不要以为应该损害证明,但最好检查一下。另外,您可能需要弄清楚一些符号(和错别字)。0 b + p i 1 b + b 0b0b+p(i1)b+b!
拉斐尔

1
@Raphael:感谢您的评论。也许我错了,但是如果您选择目标长度那么对于每个抽水长度,字符串都可以分解为并可以抽水到,实际上在您的示例中p肯定会除以,因此有一个,其中,但原始字符串长度为,因此总抽运长度为。我记得使用奥格登引理进行的几次练习中的内容,现在我将仔细检查它们。p 0 b 0 X Ý Ž| X Ŷ Ž | = b | ÿ | = p b X Ŷ Ž = b + b b i 1 p i 1 = b b | X ý -b+b!p0b0xyz,(|xyz|=b,|y|=pb)xyiz=b+b!b!(i1)p(i1)=b!b|xy(i1)z|=b+b!

@Raphael:...我在任何地方都找不到证明,只有Zach Tomaszewski的一篇论文证明的补码是CF(请参阅问题),所以也许是新结果(尽管很简单);对于包含有限数量的特定符号且字符串之间具有任意长度的子字符串的语言,可以推导出泵激式定理。Ldup={ww}
2013年

2

经过2次失败的尝试后,@ Hendrik Jan(谢谢)拒绝了尝试,这是另一次尝试,但没有成功。@Vor找到了确定性CF语言的示例,如果正确的话,可以使用相同的构造。这允许在引理应用中识别字符串锚定中的错误。引理本身似乎没有错。这显然太简单了。在评论中查看更多详细信息。y


语言不是上下文无关的。L={uxvyu,v,x,y{0,1}{ϵ} , u∣=∣v , uv , x∣=∣y , xy }

记住特征化 很有帮助,其中d是@sdcvvc提出的汉明距离。人们需要考虑的是每个半串中的两个选定位置,以使相应的符号不同。L={uv:|u|=|v|,d(u,v)2}

然后,考虑一个字符串,使得和为偶数。通过将和截去两个1之间的任意位置,显然是语言L。我们想将该字符串 1到1之间的第一部分,这样它将变成,这不应该是该语言的语言。 i < j i + j u x 10 j 10 j10i10ji<ji+jux10j10j

我们首先尝试使用Ogden引理,它类似于抽运引理,但适用于在字符串上标记的或多个可分辨符号,是标记符号的抽运长度(但引理可以抽运更多,因为它也可以抽运未标记的符号)。泵送标记长度仅取决于语言。该尝试将失败,但是失败将是提示。p pppp

然后,我们可以选择并在 0的第一个序列上标记符号。我们知道两个1都不在泵中,因为它可以抽出一次(指数0)而不是抽入。而抽出1会使我们脱离语言。i=pi

但是,我们可以在第二个1的两侧以同样的速度甚至在右侧更快地进行抽水,以使第二个1永远不会越过弦的中间。而且,奥格登的引理并没有为被抽水的大小设定上限,因此无法组织抽水以使最右边的1准确地穿过琴弦的中部。

我们使用引理的修改版本,这里称为纳什引理,可以处理这些困难。

我们首先需要一个定义(它可能在文献中有另一个名字,但我不知道哪个-欢迎帮助)。一个字符串被说成是一个擦除一字符串的当且仅当它是从获得通过在擦除符号。我们将注意。v v v ü vuvvvuv

纳什的引理: 如果是上下文无关的语言,则存在两个数字和这样对于长度为的任何字符串至少在为,并且每种方式“标记”或更多,的位置可以写成并带有字符串,,,,,这样p > 0 q > 0 w p L p w w w = u x y z v u x y z vLp>0q>0wpLpwww=uxyzvuxyzv

  1. xz至少有一个标记位置,
  2. pxyz最多具有标记位置,并且p
  3. 有3个字符串,和这样 Ÿ žx^y^z^
    1. ýÿ žžx^x,,,y^yz^z
    2. 1 | ÿ | q1≤∣x^z^∣≤q,和1≤∣y^∣≤q
    3. 大号0 Ĵ 0uxjx^iy^z^izjv对于每个和每个在中。Li0j0

证明:类似于Ogden引理的证明,但是修剪了与字符串和对应的子树,以使它们不包含具有两倍相同非终结点的任何路径(这两个子树的根除外)。这必然将生成的字符串和的大小限制为常数。对于,对应于树的未修剪版本的字符串和主要与一起使用,以简化应用引理时的记帐。X ž X Ž ý q X Ĵ Ž Ĵ Ĵ 0 Ĵ = 1yxzx^z^y^qxjzjj0j=1

我们通过将最左边的符号标记为0来修改上面的证明尝试,但是在它们后面跟随符号0以确保我们在字符串的左侧部分(两个1之间)抽水。这使得在1之间总共有0(实际上就足够了,因为最右边的1不能在,这将允许简单地将其删除)。2 q = p + 2 q = p + q žp2qi=p+2qi=p+qz^

剩下的就是选择了以便我们可以准确地泵送正确数量的0,以使两个序列相等。但是到目前为止,对的唯一约束是大于。而且我们也知道,每次抽水时抽水的0的数量在1到q之间。因此,令为前整数的乘积。我们选择。j i h q j = i + hjjihqj=i+h

因此,由于泵浦增量(无论是多少)都在,因此将除以。令为商。如果我们恰好抽了次,我们得到的字符串不在语言中。因此,L不是上下文无关的。d[1,q]hkk10j10j

我想我永远都不会看到
一串可爱的树。
因为如果没有解析,则
字符串是零,而是闹剧


但是请注意,下半部分的传递将反向读取堆栈。这似乎意味着两个位置在两个半部分中都处于相同位置,但是相反吗?
Hendrik 2013年1

你是对的...我很无聊...现在我知道是什么困扰着我。
babou 2013年

我认清了这个论点(因为当我尝试自己时,我无法使其起作用)。
Hendrik 2013年1

我应该留下这个错误答案吗?我认为这在某种程度上有所帮助,因为它使问题可疑地类似于。问题在于该站点的规则并非旨在鼓励错误的讨论结果(我是说我比其他任何人都不会喜欢投票)。aibjckaibjck
babou 2013年

@HendrikJan我又傻了吗?(顺便说一句,感谢您的讨论)
babou 2013年

-1

通过这个问题,我认为是无上下文的,并且由以下语法 LSAXBYBYAXA00A00A11A01A1B10B00B11B01B1X00X00X11X01X1Y10Y00Y11Y01Y1


4
这是不正确的。您不能保证AX的长度与BY相同。例如,您的语法生成不是原始语言的S-> AXBY-> A011-> 0A1011-> 001011。同样,符号A和X生成相同的语言,对于B和Y则相同。它们可以合并。
sdcvvc 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.