Como pode ws com | w | = | s | e será livre de contexto, enquanto w # s não é?


9

Por que (se houver) o separador está fazendo a diferença entre os dois idiomas?#

Deixe dizer:

L={ws:|w|=|s|w,s∈{0,1}∗,w≠s}

L#={w#s:|w|=|s|w,s∈{0,1}∗,w≠s}

Aqui está uma prova e uma gramática representando como uma CFLLCFL

Abaixo, estou adicionando uma prova para L#∉CFL :

O sinal # realmente faz a diferença? Se sim, por que isso? e se não, qual das provas está errada e onde?

Prova de que L#∉CFL :

Suponha, por meio de contradição, que L∈CFL . Seja p>0 a constante de bombeamento para L garantida pelo lema de bombeamento para linguagens sem contexto. Consideramos a palavra s=0m1p#0p1m , onde m=p!+p modo s∈L . Desde |s|>p , de acordo com o lema de bombeamento, existe uma representação s=uvxyz , tal que |vy|>0 , |vxy|≤p , e uvjxyjz∈L para cada j≥0 .

Temos uma contradição por casos:

  • Se ou contêm : Então, para , obtemos que não contém , então em em contradição.vy#i=0uxz#uxz∉L
  • Se e forem deixados em : Então, para , obtemos que está no formato , onde, Assim .vy#i=0uxzw#x|w|<|x|uxz∉L

  • Se e estiverem certos em : Semelhante ao último caso.vy#

  • Se for deixado em , estará certo e: Então, para , obtemos que está no formato , onde, Assim .v#y|v|<|y|i=0uxzw#x|w|>|x|uxz∉L

  • Se for deixado em , estará certo e: Semelhante ao último caso.v#y|v|>|y|

  • Se for deixado em , estará certo e: Este é o caso mais interessante. Desde , deve estar contido na parte de , e na parte . Portanto, sustenta que e para o mesmo (de fato, deve ser esse ). Para cada , sustenta que , então se acontecer quev#y|v|=|y||vxy|≤pv1psy0pv=1ky=0k1≤k≤pk<p/2j≥0uvj+1xyj+1z=0m1p+j·k#0p+j·k1mm=p+j·k, então sustenta que em contradição. Para conseguir isso, devemos tomar , que é válido apenas se é divisível por . Lembre-se de que escolhemos, entãoeé divisível por qualquer conforme desejado.uvj+1xyj+1z∉Lj=(m−p)/km−pkm=p+p!m−p=p!p!1≤k≤p

Respostas:


7

Sua prova está correta e eu estava errado. Demorei um pouco para descobrir onde estava minha confusão, mas com a ajuda de Yuval, acho que entendi.

Vamos considerar os três idiomas

L=={xy∣|x|=|y|,x≠y},L#={x#y∣x≠y}, andL=#={x#y∣|x|=|y|,x≠y}.

Como vimos aqui , é livre de contexto. O truque é, na gramática, gerar símbolos "à direita", mas contá-los "à esquerda" mais tarde (ou vice-versa), garantindo que símbolos incompatíveis apareçam nas posições correspondentes. A condição de comprimento é trivial, pois se reduz ao comprimento uniforme. Você pode construir um NPDA com uma idéia semelhante, usando a pilha para corresponder à posição.L=

L# também é livre de contexto . A prova é ainda mais simples: os símbolos de incompatibilidade aparecem à mesma distância do resp ou do início. o separador. Comprimentos desiguais podem ser verificados separadamente; o não determinismo "escolhe" entre as duas opções.

Agora, como você mostra, não é livre de contexto. Aqui está o porquê das provas para os outros dois idiomas serem quebradas.L=#

  1. Na gramática de , se tivermos que gerar um separador no meio, não podemos "reatribuir" símbolos de "esquerda" para "direita".L=
  2. Em vez de "aceitar se comprimentos desiguais ou incompatíveis", temos que "aceitar se comprimentos iguais e incompatíveis". O não-determinismo não pode nos ajudar com o e !

Então, o que se resume, intuitivamente, é que as condições do formato " " e " " são "livres de contexto" no sentido de que podem ser verificadas com uma pilha, mas não usando controle finito. Portanto, um PDA pode fazer um, mas não ambos.| x | = | y |x≠y|x|=|y|

O PDA para "cheats", pois não verifica realmente essas condições para e ; divide a palavra de uma maneira diferente. Isso não é mais possível se você tiver o separador. x yL=xy


Adendo: Eu afirmei corajosamente que porque a CFL está fechada contra o homomorfismo inverso. Embora seja verdade que com a identidade, exceto ela exclui , isso não é relevante. ; nada pode ser dito sobre .L=∈CFL⟹L=#∈CFLf(L=#)=L=f#f−1(L=)=L#L=#


Adendo II: Observe que é trivialmente livre de contexto. Portanto, com , temos um bom exemplo de CFL não sendo fechado contra interseção.L={x#y∣|x|=|y|}L∩L#=L=#

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.