La máquina de Turing - users.dsic.upv.esusers.dsic.upv.es/asignaturas/facultad/tal/turing.pdf · 1...

23
La máquina de La máquina de Turing Turing José M. Sempere Departamento de Sistemas Informáticos y Computación Universidad Politécnica de Valencia David David Hilbert Hilbert (1862, Rusia (1862, Rusia – 1943, Alemania) 1943, Alemania) Matemático que aportó diversos resultados de carácter fundamental (i.e. “espacios de Hilbert”) En 1900 durante el Segundo Congreso Internacional de las Matemáticas en Paris formuló su famosa lista de 23 problemas esenciales para el progreso en las matemáticas. Destacamos el problema número 23 que fue un detonante en el progreso en las ciencias de la computación. Podemos expresarlo como sigue “ ¿ Existe alguna formalización efectiva de las matemáticas ? Es decir, ¿ existe algún sistema que permita expresar cualquier proposición matemática en forma simbólica y que habilite su demostración mediante un puro cálculo ?”

Transcript of La máquina de Turing - users.dsic.upv.esusers.dsic.upv.es/asignaturas/facultad/tal/turing.pdf · 1...

1

La máquina de La máquina de TuringTuring

José M. Sempere

Departamento de Sistemas Informáticos y ComputaciónUniversidad Politécnica de Valencia

David David HilbertHilbert (1862, Rusia (1862, Rusia –– 1943, Alemania)1943, Alemania)

Matemático que aportó diversos resultados de carácter fundamental (i.e. “espacios de Hilbert”)

En 1900 durante el Segundo Congreso Internacional de las Matemáticas en Paris formuló su famosa lista de 23 problemas esenciales para el progreso en las matemáticas.

Destacamos el problema número 23 que fue un detonante en el progreso en las ciencias de la computación. Podemos expresarlo como sigue

“ ¿ Existe alguna formalización efectiva de las matemáticas ?Es decir, ¿ existe algún sistema que permita expresar cualquier proposiciónmatemática en forma simbólica y que habilite su demostración mediante un puro cálculo ?”

2

KurtKurt GödelGödel (1906, (1906, Aust.HungriaAust.Hungria –– 1978, USA)1978, USA)

Matemático. Su principal área de estudio se centra en los “sistemas axiomáticos de las matemáticas” influenciado por el trabajo de Russell

En 1932 publica su resultado más notable: El Teorema de Incompletitud

“En cualquier sistema axiomático de las matemáticas existen proposiciones que no pueden demostrarse como ciertas o falsas”

AlonzoAlonzo ChurchChurch (1903, USA (1903, USA –– 1995,USA)1995,USA)

Matemático. Su principal área de estudio se centra en la lógicamatemática, la teoría de la recursión y la informática teórica (“theoretical computer science”).

En 1930 crea el λ-cálculo que fundamenta algunos de los paradigmas de programación actuales.

Fue supervisor de doctorado de Kleene y Turing.

Su resultado más celebrado es el conocido como Teorema de Church (1936):

“No existe un procedimiento de decisión para el cálculo proposicional completo”

3

StephenStephen KleeneKleene (1909, USA (1909, USA –– 1994, USA)1994, USA)

Matemático. Su principal área de estudio se centra en la teoría de los algoritmos y las funciones recursivas.

Propone una definición sencilla y fundamental de las funciones recursivas que ayudaron a una mejor comprensión de los sistemas axiomáticos de primer orden de Gödel.

Sus resultados más notables permitieron establecer qué funciones podían ser computables y también permitieron establecer grados en las funciones no computables (i.e. la “Jerarquía Aritmética”)

EmilEmil Post (1897, Polonia Post (1897, Polonia –– 1954, USA)1954, USA)

Matemático. Demostró la completitud y consistencia del cáculoproposicional propuesto por Russell y Whitehead en sus “Principia Mathematica”.

Post descubrió con antelación algunos de los resultados que más tarde publicarían Gödel, Church y Turing.

En 1936 propone la “máquina de Post” que incluye la noción de programa en un autómata.

En 1947 demuestra como irresoluble el problema de “palabras de un semigrupo” propuesto por Thue en 1914 dando lugar al famoso “Problema de la Correspondencia de Post”.

4

Alan Alan TuringTuring (1912, Inglaterra (1912, Inglaterra –– 1954, Inglaterra)1954, Inglaterra)

Matemático. Sus áreas de trabajo son múltiples e incluyen los estudios de algunos resultados de Russell y Gödel en relación con el problema 23 de Hilbert.

