Como posso converter a máquina de Turing para reconhecer a linguagem

19

De acordo com este artigo da Wikipedia , gramáticas irrestritas são equivalentes às máquinas de Turing. O artigo observa que eu posso converter qualquer máquina de Turing em uma gramática irrestrita, mas mostra apenas como converter uma gramática em uma máquina de Turing.

Como, de fato, faço isso e converto a máquina de Turing, que reconhece a linguagem em uma gramática irrestrita? Tentei substituir as regras de transição por regras gramaticais, mas uma máquina de Turing também pode ter muitas configurações diferentes de estados ...eu

Ava Petrofsky
fonte

Respostas:

9

Codificamos o conteúdo da fita da máquina de Turing em formas sentenciais; um conjunto especial de não terminais codifica o estado atual. Só pode haver um deles na forma sentencial a qualquer momento, colocado à direita do símbolo que a TM está apontando no momento.

A segunda idéia crucial é que temos que reverter o processo: as TMs tomam a palavra como entrada e a convertem em ou 0 , ou elas não terminam. A gramática, no entanto, precisa gerar a palavra. Felizmente, as gramáticas são inerentemente não determinísticas, então podemos apenas "adivinhar" de onde veio o 1 que aceita ; todas as palavras que causam a aceitação da TM podem ser geradas então.10 01

Seja o conjunto de estados não-terminais; wlog deixa Q 0 ser o estado inicial não-terminal e Q FQ o conjunto de estados aceitantes não-terminais. Primeiro, precisamos de regras iniciais que gerem todas as configurações de aceitação possíveis:Q={Q0 0,...,Qk}Q0 0QFQ

S#1Qf#para todos .QfQF

Da mesma forma, terminamos quando "atingimos" o estado inicial na posição correta, ou seja, no primeiro símbolo:

#umaQ0 0#umapara todos .umaΣ

A tradução das transições de estado reais é simples:

aQcQ  for a,cΣ(a,Q,N)δ(c,Q)aQbacQ for a,b,cΣ(b,Q,L)δ(c,Q)abQcQb for a,b,cΣ(a,Q,R)δ(c,Q)

Existem algumas dificuldades técnicas para resolver; por exemplo, você precisa se livrar dos marcadores de limite no final. Isso pode ser feito gerando dois não-terminais especiais em vez de terminar, trocando-os até o fim e removendo o # junto com eles. Além disso, é necessário criar mais # sob demanda; isso requer alguma invasão das regras com d = # .###d=#

Além disso, a construção se torna um pouco mais complicada se a TM usa símbolos que não são de entrada. Nesse caso, as regras de terminação podem estar erradas: se houver símbolos de não entrada em algum lugar da fita, não geramos uma palavra adequada. Isso pode ser corrigido de maneira semelhante à remoção de : spawn de um terminal não-especial do Q 0, que é trocado para a direita e removido apenas se todos os símbolos forem de Σ .#Q0Σ

Rafael
fonte