Problema de associação para determinadas classes de gramáticas irrestritas


9

Considere uma gramática arbitrária e livre de contexto sobre o alfabeto . Nas produções desta gramática, adicione duas produções fixas sem contexto : e . Chame a gramática resultante de " aumentada com as produções ".{ 0 , 1 , ¯ 0 , ¯ 1 } P ¯ 0 0 ϵ ¯ 1 1 ϵG{0,1,0¯,1¯}P0¯0ϵ1¯1ϵ G PGPGP

É possível fornecer um algoritmo que use uma gramática e uma string acima de e decida se ? s { 0 , 1 , ¯ 0 , ¯ 1 } s L ( GGPs{0,1,0¯,1¯}sL(GP)


Curiosamente, embora a resposta pareça ser "não", acho que se é regular, então também é . Essencialmente, um NFA para pode ser transformado em um para adicionando iterativamente transições sempre que você tiver caminhos ou e, finalmente, executando a eliminação de . L ( G P ) L ( G ) L ( G P ) ϵ ( s , ϵ , t ) ( s , ˉ 0 , p , 0 , t ) , ( s , ˉ 0 , p , ϵ , q , 0 , t ) , ( s , ˉ 1L(G)L(GP)L(G)L(GP)ϵ(s,ϵ,t)( s , ϵ , p , ϵ , t ) ϵ(s,0¯,p,0,t),(s,0¯,p,ϵ,q,0,t),(s,1¯,p,1,t),(s,1¯,p,ϵ,q,1,t)(s,ϵ,p,ϵ,t)ϵ
Klaus Draeger #

Sim, isso é verdade. De fato, a questão surgiu de um problema na análise de programas (coleta de lixo baseada na animação). Contornamos o problema aproximando o CFG de uma gramática fortemente regular (transformação Mohri-Nederhoff) e, em seguida, simplificando o na NFA resultante exatamente da maneira que Klaus Draeger menciona. P
Amit.

Respostas:


5

Esta classe de gramáticas é indecidível. Aqui está uma idéia aproximada de como usá-lo para emular as máquinas de Turing.

Em cada ponto, a palavra parcialmente expandida atual pareceria

[tape to the left][head][tape to the right]

Aqui:

  • P ¯ 0 ¯ 1[tape to the left] , após aplicar , contém apenas caracteres e .P0¯1¯
  • P 0 1[tape to the right] , após aplicar , contém apenas os caracteres e .P01
  • [head] é um não-terminal único, que codifica o estado do cabeçalho e o caractere na posição do cabeçalho.

Suponha que a cabeça esteja no estado e o caractere embaixo dela seja . Então a cabeça é representada por não-terminal . Se precisar fazer a transição para o estado , substitua o caractere atual por e mova para a esquerda, existem duas transições e . Se precisar mover para a direita, existem duas transições ei { 0 , 1 } S i T j S i0 T 0 j S i1 T 1 j S i¯ j T 0 ¯ 0 S i¯ j T 1 ¯ 1 [ fita para a esquerda ] [ fita para a direita ]Si{0,1}SiTjSi0T0jSi1T1jSij¯T00¯Sij¯T11¯. Em certo sentido, a cabeça precisa "adivinhar" o personagem na direção em que está se movendo, produzindo o caractere correspondente. Se o palpite estiver errado, o invariante em ou seria violado e nunca se recuperaria.[tape to the left][tape to the right]

Quando a máquina pára, a cabeça deve "consumir" sua fita nos dois lados "adivinhando" e produzindo caracteres correspondentes. Depois disso, deve produzir palavra vazia. Como resultado, a palavra vazia seria membro dessa gramática se e somente se a máquina de Turing correspondente parar.


Não tenho certeza se entendi sua redução. Aqui está minha dúvida: se a máquina de Turing fornecida tem estados, então o número de produções irrestritas necessárias para emular a máquina de Turing está relacionado a ? Mas meu problema permite apenas duas produções fixas e sem restrições. NNN
Amit.

O @ Amit.SI forneceu mais explicações sobre transições na resposta.
abacabadabacaba
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.