En 1936 publica su famoso trabajo sobre decidibilidad en el que propone su más notable modelo matemático: la “máquina de Turing”

Durante la II Guerra Mundial, Turing trabajó en Bletchley Parkpara la Escuela Estatal de Códigos y Cifras . Su trabajo más notable durante esta época fue el criptoanálisis de los códigos de la máquina “Enigma” alemana. Diseñó una máquina que resolvió con éxito tal problema: la “bomba de Turing”

En 1950 publicó su trabajo sobre “Máquinas que Computan e Inteligencia”, proponiendo el famoso “test de Turing” para discernir si un computador puede llegar a ser inteligente.

La máquina de La máquina de TuringTuring: El modelo : El modelo determinista determinista (I)(I)

controlfinito

cinta de lectura/escritura

a1 a2 a3 a4 a5 a6 B B

q

Un movimiento de la máquina implica:(a) Cambiar el estado del control finito(b) Escribir un símbolo en la celda analizada(c) Mover la cabeza de cinta una celda a la izda. o a la dcha.

Un movimiento de la máquina depende del estado del control finito y del símbolo analizado por la cabeza de cinta

cabeza de cinta

5

La máquina de La máquina de TuringTuring: El modelo : El modelo determinista determinista (II)(II)

a1 a2 a3 a4 a5 a6 B B

q

M = (Q, Σ, Γ, δ, q0, B, F)

δ: Q × Γ → Q × Γ × {L, R}

descripción instantánea

α β

α q β = a1 a2 a3 q a4 a5 a6

descripción instantánea

α

a1 a2 a4 a5 a6 B B

q α q β = a1 a2 B a4 a5 a6 q B

B

β

a1 a2 a4 a5 a6 B B

q α q β = q a1 a2 B a4 a5 a6

B

6

transiciones entre descripciones instantáneas

a1 a2 a4 a5 a6 B B

q D1 = a1 a2 B q a4 a5 a6

B

a1 a2 Y a5 a6 B B

p D2 = a1 a2 B Y p a5 a6

B

a1 a2 a5 a6 B B

p D3 = a1 a2 p B Y a5 a6

B Y

D1 D2 sii δ(q, a4) = (p, Y, R)M

D1 D3 sii δ(q, a4) = (p, Y, L)M

transiciones entre descripciones instantáneas

Di Di+k sii (a) Di = Di+k

(b) ∃ Di+1 Di+2 ... Di+k-1 1 ≤ k

Di Di+1 Di+2 ... Di+k-1 Di+k

MM* es la clausura reflexiva y transitiva de la relación

M*

M M MM M

7

Condición de parada

L(M) = { w ∈ Σ* : q0 w α q β, q ∈ F, αβ ∈Γ* }

Una máquina de Turing M estará en movimiento siempre que pueda aplicar una transición de la función δ o no realice ningúnmovimiento a la izquierda del límite de la cinta.Asumimos que en la función δ nunca se definen movimientosa partir de estados finales.

M*

Descripción instantánea inicial

Lenguaje aceptado por la máquina MM = (Q, Σ, Γ, δ, q0, B, F)

w1 w2 w3 ... ... wn B B

q0

wq0 w

Ejemplo 1 L(M) = { 0n1n : n ≥ 1 }

M = ({q0, q1, q2, q3, q4}, {0, 1}, {0, 1, X, Y, B}, δ, q0, B, {q4})

-----------------------------------q4

(q4,B,R)(q3,Y,R)---------------------q3

-------(q2,Y,L)(q0,X,R) -------(q2,0,L)q2

-------(q1,Y,R)-------(q2,Y,L)(q1,0,R)q1

-------(q3,Y,R)--------------(q1,X,R)q0

BYX10

8

La máquina de Turing como calculadora de funciones

M calcula la función f : Zn → Zm sii M para tras la computación

q0 cod(x1, x2, ..., xn) α q β αβ = cod(f(x1, x2, ..., xn))

Trabajamos con funciones parciales enteras f : Zn → Zm

M*

Codificación de los valores de dominio y rango

M como calculadora de funciones

M = (Q, {0,1}, Γ, δ, q0, B, ∅)

Dada la tupla de valores enteros positivos (x1, x2, ..., xn) Definimos la función de codificación binaria

cod(x1, x2, ..., xn) = 0x1 1 0x21 ... 1 0xn

cod(1,2,3) = 01001000 cod(0,3) = 1000cod(2,0,3) = 0011000 cod(0,0) = 1

