Codificamos el contenido de la cinta de la máquina de Turing en forma de sentencias; Un conjunto especial de no terminales codifica el estado actual. Solo puede haber uno de ellos en forma de sentencia en cualquier momento, colocado a la derecha del símbolo al que apunta el TM actualmente.
La segunda idea crucial es que tenemos que revertir el proceso: los TM toman la palabra como entrada y la convierten a o 0 , o no terminan. La gramática, sin embargo, tiene que generar la palabra. Afortunadamente, las gramáticas son inherentemente no deterministas, por lo que podemos dejar que "adivine" de dónde vino el 1 aceptante ; entonces se pueden generar todas las palabras que hacen que la TM acepte.10 01
Sea el conjunto de estados no terminales; wlog deja que Q 0 sea el estado inicial no terminal y Q F ⊆ Q el conjunto de estados aceptables no terminales. Primero, necesitamos reglas de inicio que generen todas las configuraciones de aceptación posibles:Q ={ Q0 0, ... , Qk}Q0 0QF⊆Q
S→#1Qf#para todos .Qf∈QF
Del mismo modo, terminamos cuando "alcanzamos" el estado inicial en la posición correcta, es decir, en el primer símbolo:
#aQ0→#aa∈Σ
Traducir las transiciones de estado reales es sencillo:
aQaQbabQ→cQ′ for a,c∈Σ∧(a,Q,N)∈δ(c,Q′)→acQ′ for a,b,c∈Σ∧(b,Q,L)∈δ(c,Q′)→cQ′b for a,b,c∈Σ∧(a,Q,R)∈δ(c,Q′)
###d=#
#Q0Σ