É sabido que o complemento de é livre de contexto. Mas e o complemento de ?
fl.formal-languages
context-free
domotorp
fonte
fonte
Respostas:
Ainda CFL eu acredito, com uma adaptação da prova clássica. Aqui está um esboço.
ConsidereL={xyz:|x|=|y|=|z|∧(x≠y∨y≠z)} , que é o complemento de {www} , com as palavras de comprimento não 0 mod 3 removidas.
SejaL′={uv:|u|≡3|v|≡30∧u2|u|/3≠v|v|/3} . Claramente, L′ é CFL, já que você pode adivinhar uma posição p considerar que u termina p/2 depois disso. Mostramos que L = L′ .
Portanto, emW , esta é a posição:
| u | + | v | / 3=3p / 2+ | w | / 3-p / 2= | w | / 3+p,
ou, em outras palavras, posição p em y . Isso mostra que você2 | u | / 3= xp≠ yp= v| v | / 3 .
Seyp≠ zp , então você seja o primeiro 32(|w|/3+p) caracteres dew , de modo queu2|u|/3 éyp ; v é o resto dew . Então:
|u|+|v|/3=2|w|/3+p
portanto, da mesma forma,v|v|/3=zp .
fonte
Aqui está a maneira como penso em resolver esse problema, com um PDA. Na minha opinião, é intuitivamente mais claro.
Uma palavrax não tem a forma www se (i) |x|≢0 (mod 3), que é fácil de verificar, ou (ii) existe algum símbolo de entrada a que difere do símbolo correspondente b que ocorre |w| posições mais tarde.
Usamos o truque usual de usar a pilha para manter um número inteirot , tendo um novo símbolo "parte inferior da pilha" Z , armazenando o valor absoluto |t| como o número de contadores na pilha e sgn ( t ) pelo estado do PDA. Assim, podemos incrementar ou diminuir t fazendo a operação apropriada.
O objetivo é usar o não determinismo para adivinhar as posições dos dois símbolos que você está comparando e usar a pilha para registrart:=|x|−3d , onde d é a distância entre esses dois símbolos.
Realizamos isso da seguinte maneira: incrementet para cada símbolo visto até que o primeiro símbolo adivinhado a seja escolhido e registre a no estado. Para cada símbolo de entrada subsequente, até você decidir que viu b , diminua t em 2 ( 1 para o comprimento da entrada e −3 para a distância). Adivinhe a posição do segundo símbolo b registre se a≠b . Continue incrementando t para os símbolos de entrada subsequentes. Aceite se t=0 (detectável por Z na parte superior) ea≠b .
O bom disso é que deve ficar completamente claro como estender isso a poderes arbitrários.
fonte
Apenas uma perspectiva diferente ("orientada para a gramática") para provar que o complemento de{wk} é CF para qualquer k fixo usando propriedades de fechamento.
Primeira nota que no complemento de{wk} sempre existe i tal que wi≠wi+1 . Focamos em w1≠w2 e começamos com uma gramática simples de CF que gera:
Por exemplo, parak=3 , temos L={ab0,a0b000,a00b00000,...} ,GL={S→ab0|aX00,X→0X00|0b0}
Em seguida, aplique o fechamento sob homomorfismo inverso e união :
Primeiro homomorfismo:φ(1)→a,φ(0)→b,φ(1)→0,φ(0)→0
Segundo homomorphism:φ′(0)→a,φ′(1)→b,φ′(1)→0,φ′(0)→0
Aplique o fechamento sob turnos cíclicos emL′ para obter o conjunto de cadeias de comprimento kn não da forma wk :
Por fim, adicione o conjunto regular de strings cujo comprimento não é divisível pork para obter exatamente o complemento de {wk} :
fonte