O seguinte contexto de linguagem é livre?
Conforme apontado por sdcvvc, uma palavra nesse idioma também pode ser descrita como a concatenação de duas palavras do mesmo comprimento cuja distância de interferência é 2 ou maior.
Eu acho que não é livre de contexto, mas estou tendo dificuldades para provar isso. Tentei cruzar esse idioma com um idioma regular (como por exemplo) e depois use o lema de bombeamento e \ ou homomorfismos, mas sempre recebo um idioma muito complicado para caracterizar e escrever baixa.
Respostas:
Nota [2019-07-30] A prova está errada ... a pergunta é mais complicada do que parece.
Após uma tentativa fracassada aqui, é outra idéia.
Se cruzarmos com o idioma regular , obteremos um idioma CF.L eur e g= 0∗10∗10∗10∗
Talvez possamos ter mais sorte se usarmos (uma string com exatamente 4 1s).eu′r e g= 0∗10∗10∗10∗10∗
Seja , informalmente se puder ser dividido em duas metades, de modo que a metade contenha exatamente ou ambas as metades contenham s mas suas posições não coincidem.eu1 1= L ∩ L′r e g w ∈ L1 1 { 0 , 1 , 3 , 4 } 1 s 1 1
Suponha que seja CF e seja sua gramática na forma normal de Chomsky, e deixeL1 G
Nós temos(comprimento par)|u|=|v| d(u,v)≥2
Se restringirmos nossa atenção às maneiras pelas quais os quatro 1s de podem ser gerados, teremos os três casos mostrados na parte superior da figura 1. A parte central da figura 1 mostra o primeiro caso (mas os outros são semelhantes) .w
Figura 1 (a imagem completa pode ser baixada aqui )
Se escolhermos e , vemos que os zeros entre os dois pares de 1s devem ser bombeáveis independentemente (nós vermelhos na figura): em particular, para suficientemente grandes , obtemos um nó não terminal duplicado em uma subárvore interna (nó X na figura 2) ou uma subsequência repetida no caminho para o primeiro ou o segundo 1 (nó Y na figura 2). Note-se que a Figura 2 é um pouco simplificado: não pode ser mais nodos não-terminais entre os dois s, e também entre os dois ( , mas com que produz apenas 0s à direita do primeiro 1).a=e,c=2a b,d≫a b≫a X Ys Y→...→Zi→...Y Zi
Figura 2
Portanto, podemos corrigir um arbitrário , em seguida, escolher suficientemente grande para obter um nó bombeável independentemente na sequência de zeros entre o primeiro e o segundo . Para a sequência de zeros entre o terceiro e o quarto 1, podemos escolher . Mas é bombeável independentemente, de modo que existe uma substring bombeável , ou seja, tal que e . A string que obtemos é:a=e=k,c=2a b 1 d=b!+b 0 b p ≤ b y b = x y z , | y | = p , | x |
0b p≤b y b=xyz,|y|=p,|x|≥0,|z|≥0 xyiz=b!+b
mas . Portanto, não é CF e, finalmente, não é CF.w′∉L1 L1 L
Se a prova estiver correta (???), ela poderá ser estendida para todos os idiomasLk={uv:|u|=|v|,d(u,v)≥k},k≥2
fonte
Após duas tentativas fracassadas, que foram reprovadas por @Hendrik Jan (obrigado), aqui está outra, que não tem mais sucesso. A @Vor encontrou um exemplo de uma linguagem CF determinística em que a mesma construção seria aplicada, se correta. Isso permitiu identificar um erro na ancoragem da string na aplicação do lema. O próprio lema não parece estar errado. Esta é claramente uma construção simplista demais. Veja mais detalhes nos comentários.y
O idioma não é livre de contexto.L={uxvy∣u,v,x,y∈{0,1}∗{ϵ} , ∣u∣=∣v∣ , u≠v , ∣x∣=∣y∣ , x≠y }
É útil ter em mente a caracterização que d é a distância de Hamming, proposta por @sdcvvc. O que é preciso pensar são duas posições selecionadas em cada meia corda, de modo que os símbolos correspondentes sejam diferentes.L={uv:|u|=|v|,d(u,v)≥2}
Então você considera uma sequência tal que e são pares. É claramente na linguagem L, cortando e em qualquer lugar entre os dois 1 de. Queremos bombear essa corda na primeira parte entre os , para que ela se torne que não deveria estar no idioma. i < j i + j u x 10 j 10 j10i10j i<j i+j u x 10j10j
Primeiro tentamos usar o lema de Ogden , que é como o lema de bombeamento, mas se aplica a ou mais símbolos distintos marcados na corda, sendo o comprimento de bombeamento para símbolos marcados (mas o lema pode bombear mais porque também pode bombear símbolos não marcados). O comprimento marcado de bombeamento depende apenas do idioma. Essa tentativa falhará, mas a falha será uma dica.p pp p p
Podemos então escolher e marcar os símbolos na primeira sequência de . Sabemos que nenhum dos dois 1s estará na bomba, porque ele pode bombear uma vez (expoente 0) em vez de bombear. E bombear os 1s nos tiraria do idioma.ii=p i
No entanto, poderíamos bombear os dois lados do segundo 1 tão rápido ou até mais rápido no lado direito, para que o segundo 1 nunca atravessasse o meio da corda. Além disso, o lema de Ogden não fixa um limite superior ao tamanho do que está sendo bombeado, de modo que não é possível organizar o bombeamento para obter o 1 mais à direita exatamente no meio da corda.
Usamos uma versão modificada do lema, aqui chamada Nash's Lemma, que pode lidar com essas dificuldades.
Primeiro precisamos de uma definição (provavelmente tem outro nome na literatura, mas não sei qual - a ajuda é bem-vinda). Diz-se que uma corda é um apagamento de uma corda se for obtida de apagando símbolos em . Veremos .v v v u ≺ vu v v v u≺v
Lema de Nash: Se é uma linguagem livre de contexto, existem dois números e modo que, para qualquer string de comprimento pelo menos em , e toda forma de “marcar” ou mais de as posições em , podem ser escritas como com a cadeia , , , , , de modo quep > 0 q > 0 w P L p w w w = u x y zL p>0 q>0 w p L p w w u x y z vw=uxyzv u x y z v
Prova : semelhante à prova do lema de Ogden, mas as subárvores correspondentes às seqüências e são podadas para que elas não contenham nenhum caminho com o dobro do mesmo não terminal (exceto as raízes dessas duas subárvores). Isso necessariamente limita o tamanho das cadeias geradas e por uma constante . As cadeias e , para , correspondentes a uma versão não podada da árvore, são usadas principalmente com para simplificar a contabilidade quando o lema é aplicado.x z x z y Q x J z j j ≥ 0 j = 1y xz x^z^ y^ q xj zj j≥0 j=1
Modificamos a tentativa de prova acima, marcando símbolos mais à esquerda 0, mas eles são seguidos por símbolos 0 para garantir que bombeemos na parte esquerda da string, entre os dois 1s. Isso totaliza 0's entre os (na verdade seria suficiente, pois o 1 mais à direita não pode estar em , o que permitiria removê-lo simplesmente).2 q i = p + 2 q i = p + q zp 2q i=p+2q i=p+q z^
O que resta é ter escolhido para que possamos bombear exatamente o número certo de zeros para que as duas sequências sejam iguais. Mas até agora, a única restrição em j é ser maior que i . E também sabemos que o número de 0s que são bombeados em cada bombeamento está entre 1 e q. Então, seja h produto dos primeiros q inteiros. Nós escolhemos j = i + h .j j i h q j=i+h
Portanto, como o incremento de bombeamento - seja o que for - está em [ 1 , q ] , ele divide h . Seja k o quociente. Se bombearmos exatamente k vezes, obteremos uma sequência 10 j 10 j que não está no idioma. Portanto, L não é livre de contexto.d [1,q] h k k 10j10j
.
Eu acho que nunca verei
Uma corda adorável como uma árvore.
Pois, se não tiver uma análise,
A corda é apenas uma farsa
fonte
fonte