É {ww '| HamDist (w, w ')> 1} sem contexto?

13

Depois de ler a pergunta recente "O complemento de livre de contexto?" {www...}; Lembrei-me de um problema semelhante que não era capaz de refutar:

É livre de contexto?L={www,w{0,1}|w|=|w|HamDist(w,w)>1}

Aqui exigimos que as duas cordas sejam diferentes em pelo menos duas posições (a distância de Hamming deve ser maior que ).1

É livre de contexto se que (ou seja, as duas cadeias simplesmente devam ser diferentes).HamDist(w,w)1

Suspeito que a linguagem não seja livre de contexto: se a interceptarmos com o normal , obtemos casos em que um PDA deve "lembrar" duas posições na ordem inversa após atingir a metade da corda.0101010

Atualização: se cruzarmos com o , obteremos uma linguagem livre de contexto, como mostra domotorp em sua resposta; um um pouco mais complexo com (mais um para "acompanhar") ainda sugere que não deve ser livre de contexto.LR={0101010}LRR={0 01010101010}1eu

Marzio De Biasi
fonte
w w R LR é realmente mais fácil, pois são exatamente as palavras que não têm a forma (cruzadas por ). wwR
Domotorp 17/01/19
@domotorp: certo! alterado para ímpares fixos s (a menos que sua resposta possa ser adaptada também para , para qualquer ímpar fixo ){ ( 0 1 0 ) k } k1{(010)k}k
Marzio De Biasi
Um comentário final: não ajuda começar com zeros à esquerda, pois as linguagens sem contexto são fechadas para todos os tipos de mudanças cíclicas. Você pode simplesmente empurrá-los para a pilha, marcar o último com um símbolo especial, fazer o resto do algoritmo fingindo que a pilha começa lá e, no final, esvaziá-la. (Isto usa -transitions, mas que também é fácil que tais PDA são equivalentes aos sem.)ϵ
domotorp
pode ser mais simples pensar no alfabeto {0,1,2} e considerar cadeias com exatamente dois 1s e dois 2s. Não está no seu idioma se a distância entre 1s e a distância entre 2s são ambas n.
Kaveh

Respostas:

4

A interseção com length length words é livre de contexto, porque um PDA pode se lembrar de duas posições, de certa forma. De qualquer forma, vamos primeiro ver o que esta linguagem é. Seu complemento é . Portanto, . Podemos reescrever isso como .R={0 0101010}L R L = { 0 a 10 b 10 c 10 d | b = n / 2 c = n / 2 um + d = n / 2 } L = { 0 a 10 b 10 c 10 deuReu={0 0uma10b10c10db=n/2c=n/2uma+d=n/2}L={0a10b10c10dbn/2cn/2a+dn/2}L={0a10b10c10db>n/2c>n/2a+d>n/2b,c,a+d<n/2}

Os primeiros casos podem ser facilmente verificados e o quarto.3

b>n/2 : comece a colocar a pilha até o primeiro 1 e comece a pular da pilha até que não fique vazio. Depois que estiver vazio, comece novamente a colocar a pilha até chegar ao segundo 1. A partir de então, estale a pilha.

c>n/2 : O mesmo.

a+d>n/2 : comece a colocar a pilha até o primeiro 1 e comece a pular da pilha até que não fique vazio. Depois que estiver vazio, comece novamente a colocar a pilha até chegar ao terceiro 1. A partir de então, estale a pilha.

b,c,a+d<n/2 : comece a colocar a pilha até o primeiro 1 e comece a pular da pilha até que não fique vazio. Depois que estiver vazio, comece novamente a colocar a pilha até chegarmos (calculado de maneira não determinística, entre o segundo e o terceiro 1). A partir daí, estale a pilha.a+n/2

domotorp
fonte
Obrigado domotorp, estou lendo sua ideia; Eu acho que é (dois 1s na metade esquerda) une seu reverso (dois 1s na metade direita). Então, como você obtém ? { 0 a 1 0 b 1 0 c 0 c 1 0 d( n / 2 = a + b + c = c + d + 1 ) [ ( a = c ) ( c = D ) } b = n / 2 RL{0a10b10c0c10d (n/2=a+b+c=c+d+1)[(a=c)(c=d)}b=n/2c=n/2a+d=n/2
Marzio De Biasi
1 b = n / 2 c = n / 2 b + c = n / 2 a + d = n / 2 ± 1RL é que o HamDist é no máximo . Isso acontece exatamente se dois dos três jogos do 1, ou seja, um estiver na mesma posição no primeiro tempo, como o outro no segundo tempo. Se esses dois 1s são o primeiro e o segundo 1s, obtemos , se eles são o segundo e o terceiro 1s, obtemos , e se eles são o primeiro e o terceiro 1s, obtemos , ou equivalente, (onde estou trapaceando um pouco com algumas constantes 1s). 1b=n/2c=n/2b+c=n/2a+d=n/2±1
domotorp 17/01/19
Isso responde a pergunta completa?
Michaël Cadilhac
@domotorp: ok, entendi, obrigado! Outra dúvida: de (o que está ok) você escreve mas, é equivalente a: ? ( condição omitida)L R = { . . . b > n / 2 c > n / 2 b , c < n / 2 } L R = { . . . ( b < n /LR={...bn/2cn/2...}LR={...b>n/2c>n/2b,c<n/2}LR={...(b<n/2b>n/2)(c<n/2c>n/2)}a+d
Marzio De Biasi
@Michael: No. 
domotorp 17/01/19