Ejemplo 2m – n si m ≥ n

resta(m, n) = 0 si m < n

M = ({q0, q1, q2, q3, q4, q5, q6}, {0, 1}, {0, 1, B}, δ, q0, B, ∅)

---------------------q6

(q6,B,R)(q5,B,R)(q5,B,R)q5

(q6,0,R)(q4,B,L)(q4,0,L)q4

(q0,B,R)(q3,1,L)(q3,0,L)q3

(q4,B,L)(q2,1,R)(q3,1,L)q2

-------(q2,1,R)(q1,0,R)q1

-------(q5,B,R)(q1,B,R)q0

B10

9

Lenguajes y funciones computables

Un lenguaje diremos que es

recursivamente enumerable si existe una máquina de Turing M tal que L(M) = L. Define la clase Lr.e.

recursivo si existe una máquina de Turing M tal que L(M)=L y M para ante cualquier entrada. Define la clase Lrec

Lrec ⊂ Lr.e.

Una función es computable si puede ser calculada por una máquina de Turing.

El conjunto de funciones computables coincide con el de las funciones recursivas

Si una función es computable parcial, la máquina que la calcula puede no parar, o parar con una salida indefinida, para aquellos valores en los que la función no esté definida.

Técnicas de construcción de máquinas de Turing (I)

Almacenamiento en el control finito

Se dota al control finito de una memoria finita capaz de almacenar información limitada.

M = (Qk, Σ, Γ, δ, q0’, B, F)

(a) Almacenamiento de una tupla de k estados

(b) Almacenamiento de una tupla de k símbolos

M = (Q × Γk, Σ, Γ, δ, q0’, B, F)

estado [q1, q2, ..., qk]

q0’ = [q0, q0, ..., q0]

estado [qi, a1, ..., ak]

q0’ = [q0, B, ..., B]

(c) Almacenamiento de otra información

Último movimiento aplicado, primer símbolo de la cadena de entrada, etc.

10

Técnicas de construcción de máquinas de Turing (II)

Pistas múltiples (multipistas)

La cinta almacena en cada celda un vector k dimensional de símbolos a los que se accede simultáneamente.

M = (Q, Σ × Bk-1, Γk, δ, q0, B’, F)

B’ = [B, B, ..., B]q0

pista 1pista 2

pista k

δ: Q × Γk → Q × Γk × {L, R}

cadena inicial de entradaw = [w1,B, ..., B] [w2, B, ..., B] ... [wn, B, ..., B]

w1 w2 wn BB

B

B

B

B

B

B

B

------

---

Técnicas de construcción de máquinas de Turing (III)

Subrutinas

Una subrutina es un subconjunto de movimientos de la función δ que sepuede utilizar igual que en algunos lenguajes de programación.

Paso de control Se utiliza almacenamiento en el control finito

[qact, qin, qfin]

Paso de variablesSe utiliza almacenamiento en control finito o bien multipistas

RecursividadUna subrutina puede llamarse a sí mismaLa pila de recursividad puede habilitarse en una pista

11

Modificaciones equivalentes al modelo determinista básico (I)

Cinta infinita en ambos sentidos

M = (Q, Σ, Γ, δ, q0, B, F)

Configuración instantánea αqβαβ es el contenido de cinta desde el símbolo no blanco más a la izquierda hasta el símbolo no blanco más a la derecha

w1 w2B B

q0

B wn...

w

Carga inicial q0ww se carga en cualquier porción de la cinta con la cabeza situada en su símbolo más a la izquierda

Teorema Para cualquier máquina de Turing M1 con cinta infinita en ambos sentidos existe otra equivalente M2 con cinta limitada por la izquierda

M2 = (Q×{U,D} ∪{q1}, Σ×B, Γ×(Γ∪{¢}), δ2, q1, [B,B], F×{U,D})

w1 w2B B

q0

B wn...

w

q0

w1 w2 Bwn...¢ B...B B

pista superior U

pista inferior D

M1

M2

M1 = (Q, Σ, Γ, δ1, q0, B, F)

δ2(q1, [x,B]) = ([qi,U], [y, ¢], R) sii δ1(q0, x) = (qi, y, R) δ2(q1, [x,B]) = ([qi,D], [y, ¢], R) sii δ1(q0, x) = (qi, y, L)

12

Modificaciones equivalentes al modelo determinista básico (II)

Máquina multicinta

M = (Q, Σ, Γ, δ, q0, B, F) δ: Q × Γk → Q × Γk × {L, R}k

