是{ww'| HamDist(w,w')> 1}是否与上下文无关?


13

阅读最近的问题后,“是的补{www...}上下文无关?” ; 我记得我无法反驳的类似问题:

L={www,w{0,1}|w|=|w|HamDist(w,w)>1}上下文无关?

在这里,我们要求两个弦至少在两个位置不同(汉明距离必须大于1)。

如果我们要求它是上下文无关HamDist(w,w)1(即,两个字符串必须简单地是不同的)。

我怀疑该语言不是上下文无关的:如果我们将其与常规的0101010相交,则会 遇到PDA在到达字符串的一半后应该以相反的顺序“记住”两个位置的情况。

更新:如果我们将L与正则R={0101010}相交,我们将得到上下文无关的语言,如domotorp在他的回答中所示;一个稍微复杂的LRR={01010101010}(多一个1到“追踪”的)还是建议L不应上下文无关。


实际上是更容易的,因为它是完全不属于形式的话瓦特瓦特(由相交 - [R ')。LRwwR
domotorp

@domotorp:对!更改为固定的奇数 s(除非对于任何固定的奇数k,除非您的答案也可以适应 { 0 * 1 0 * k }1{(010)k}k
Marzio De Biasi

最后一条评论:从前导零开始无济于事,因为上下文无关的语言对于各种循环移位都是封闭的。您可以将它们推入堆栈,用特殊符号标记最后一个,然后执行算法的其余部分,假装堆栈从此处开始,最后将其清空。(这使用 -transition,但是这样的PDA等同于没有PDA的转换也很容易。)ϵ
domotorp

考虑{0,1,2}字母并考虑正好包含两个1和两个2的字符串可能会更简单。如果1s之间的距离和2s之间的距离均为n,则不是您的语言。
卡夫

Answers:


4

R={0101010偶数长字}的交集是上下文无关的,因为PDA 可以以某种方式记住两个位置。无论如何,首先让我们看看L是什么语言。它的互补物是 RL={0a10b10c10db=n/2c=n/2a+d=n/2}。因此, L={0a10b10c10dbn/2cn/2a+dn/2}。我们可以重写此为 L={0a10b10c10db>n/2c>n/2a+d>n/2b,c,a+d<n/2}

3情况可以轻松验证,第4种情况也可以轻松验证。

b>n/2:开始放入堆栈,直到第一个堆栈,然后开始从堆栈中弹出直到其为非空。清空之后,再次开始将其放入堆栈中,直到到达第二个堆栈1。然后弹出堆栈。

c>n/2:相同。

a+d>n/2

b,c,a+d<n/2a+n/2


RL{0a10b10c0c10d (n/2=a+b+c=c+d+1)[(a=c)(c=d)}b=n/2c=n/2a+d=n/2

RL是HamDist最多为。如果三个1的匹配项中的两个匹配,即一个在上半部分处于相同位置,而另一个在下半部分中处于相同位置,则会发生这种情况。如果这两个1是第一个和第二个1,那么我们得到,如果它们是第二个和第三个1,我们得到,如果它们是第一个和第三个1,我们得到,或等价地,(在这里,我用一些恒定的作弊)。1b=n/2c=n/2b+c=n/2a+d=n/2±1
domotorp

这能回答完整的问题吗?
米歇尔·卡迪哈克(MichaëlCadilhac),

@domotorp:好的,我明白了,谢谢!另一个疑问:从(可以),您写出但是,它等效于:吗?(省略条件)LR={...bn/2cn/2...}LR={...b>n/2c>n/2b,c<n/2}+ dLR={...(b<n/2b>n/2)(c<n/2c>n/2)}a+d
Marzio De Biasi

@迈克尔:号 
domotorp
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.