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 F ⊆ Q 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 0QF⊆ Q
S→ # 1 Qf#para todos .Qf∈ QF
Da mesma forma, terminamos quando "atingimos" o estado inicial na posição correta, ou seja, no primeiro símbolo:
# a Q0 0→ # apara todos .a ∈ Σ
A tradução das transições de estado reais é simples:
a Qa Q ba b Q→ c Q′ para um , c ∈ Σ ∧ ( um , Q , N) ∈ δ( c , Q′)→ a c Q′ for a,b,c∈Σ∧(b,Q,L)∈δ(c,Q′)→cQ′b 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Σ