q

w1 w2B BB wn...

x1 x2B BB xm...

y1 y2B BB yj...

cinta 1

cinta 2

cinta k

Máquina multicinta

Un movimiento de la máquina multicinta implica:(a) Cambiar el estado del control finito(b) Escribir un símbolo en cada una de las celdas analizadas(c) Mover cada cabeza de cinta una celda a la izda. o a la dcha.

de forma independiente

Un movimiento de la máquina multicinta depende del estado del control finito y de los símbolos analizados por cada cabeza de cada cinta

α1 q β1 # α2 q β2 # ... # αk q βk

descripción instantánea

carga inicial q0w# Bq0B# ... #Bq0B

w se carga en la cinta 1 y el contenido del resto de las cintas es blanco

Para el cálculo de funciones, el valor de la función se almacena enla cinta 1

13

Teorema Para cualquier máquina de Turing M1 con k cintas existe otra equivalente M2 con una sola cinta

M1 = (Q, Σ, Γ, δ1, q0, B, F)

w1 w2B BB wn...

x1 x2B BB xm...

y1 y2B BB yj...

cinta 1

cinta 2

cinta k

w1 w2 Bwn...

B...B Bx1 x2 xm...

...B B

y1 y2 yj-2...

B...B B

~

~xm-1

~

B

yj-1 yj

B

cinta 1 (dos pistas)

cinta 2 (dos pistas)

cinta k (dos pistas)

M2

Teorema Para cualquier máquina de Turing M1 con k cintas existe otra equivalente M2 con una sola cinta

M1 = (Q, Σ, Γ, δ1, q0, B, F)

M2 = (Q×Γk×{0, ..., k}, Σ × B2k-1, (Γ∪ {~})2k, δ2, q1, B’, F ×Γk×0 )

q1 = [q0, B, ..., B, 0]

Para iniciar la simulación de un movimiento de M1, la máquina M2 se sitúa en el símbolo marcado más a la izquierda.

La simulación de un movimiento de M1 consiste en recorrer la cinta de izquierda a derecha almacenando los símbolos marcados y de derecha a izquierda moviendo las marcas de los símbolos y cambiando los símbolos anteriormente marcados.

B’ = [B, ..., B]

14

Modificaciones equivalentes al modelo determinista básico (III)

Máquina no determinista

M = (Q, Σ, Γ, δ, q0, B, F)

δ: Q × Γ → P(Q × Γ × {L, R})

δ(q,a) = {(p1, a1, z1), ..., (pm, am,zm)} zi ∈{L,R}

Llamamos grado de indeterminismo de la máquina M a la aridad máxima de la función δ (el número máximo de elecciones que la máquina pueda teneren cualquier configuración)

Las transiciones entre descripciones instantáneas originan la definición delos árboles de computación

Árboles de computación

M = (Q, Σ, Γ, δ, q0, B, F)

w ∈ Σ*

q0 w

α1 q1 β1 α2 q2 β2 αj qj βj

α11 q11 β11 α1p q1p β1p αj1 qj1 βj1 αjm qjm βjm

α p β α q β

p ∈ F q ∉ F∞

M acepta w si existe un camino desde laraíz hasta una hoja con estado final

grado de indeterminismo n ⇒ aridad del árbol n

15

Teorema Para cualquier máquina de Turing M1 no determinista existe otra equivalente M2 determinista

M1 = (Q1, Σ, Γ1, δ1, q1, B, F1) M2 = (Q2, Σ, Γ2, δ2, q2, B, F2)

Dada una cadena w, para comprobar si w es aceptada por M1 basta con recorrer enanchura su árbol de computación. Si w es aceptada se llegará a una descripción instantánea de aceptación.

Una secuencia de computación será una secuencia finita de dígitos enteros i1 i2 ... imdonde ij ∈ {1, .., n}. Cada dígito indica la posible elección de movimiento que seefectúa en M1 (ej. 12232 significa elegir el movimiento 1, luego el 2, luego el 2, luegoel 3 y luego el 2).

Una secuencia de computación es factible si todos y cada uno de sus movimientos se pueden aplicar en la máquina M1.

Una secuencia de computación factible es de aceptación si el último estado al que llega la máquina M1, de acuerdo con la secuencia, es un estado final. En cado contrario la secuencia de computación factible es de rechazo.

(grado de indeterminismo n)

El orden lexicográfico de las secuencias de computación posibilita el recorrido enanchura del árbol de computación.

q0 w

α1 q1 β1

