Tema 6: Máquina de Turing Departamento de Sistemas Informáticos y Computación DSIC - UPV http://www.dsic.upv.es – p.1/28 Tema 6: Máquina de Turing • La Máquina de Turing. • Máquinas de Turing como aceptores • Otros modelos de máquina de Turing • Máquinas de Turing como computadores de funciones • Máquinas de Turing como enumeradores • Propiedades de cierre DSIC - UPV http://www.dsic.upv.es – p.2/28 La Máquina de Turing Visión descriptiva • Cinta semi-infinita dividida en celdas • Control finito • Cabezal de lectura/escritura • En cada momento, cada celda contiene un símbolo del alfabeto de cinta • Los símbolos de la palabra inicial pertenecen al alfabeto de entrada. El resto de la cinta contiene [ • Movimientos: En función del estado del C.F. y del símbolo accedido por el cabezal, la máquina puede: ◦ Cambiar de estado ◦ Cambiar el símbolo contenido en la casilla accedida ◦ Desplazar el cabezal una posición a derecha o izquierda DSIC - UPV http://www.dsic.upv.es – p.3/28 La Máquina de Turing Visión descriptiva • Los movimientos se repiten hasta que: ◦ La máquina entra en estado final (se detiene aceptando la entrada) ◦ La máquina intenta acceder a la celda a la izquierda de la celda inicial (se detiene rechazando la entrada) ◦ La máquina entra en una situación para la que no hay definido movimiento (se detiene rechazando la entrada) • Puede ocurrir que ante determinada entrada, la máquina siga realizando movimientos indefinidamente sin aceptar ni rechazar dicha entrada DSIC - UPV http://www.dsic.upv.es – p.4/28 La Máquina de Turing Ejemplo: q0 q1 ˛ ˛0 ˛ ˛ ˛↑ ˛ ˛ ˛q0 0 0 1 [ (q0 ,0,R) – (q0 ,1,R) (q2 ,1,R) (q1 ,[,L) – 1 ˛ ˛0 ˛ ˛ ˛ ˛ ˛ ˛ ˛ ˛ ˛0 ˛ [˛ ˛ ˛ ˛ ˛⇒˛ ˛ ˛ ˛ ˛ ˛ ˛ 1 0 1 1 0 1 ˛ ˛ ˛0 ˛ [˛ ˛ ˛ ˛ ˛⇒˛ ˛ ˛ ˛ ˛ ˛ ˛ 1 ↑ q0 ˛ ˛ ˛ ˛0 [˛ ˛ ˛ ˛ ↑ ˛˛ ⇒ ˛˛ ˛ ˛ ˛ q0 ˛ F = {q2 } 0 1 1 ↑ q1 0 1 ˛ ˛ ˛0 ˛ [˛ ˛ ˛ ˛ ˛⇒˛ ˛ ˛ ˛ ˛ ˛ ˛ 1 ↑ q0 ˛ ˛ ˛ ˛0 [˛ ˛ ˛ ˛ ˛⇒˛ ˛ ˛ ˛ ˛ ˛ ˛ 0 DSIC - UPV 1 1 0 1 1 ↑ q0 ˛ [˛˛ ˛ ˛ ˛ ˛ ˛ ˛ [ ˛˛ ˛ ↑ ˛˛ ˛ q2 ˛ http://www.dsic.upv.es – p.5/28 La Máquina de Turing Descripción formal • M = (Q, Σ, Γ, δ, q0 , [, F ) donde: ◦ Q: conjunto de estados ◦ Σ: alfabeto de entrada ◦ Γ: alfabeto de cinta (Σ ⊆ Γ) ◦ δ : función de transición δ : Q × Γ → Q × Γ × {L, R} ◦ q0 : estado inicial ◦ [: simbolo blanco ([ ∈ Γ − Σ) ◦ F : conjunto de estados finales Descripción instantánea: secuencia de la forma α1 qα2 donde a1 , α2 ∈ Γ∗ y q ∈ Q. Describe la situación de una MT La cinta contiene la cadena α1 α2 seguida de infinitos blancos. El cabezal señala el primer símbolo de α2 DSIC - UPV http://www.dsic.upv.es – p.6/28 La Máquina de Turing Definiciones • Sobre el conjunto de descripciones instantáneas se define la relación movimiento (): Suponiendo que en un instante, la descripción de una MT es: x1 x2 . . . xi−1 qxi xi+1 . . . xn , ◦ Si δ(q, xi ) = (p, y, L) ⇒ x1 x2 . . . pxi−1 yxi+1 . . . xn , (i > 1) ◦ Si δ(q, xi ) = (p, y, R) ⇒ x1 x2 . . . xi−1 ypxi+1 . . . xn • Si D1 , D2 son dos descripciones instantáneas: ◦ D1 D2 el hecho que D1 pasa a D2 en un movimiento ∗ ◦ D1 D2 el hecho que D1 pasa a D2 en cero o más movimientos DSIC - UPV http://www.dsic.upv.es – p.7/28 Máquinas de Turing como aceptores • Una palabra x es aceptada por una máquina de Turing M sii a partir de la descripción inicial se llega a una con estado final ∗ x ∈ L(M ) ⇔ q0 x α1 qα2 con α1 , α2 ∈ Γ∗ y q ∈ F ∗ ∗ L(M ) = {x ∈ Σ | q0 x α1 qα2 , α1 , α2 ∈ Γ∗ , q ∈ F } • Un lenguaje es recursivamente enumerable si es aceptado por una máquina de Turing • Un lenguaje es recursivo si es aceptado por una máquina de Turing que se detiene ante todas las entradas DSIC - UPV http://www.dsic.upv.es – p.8/28 Máquinas de Turing como aceptores Ejemplo 1: Sea el lenguaje L formado por las palabras sobre Σ = {0, 1} que contienen al menos un 1: M1 0 1 [ q0 q1 (q0 ,0,R) – (q1 ,1,R) – – – M2 0 1 [ q0 q1 (q0 ,0,R) – (q1 ,1,R) – (q0 ,[,L) – F = {q1 } F = {q1 } • Ambas máquinas reconocen L • M2 no se detiene para 0∗ • M1 se detiene ante cualquier entrada. L es recursivo DSIC - UPV http://www.dsic.upv.es – p.9/28 Máquinas de Turing como aceptores Ejemplo 2: Máquina que acepta el lenguaje de palabras sobre {0, 1} que comienzan y acaban con el mismo símbolo (0/0/R) (1/1/R) (0/0/R) q1 q3 (0/0/R) (0/0/R) (1/1/R) q0 (1/1/R) ([/[/L) q2 ([/[/L) q5 q4 (1/1/R) DSIC - UPV http://www.dsic.upv.es – p.10/28 Máquinas de Turing como aceptores Ejemplo 3: Máquina que acepta el lenguaje de palíndromos sobre {0, 1} ([/[/L) (0/0/R) (1/1/R) q1 q3 ([/[/R) ([/[/R) (0/[/L) q6 (0/[/R) q0 (1/[/R) (0/0/R) (1/1/R) q2 q5 ([/[/R) ([/[/R) (0/0/L) (1/1/L) (1/[/L) q4 ([/[/L) DSIC - UPV http://www.dsic.upv.es – p.11/28 Otros modelos de máquinas de Turing Máquina con cinta infinita en ambos sentidos M = (Q, Σ, Γ, δ, q0 , [, F ) Respecto el modelo básico, ante la descripción instantánea qaα y disponiendo de la transición δ(q, a) = (p, b, L): • El modelo básico para • Este modelo conduce a la D.I. p[bα Teorema: Un lenguaje L es reconocido por una máquina de Turing con cinta infinita si y solo si L es reconocido por una máquina de Turing con cinta semiinfinita DSIC - UPV http://www.dsic.upv.es – p.12/28 Otros modelos de máquinas de Turing Máquina multicinta • La máquina dispone de tantos cabezales independientes como cintas • Una cinta (la primera) contiene la entrada. Las demás están en blanco • Cada movimiento viene determinado por el estado y por los símbolos leidos por los distintos cabezales: ◦ Cambiando de estado ◦ Sustituyendo los símbolos en las cintas accedidas ◦ Desplazando (L, R) o no (S ) la posición del cabezal de cada cinta (nueva opción) ejemplo de movimiento en una máquina con tres cintas: δ(q, x1 , x2 , x3 ) = (p, y1 , y2 , y3 , m1 , m2 , m3 ), mi ∈ {L, R, S} | {z } | {z } | {z } símbolos símbolos movimientos DSIC - UPV http://www.dsic.upv.es – p.13/28 Otros modelos de máquinas de Turing Máquina multicinta M = (Q, Σ, Γ, δ, q0 , [, F ) • δ : Q × Γk → Q × (Γ × {−1, 0, 1})k • Desc. Intantanea: (α1 qβ1 , α2 qβ2 , . . . , αk qβk ) • Lenguaje aceptado: (αi , βi ∈ Γ∗ , q ∈ F ) L(M ) = {x ∈ Σ∗ ∗ : q0 x, q0 [, . . . , q0 [ (α1 qβ1 , . . . , αk qβk )} Teorema: Un lenguaje L es reconocido por una máquina de Turing multicinta si y solo si L es reconocido por una máquina de Turing estandar DSIC - UPV http://www.dsic.upv.es – p.14/28 Otros modelos de máquinas de Turing Máquina no determinista Máquina de Turing con una única cinta y control finito único • δ : Q × Γ → P(Q × Γ × {L, R}) δ(q, a) = {(p1 , a1 , z1 ), (p2 , a2 , z2 ), . . . , (pn , an , zn )} donde: pi ∈ Q, ai ∈ Γ y zi ∈ {L, R} Teorema: Un lenguaje L es reconocido por una máquina de Turing no detereminista si y solo si L es reconocido por una máquina de Turing estandar DSIC - UPV http://www.dsic.upv.es – p.15/28 Otros modelos de máquinas de Turing Máquina multicabezal Un único movimiento permite desplazar independientemente las n cabezas de la máquina sobre la única cinta. Máquina multidimensional Máquina con una matriz de celdas k dimensional infinita como cinta. En función del estado y el símbolo analizado, la máquina cambia de estado y desplaza el cabezal de lectura en una de las 2k direcciones. DSIC - UPV http://www.dsic.upv.es – p.16/28 Máquinas de Turing como computadores de funciones La máquina de Turing puede verse como un computador de funciones enteras f : Zn → Zm • Función parcial vs. función total Para codificar los valores de entrada y salida adoptamos la siguiente convención: cod(x1 , x2 , . . . , xn ) = 0x1 10x2 1 . . . 10xn p.e: cod(2, 1, 3, 2) = 00101000100; cod(0, 3) = 1000; cod(2, 0, 1) = 00110; cod(0, 0, 1) = 110 Se dice que una máquina de Turing M = (Q, Σ, Γ, δ, q0 , [, ∅) calcula la función f : Zn → Zm si y solo si M para tras la computación: ∗ q0 cod(x1 , x2 , . . . , xn ) αqβ M donde: αβ = cod(f (x1 , x2 , . . . , xn )) DSIC - UPV http://www.dsic.upv.es – p.17/28 Máquinas de Turing como computadores de funciones Ejemplo: diferencia propia: m n = ( si m ≥ n en otro caso m−n 0 M = ({q1 , q2 , q3 , q4 , q5 , q6 }, {0, 1}, {0, 1, [}, δ, q0 , [, ∅) M1 0 1 [ q0 q1 q2 q3 q4 q5 q6 (q1 , [, R) (q1 , 0, R) (q3 , 1, L) (q3 , 0, L) (q4 , 0, L) (q5 , [, R) – (q5 , [, R) (q2 , 1, R) (q2 , 1, R) (q3 , 1, L) (q4 , [, L) (q5 , [, R) – – – (q4 , [, L) (q0 , [, R) (q6 , 0, R) (q6 , [, R) – DSIC - UPV http://www.dsic.upv.es – p.18/28 Máquinas de Turing como transductores • Podemos considerar que una máquina de Turing computa una determinada función sobre una cadena (o un conjunto de ellas) en lugar de computarla sobre un conjunto de enteros • En este caso hablamos de transducción • ejemplos sencillos son: ◦ Dividir una palabra en dos ◦ Aplicar un homomorfismo ◦ Desplazar (rotar) los simbolos un número de veces a derecha o izquierda DSIC - UPV http://www.dsic.upv.es – p.19/28 Máquinas de Turing como enumeradores Sea una máquina de Turing M multicinta que posee una cinta de solo escritura (salida) cuyo cabezal no se desplaza nunca a la izquierda. M escribe cadenas sobre la cinta de salida separadas por un símbolo especial de separación #. contenido de la cinta de salida: x1 #x2 # . . . #xn # . . . donde x i ∈ Σ∗ Lenguaje generado por M : G(M ) = {x1 #x2 # . . . #xn # . . .} Notese que L = G(M ) es finito a no ser que M no pare nunca Todo lenguaje recursivo puede ser generado por una máquina de Turing en orden lexicográfico DSIC - UPV http://www.dsic.upv.es – p.20/28 Construcción de máquinas de Turing • Una vez definida la máquina de Turing y sus variaciones, puede estudiarse que problemas pueden resolverse mediante una máquina de Turing • Podemos considerar máquinas de Turing como subrutinas para la construcción de otras máquinas más complejas. • Podemos considerar máquinas simples: ◦ Máquinas generadoras de un lenguaje ◦ Máquinas que aceptan lenguajes recursivos (paran para toda entrada) ◦ Máquinas que aceptan lenguajes r.e. (paran para toda palabra que pertenece al lenguaje) ◦ Máquinas que computan alguna función o transducción • Podemos representar estas máquinas como cajas negras, pudiendo utilizar el resultado que devuelven como entrada o señal de activación de otras máquinas. DSIC - UPV http://www.dsic.upv.es – p.21/28 Construcción de máquinas de Turing Ejemplo: w M1 si si no start M2 DSIC - UPV si no no http://www.dsic.upv.es – p.22/28 Propiedades de cierre Dado un lenguaje recursivo L, su complementario es recursivo Sea M1 una máquina de Turing que reconoce L w M1 si no no si DSIC - UPV http://www.dsic.upv.es – p.23/28 Propiedades de cierre La clase de los lenguajes recursivos es cerrada bajo unión Sean dos lenguajes rec. L1 , L2 y dos máquinas de Turing M1 y M2 , tales que L1 = L(M1 ) y L2 = L(M2 ) w M1 si si no start M2 si no DSIC - UPV no http://www.dsic.upv.es – p.24/28 Propiedades de cierre La clase de los lenguajes recursivos es cerrada bajo intersección Sean dos lenguajes rec. L1 , L2 y dos máquinas de Turing M1 y M2 , tales que L1 = L(M1 ) y L2 = L(M2 ) w M1 no no si start no M2 si DSIC - UPV si http://www.dsic.upv.es – p.25/28 Propiedades de cierre La clase de los lengujes recursivamente enumerables es cerrada bajo unión Sean dos lenguajes r.e. L1 , L2 y dos máquinas de Turing M1 y M2 , tales que L1 = L(M1 ) y L2 = L(M2 ). (M1 y M2 únicamente aseguran el fin de la computación si la entrada pertenece al lenguaje) w M1 si si M2 si DSIC - UPV http://www.dsic.upv.es – p.26/28 Propiedades de cierre Si L es recursivamente enumerable y L es recursivamente enumerable, entonces L es recursivo Sean dos máquinas de Turing M1 y M2 , tales que L = L(M1 ) y L = L(M2 ). w M1 M2 si si si no DSIC - UPV http://www.dsic.upv.es – p.27/28 Propiedades de cierre Dados un lenguaje L y su complementario L, únicamente pueden darse las siguientes situaciones: • Tanto L como L son recursivos • El lenguaje L es recursivamente enumerable (no recursivo) y L no es recursivamente enumerable • Los lenguajes L y L no son recursivamente enumerables DSIC - UPV http://www.dsic.upv.es – p.28/28