α p β p ∈ F

α2 q2 β2

αn qn βn

Si w es aceptada por M1 existe una secuencia decomputación que conduce a M1 hacia un estadode aceptación: i0 i1 i2 ... in

i0

i1

in

M2 genera todas las posibles secuencias de computaciónhasta encontrar aquélla que conduce a M1 hacia un estado de aceptación. Si no existe, entonces M2 nunca para.

M2

cinta de entrada w

secuencia de computación

cinta de trabajo

16

Modificaciones equivalentes al modelo determinista básico (II)

Máquina off-line

M = (Q, Σ, Γ, δ, q0, B, F)

q

w1 w2 $wn...

x1 x2B BB xm...

y1 y2B BB yj...

cinta 1(sólo lectura,

limitada)

cinta 2

cinta k

¢ w3

Teorema Para cualquier máquina de Turing M1 off-line existe otra equivalente M2 con una sola cinta

La máquina M2 puede efectuar la misma simulación que en el caso multicintapero limitando los movimientos de la cinta 1 a la izquierda de ¢ o a la derechade $ y reescribiendo siempre los mismos símbolos leídos en esa cinta

17

La tesis de Church-Turing

Cualquier modelo de computación que intente capturar el concepto de “lo que es computable” debe ser equivalente a la máquina de Turing

La noción intuitiva de función computable puede ser identificada con lade función recursiva parcial

Otros modelos de computación formulados a lo largo del tiempo

• Sistemas de Post• λ-cálculo• Máquina RAM• Máquinas cuánticas• Cálculo basado en el ADN, etc.

Un modelo de cálculo permite hipercomputación si es capaz de resolver algunos problemas que las máquinas de Turing establecen como indecidibles(Ej. máquinas de Turing con oráculos, redes de Siegelman, etc.)

La máquina de Turing como enumeradora de conjuntos

Una máquina de Turing generadora es una máquina de Turing multicintacon una cinta de salida de sólo escritura.

# w1 # w2 # ...# wn # ...

M = (Q, Σ, Γ, δ, q0, B, ∅)

La máquina no necesita cadena de entraday pierde el concepto de aceptación/rechazo eincluso el de parada

wi ∈Σ*

G(M) = {w1 , w2 , ..., wn , ... }

M

18

Basta con construir una máquina de Turing multicinta M2 que acepte el lenguajegenerado por M1

M1

Lema Todo lenguaje generado por una máquina de Turing M1 es recursivamente enumerable

M2

w

M2 simula a M1 y, cada vez que se genera una cadena wi, la compara conla cadena de entrada w. Si coinciden, para y acepta y en caso contrariosigue simulando a M1. L(M2) = G(M1)

Sea L = L(M1) un lenguaje recursivamente enumerable

M1

Lema Todo lenguaje recursivamente enumerable puede ser generado por una máquina de Turing.

Bastará con construir una máquina de Turing M2 que genere sólo aquellas cadenasque M1 acepte.

Problema: ¿ cómo se pueden establecer todas las cadenas que acepta M1 si existe elproblema de la parada ?

19

Hecho 1: Dado un alfabeto Σ el conjunto infinito de cadenas de Σ* es enumerable y el orden lexicográfico identifica cada entero con una cadena

Ejemplo Σ = {a,b} Σ* = { λ, a, b, aa, ab, ba, bb, aaa, aab, ... }

Hecho 2: El conjunto infinito formado por los pares de enteros positivos es enumerable

.....................

...(i,j)...(i,2)(i,1)(i,0)i

.....................

...(2,j)...(2,2)(2,1)(2,0)2

...(1,j)...(1,2)(1,1)(1,0)1

...(0,j)...(0,2)(0,1)(0,0)0

...j...210

Se pueden construir subrutinas en máquinas de Turing que generen Σ* y los pares de enteros (i,j)

(1) Generar (i,j)(2) Generar wi(3) Copiar wi a una cinta(4) Simular M1 ante wi durante j movimientos(5) Si M1 acepta, escribir wi en la cinta de salida de M2.

En caso contrario ir a (1)

M1M2

Σ*

(i,j)

wi

j

G(M2) = L(M1)cinta de salida

20

Si el lenguaje es infinito basta con construir una máquina de Turing multicinta M2que acepte el lenguaje generado por M1 y que pare ante cualquier entrada.

Sirve la misma construcción que para el caso de los lenguajes recursivamenteenumerables con la siguiente salvedad: M2 simula a M1 y, cada vez que se genera una cadena wi, la compara con la cadena de entrada w. Si coinciden, para y acepta y, en caso contrario, si wi > w para y rechaza y si wi < w genera la siguiente cadena.

La condición de parada queda garantizada por ser el lenguaje infinito.

Lema Todo lenguaje generado por una máquina de Turing M1 en orden lexicográfico es recursivo

L(M2) = G(M1)

Para la siguiente construcción excluiremos el caso de que el lenguaje sea finito.En este último caso se puede construir una máquina que acepte sólo las cadenasdel lenguaje y que para el resto pare y rechace (se puede hacer por casos finitos)

Sea L = L(M1) un lenguaje recursivo. La máquina M1 para ante cualquier entrada

M1

Lema Todo lenguaje recursivo puede ser generado por una máquina de Turing en orden lexicográfico.

Bastará con construir una máquina de Turing M2 que genere, en orden lexicográfico sólo aquellas cadenas que M1 acepta.

M2 genera las cadenas de Σ* en orden lexicográfico. La cadena wi se somete alanálisis de M1. Si M1 acepta wi entonces M2 la escribe en su cinta de salida.

M2 sólo genera las cadenas de L y además lo hace en orden lexicográfico.

Σ*

M2

wi

M1

21

Lenguajes recursivamente enumerables

Caracterización de los lenguajes recursivos y recursivamente enumerables(utilización de esquemas)

Mw S (w ∈L(M))

aceptora L=L(M)

M<L>o.l. (<w1#w2# ...)

generadora L=G(M)

Lenguajes recursivos

M<L> (<w1#w2# ...)

aceptora L=L(M) generadora L=G(M)

Mw

S (w ∈L(M))

N (w ∉L(M))

Máquinas binarias

Máquinas restringidas equivalentes al modelo básico

M = (Q, {0,1}, {0,1,B}, δ, q0, B, F)

Teorema Si L ⊆ (0+1)* es recursivamente enumerable entonces L es aceptado por una máquina de Turing binaria

Sea L = L(M1) con M1 = (Q1, {0,1}, Γ, δ1, q1, B, F1).

Construiremos M2 = (Q2, {0,1}, {0,1,B}, δ2, q2, B, F2) de forma que L = L(M2)

Cada símbolo de Γ se puede codificar con un código binario de k símbolos.

Q2 = Q1 × {0,1,B}k F2 = F1 × Bk q2 = [q1, B,B, ..., B]

22

M2 lee la cadena de entrada w y escribe su código en otra cinta. A partir de esemomento la simulación de M1 se efectúa de la siguiente forma:

(1) Leer k celdas de la cinta con la entrada codificada y almacenar sus símbolosen el control finito.

(2) Escribir el código del nuevo símbolo de acuerdo con la función δ1(3) Cambiar al nuevo estado de acuerdo con la función δ1(4) Moverse al comienzo del siguiente código por la derecha o por la izquierda

de acuerdo con la función δ1

M2

Γ = {a1, a2, …, an }

k = log2 n

cod(ai) ∈ {0,1}k

w1 w2 wp

w

cod(w1) cod(wp)

k celdas

Una gramática de tipo 0 se define por la tupla G=(N,T,P,S) donde las producciones de P son de la forma

α → β α∈ (N∪T)+ β ∈ (N∪T)*

Máquinas de Turing y lenguajes de tipo 0

Teorema L es un lenguaje recursivamente enumerable sii L=L(G) donde G es de tipo 0.

Relación con la jerarquía de Chomsky

L3 ⊂ L2 ⊂ L1 ⊂ L0 = Lr.e.

23

Una gramática de tipo 1 se define por la tupla G=(N,T,P,S) donde las producciones de P son de la forma

α → β α∈ (N∪T)+ β ∈ (N∪T)* |α| ≤ |β|S →λ sii S no aparece en la parte derecha de ninguna otra producción

Autómatas de memoria limitada linealmente y lenguajes de tipo 1

Teorema L es un lenguaje sensible al contexto (de tipo 1) sii L es aceptado por un ALL

Relación con la jerarquía de Chomsky

L3 ⊂ L2 ⊂ L1 = LALL ⊂ Lrec ⊂ L0 = Lr.e.

Un autómata de memoria limitada linealmente (ALL) es una máquina de Turing no determinista monocinta que satisface las dos siguientes condiciones

(1) El alfabeto de entrada incluye los limitadores ¢ y $(2) El ALL no mueve su cabeza de cinta fuera de los limitadores ni escribe sobre ellos

Se define la clase LALL