Máquinas de Turing - Pontificia Universidad Católica de Chile

Anuncio
Máquinas de Turing
Jorge A. Baier
Departamento de Ciencia de la Computación
Pontificia Universidad Católica de Chile
Santiago, Chile
Máquinas de Turing como Enumeradoras
Las máquinas de Turing pueden ser usadas para enumerar
palabras.
De hecho cualquier lenguaje recursivamente enumerable
siempre puede ser generado (escrito en una cinta) por una
MT.
Si el lenguaje es infinito, esta máquina no se detiene, pero
garantiza que eventualmente cualquier palabra w del lenguaje
aparecerá escrita en la cinta.
La máquina que genera esta salida es una máquina
enumeradora.
Jorge A. Baier (DCC-PUC): Máquinas de Turing
2 / 22
Una máquina para enumerar L(M )
Supongamos que tenemos una máquina M que acepta un
lenguaje recursivamente enumerable, L. ¿Cómo construimos
una máquina enumeradora para L? (que escriba como output
a todas las palabras de L)
Primer intento: Construimos una máquina con 2 cintas: una
para salida y otra para simular a M .
Definimos un orden canónico para las palabras en Σ∗ (es decir
Σ∗ = {w1 , w2 , . . . , wn }.
Escribimos wi en la segunda cinta.
Simulamos a M ocupando la segunda cinta.
3 Si M acepta a wj escribimos wj # en la cinta de salida.
1
2
Problema: ¿Qué pasa si M no para con wi ?
Jorge A. Baier (DCC-PUC): Máquinas de Turing
3 / 22
Una máquina para enumerar L(M )
Supongamos que tenemos una máquina M que acepta un
lenguaje recursivamente enumerable, L. ¿Cómo construimos
una máquina enumeradora para L? (que escriba como output
a todas las palabras de L)
Primer intento: Construimos una máquina con 2 cintas: una
para salida y otra para simular a M .
Definimos un orden canónico para las palabras en Σ∗ (es decir
Σ∗ = {w1 , w2 , . . . , wn }.
Escribimos wi en la segunda cinta.
Simulamos a M ocupando la segunda cinta.
3 Si M acepta a wj escribimos wj # en la cinta de salida.
1
2
Problema: ¿Qué pasa si M no para con wi ? No podremos
seguir generando las palabras que vienen a continuación.
Jorge A. Baier (DCC-PUC): Máquinas de Turing
3 / 22
Una máquina para enumerar L(M )
Construir una máquina que simule a M pero sólo un número
finito de pasos.
La máquina recorre la siguiente matriz:
w0
w1
w2
...
1 (1, w0 ) (1, w1 ) (1, w2 ) · · ·
2 (2, w0 ) (2, w1 ) (2, w2 ) · · ·
3 (3, w0 ) (3, w1 ) (3, w2 ) · · ·
..
..
.
.
···
De tal forma que para cada par (i, wj ) nuestra máquina
simula i movidas de M con entrada wj . Si M acepta en a lo
más i movidas, escribe wj # en la cinta de salida.
El recorrido se realiza de tal manera que i + j = constante.
Con esto garantizamos que en tiempo finito recorreremos
todas las palabras posibles, enumerando a L.
Jorge A. Baier (DCC-PUC): Máquinas de Turing
4 / 22
Lenguajes Recursivos y Recursivamente Enumerables
Definition
Un lenguaje L es recursivamente en enumerable ssi es aceptado
por alguna máquina de Turing.
Definition
La máquina M se detiene con el input w ssi M , después de un
número finito de pasos, llega a una configuración en la que no
está definida una siguiente movida.
Definition
Un lenguaje es recursivo ssi es aceptado por una máquina de
Turing M que se detiene para todo input.
Jorge A. Baier (DCC-PUC): Máquinas de Turing
5 / 22
Lenguajes Recursivos y Recursivamente Enumerables
Definition
Un lenguaje L es recursivamente en enumerable ssi es aceptado
por alguna máquina de Turing.
Definition
La máquina M se detiene con el input w ssi M , después de un
número finito de pasos, llega a una configuración en la que no
está definida una siguiente movida.
Definition
Un lenguaje es recursivo ssi es aceptado por una máquina de
Turing M que se detiene para todo input.
Observación: Todo lenguaje recursivo es también recursivamente
enumerable.
Jorge A. Baier (DCC-PUC): Máquinas de Turing
5 / 22
Propiedades de los lenguajes aceptados por MTs
Theorem
Los lenguajes recursivos son cerrados bajo complemento.
Theorem
Los lenguajes recursivos son cerrados bajo unión.
Theorem
Los lenguajes recursivamente enumerables son cerrados bajo unión.
Jorge A. Baier (DCC-PUC): Máquinas de Turing
6 / 22
Un teorema importante
Teorema: Si L es r.e. y L es r.e., entonces L es recursivo.
Jorge A. Baier (DCC-PUC): Máquinas de Turing
7 / 22
Un teorema importante
Teorema: Si L es r.e. y L es r.e., entonces L es recursivo.
Demostración: Sean M1 y M2 máquinas para L y L. Usando a M1
y M2 podemos construir la siguiente máquina para L:
Sı́
w
Sı́
M1
Sı́
No
M2
Esta máquina se detiene para toda entrada, puesto que o M1 se
detiene aceptando o M2 se detiene aceptando.
Por lo tanto, L es recursivo.
Jorge A. Baier (DCC-PUC): Máquinas de Turing
7 / 22
Problemas de Decisión
Los problemas de decisión están caracterizados por preguntas
con respuesta sı́/no.
Por ejemplo:
Dada una gramática libre de contexto G, ¿es G ambigua?
Jorge A. Baier (DCC-PUC): Máquinas de Turing
8 / 22
Problemas de Decisión
Los problemas de decisión están caracterizados por preguntas
con respuesta sı́/no.
Por ejemplo:
Dada una gramática libre de contexto G, ¿es G ambigua?
Esperamos resolver los problemas de decisión usando
máquinas de Turing que respondan a la pregunta.
Jorge A. Baier (DCC-PUC): Máquinas de Turing
8 / 22
Problemas de Decisión y su Lenguaje
Por esa razón, conviene ver a las MT como aceptando o no un
lenguaje asociado al problema.
Para el caso anterior, lo que la máquina
M = (Q, Σ, Γ, δ, q0 , B, F ) debe aceptar es:
L(M ) = {hGi | G es una GLC ambigua}
Jorge A. Baier (DCC-PUC): Máquinas de Turing
9 / 22
Problemas de Decisión y su Lenguaje
Por esa razón, conviene ver a las MT como aceptando o no un
lenguaje asociado al problema.
Para el caso anterior, lo que la máquina
M = (Q, Σ, Γ, δ, q0 , B, F ) debe aceptar es:
L(M ) = {hGi | G es una GLC ambigua}
Diremos que la máquina ha entregado una respuesta si ésta se
detiene.
La respuesta será sı́ si la máquina se detuvo en un estado de
aceptación.
Por otra parte, la respuesta será no, si se detuvo en un estado
en Q \ F .
Jorge A. Baier (DCC-PUC): Máquinas de Turing
9 / 22
Problemas Decidibles e Indecidibles
Diremos que un problema de decisión P es decidible si su
lenguaje asociado, L, es recursivo.
En caso contrario el problemas es indecidible.
Jorge A. Baier (DCC-PUC): Máquinas de Turing
10 / 22
Problemas Decidibles e Indecidibles
Diremos que un problema de decisión P es decidible si su
lenguaje asociado, L, es recursivo.
En caso contrario el problemas es indecidible.
De este último tipo de problemas, debemos distinguir entre
aquellos que tienen asociado un lenguaje recursivamente
enumerable y los que no lo tienen.
Jorge A. Baier (DCC-PUC): Máquinas de Turing
10 / 22
Problemas Decidibles e Indecidibles
Diremos que un problema de decisión P es decidible si su
lenguaje asociado, L, es recursivo.
En caso contrario el problemas es indecidible.
De este último tipo de problemas, debemos distinguir entre
aquellos que tienen asociado un lenguaje recursivamente
enumerable y los que no lo tienen.
Cabe notar que los problemas con una sola instancia tales
como:
“¿Es P = N P ?”
o
“¿Existe vida extra-terrestre?”
son decidibles.
Jorge A. Baier (DCC-PUC): Máquinas de Turing
10 / 22
Codificación de Máquinas de Turing
Una MT se puede codificar como un string binario.
Si, por ejemplo, tenemos a la máquina
M = (Q, {0, 1}, {0, 1, B}, δ, q1 , B, {q2 }),
y ésta tiene movidas del tipo:
δ(qi , Xj ) = (qk , Xl , Dm )
(Xj , Xl ∈ Γ; qi , qj ∈ Q)
Representamos esta movida con el string:
0i 10j 10k 10l 10m
(*)
El código de M , denotado por hM i, se puede escribir como:
111cod 1 11cod 2 11 · · · 11cod r 111, donde cada cod i es del tipo
(*).
Jorge A. Baier (DCC-PUC): Máquinas de Turing
11 / 22
Un Lenguaje no R.E.
Supongamos que tenemos una lista de las palabras en {0, 1}∗
de tal manera que wi corresponde a la i-ésima palabra.
Sea Mj la MT cuyo código corresponde a wj .
Definamos a
Ld = {wi | wi 6∈ L(Mi )}
Jorge A. Baier (DCC-PUC): Máquinas de Turing
12 / 22
Un Lenguaje no R.E.
Supongamos que tenemos una lista de las palabras en {0, 1}∗
de tal manera que wi corresponde a la i-ésima palabra.
Sea Mj la MT cuyo código corresponde a wj .
Definamos a
Ld = {wi | wi 6∈ L(Mi )}
Si Ld es recursivamente enumerable, entonces éste debe ser
aceptado por una máquina. Esta máquina debe ser MJ , para
algún J y es tal que Ld = L(MJ ).
Jorge A. Baier (DCC-PUC): Máquinas de Turing
12 / 22
Un Lenguaje no R.E. (cont.)
La pregunta que nos hacemos es ¿pertenece wJ a L(MJ )?
Jorge A. Baier (DCC-PUC): Máquinas de Turing
13 / 22
Un Lenguaje no R.E. (cont.)
La pregunta que nos hacemos es ¿pertenece wJ a L(MJ )?
Si suponemos que sı́, es decir wJ ∈ L(MJ ), llegamos a una
contradicción, puesto que por definición del lenguaje
wJ 6∈ L(MJ ).
Jorge A. Baier (DCC-PUC): Máquinas de Turing
13 / 22
Un Lenguaje no R.E. (cont.)
La pregunta que nos hacemos es ¿pertenece wJ a L(MJ )?
Si suponemos que sı́, es decir wJ ∈ L(MJ ), llegamos a una
contradicción, puesto que por definición del lenguaje
wJ 6∈ L(MJ ).
Si suponemos que no, es decir wJ 6∈ L(MJ ), por la definición
del lenguaje, wJ ∈ L(Mj ), lo que también es una
contradicción.
Concluimos que no puede existir una máquina de Turing para
Ld y, por lo tanto, Ld no es recursivamente enumerable.
Jorge A. Baier (DCC-PUC): Máquinas de Turing
13 / 22
El Lenguaje Universal
El lenguaje universal se define de la siguiente manera:
Lu = {hM, wi | M acepta a w},
El problema de decisión asociado a este problema es:
Dada una MT M y una palabra w, ¿acepta M a w?
¿Es Lu recursivamente enumerable?
La respuesta es sı́. Para aceptarlo, podemos construir una
Máquina de Turing M 0 que recibe el código de M y w, y
simula a M alimentada con w. Si M acepta a w, entonces
responde sı́.
Nótese que esta máquina siempre acepta cuando
hM, wi ∈ Lu .
Jorge A. Baier (DCC-PUC): Máquinas de Turing
14 / 22
Lu no es recursivo
Demostraremos que Lu no es recursivamente enumerable:
Supongamos que lo fuera y que Mu acepta Lu . Entonces,
podemos construir una máquina M 0 que acepta Ld de la
siguiente manera:
M 0 recibe un argumento hM i y alimenta a Mu con hM, hM ii.
Si Mu responde sı́, significa que M no acepta hM i y, por lo
tanto hM i ∈ Ld . Luego M 0 acepta Ld , lo cual no es posible.
Se concluye, por lo tanto, que Lu no es recursivo.
Jorge A. Baier (DCC-PUC): Máquinas de Turing
15 / 22
El problema de la parada de una MT
Dada una máquina M y una palabra w, ¿para M
alimentada w?
El lenguaje asociado a este problema es el siguiente:
Lh = {(hM i, w) | M (w) para}
Suponiendo que tal algoritmo existe construiremos un
algoritmo M 0 para decidir Ld .
Supongamos M 00 que, dada la codificación de una máquina
M , entrega el código de una máquina M0 que acepta el
mismo lenguaje que M , pero que entra en un loop infinito
cuando M se detiene sin aceptar.
Jorge A. Baier (DCC-PUC): Máquinas de Turing
16 / 22
El problema de la parada, gráficamente
M0 funciona igual que M pero , con la diferencia que cada
vez M dice NO, M0 entra en un loop infinito.
El siguiente esquema muestra un algoritmo para aceptar Lu .
Algoritmo que decide Lu
hM i
Generador de M 0
hM 0 i
Si
Si
No
No
Algoritmo que
decide Lh
$w$
Jorge A. Baier (DCC-PUC): Máquinas de Turing
17 / 22
Otro problema
¿Dada una máquina arbitraria M , es L(M ) = ∅?
El lenguaje asociado a este problema:
Le = {hM i | L(M ) = ∅}
Por otro lado, tenemos que su complemento es:
Lne = {hM i | L(M ) 6= ∅}
¿Qué podemos decir acerca de estos lenguajes?
Jorge A. Baier (DCC-PUC): Máquinas de Turing
18 / 22
Otro problema
¿Dada una máquina arbitraria M , es L(M ) = ∅?
El lenguaje asociado a este problema:
Le = {hM i | L(M ) = ∅}
Por otro lado, tenemos que su complemento es:
Lne = {hM i | L(M ) 6= ∅}
¿Qué podemos decir acerca de estos lenguajes?
La conclusión más directa es que Lne es recursivamente
enumerable. ¿por qué?
Jorge A. Baier (DCC-PUC): Máquinas de Turing
18 / 22
Le no es recursivo
Demostraremos que si suponemos que Le es recursivo
entonces Lu también lo es.
Supongamos que Me puede decidir Le .
Jorge A. Baier (DCC-PUC): Máquinas de Turing
19 / 22
Le no es recursivo
Demostraremos que si suponemos que Le es recursivo
entonces Lu también lo es.
Supongamos que Me puede decidir Le .
Dado un par hM, wi, podemos construir una máquina M 00
que ignora su entrada y simula a hM, wi.
Jorge A. Baier (DCC-PUC): Máquinas de Turing
19 / 22
Le no es recursivo
Demostraremos que si suponemos que Le es recursivo
entonces Lu también lo es.
Supongamos que Me puede decidir Le .
Dado un par hM, wi, podemos construir una máquina M 00
que ignora su entrada y simula a hM, wi.
M 00 acepta (0 + 1)∗ ssi M acepta a w y acepta ∅ ssi M no
acepta a w.
Podemos usar ahora Me para decidir Lu .
Jorge A. Baier (DCC-PUC): Máquinas de Turing
19 / 22
Otro problema
¿Dada una MT cualquiera M , acepta M un lenguaje con 3
palabras?
El lenguaje asociado es
L#3 = {hM i | |L(M )| = 3}
L#3 es indecidible (no es recursivo).
Demostraremos que si L#3 es recursivo, entonces Lu también
lo es.
En efecto, dado hM, wi arbitrarios, siempre podemos
construir:
M0
w
Sı́
M
Partida
Sı́
Sı́
M#3
x
Jorge A. Baier (DCC-PUC): Máquinas de Turing
20 / 22
Otro problema (continuación)
Donde M#3 es cualquier máquina que acepta un lenguaje de
exactamente 3 palabras (puede ser {0, 00, 000}, por ejemplo).
Para esta máquina se tiene que:
(
L(M#3 ) si M acepta w
0
L(M ) =
∅
si M no acepta w
Si tuviéramos un algoritmo para decidir L#3 podemos usarlo
también para decidir Lu pasándole M 0 y viendo qué responde.
Jorge A. Baier (DCC-PUC): Máquinas de Turing
21 / 22
Teorema de Rice
La construcción que hemos visto se puede hacer con cualquier
conjunto que hable sobre propiedades de los lenguajes de
máquinas de Turing.
Generalizando esta construcción se obtiene:
Theorem (de Rice)
Cualquier propiedad no triviala P de los lenguajes recursivamente
enumerables es indecidible.
a
Una propiedad no trivial es aquélla que es cumplida sólo por algunos
lenguajes
Jorge A. Baier (DCC-PUC): Máquinas de Turing
22 / 22
Demostración del Teorema de Rice
Supongamos que ∅ no cumple con la propiedad (si no, podemos
considerar P). Como P es no trivial existe un lenguaje r.e. L que
cumple con la propiedad. Supongamos que ML es la máquina que
lo acepta.
Podemos construir la siguiente máquina M 0 :
M0
w
Sı́
M
Partida
Sı́
Sı́
ML
x
Cuyo lenguaje es
(
L(ML )
L(M 0 ) =
∅
si M acepta w
si M no acepta w
Claramente, si existe una máquina MP para decidir si un lenguaje
tiene la propiedad P, entonces podemos usar M 0 para decidir Lu .
Jorge A. Baier (DCC-PUC): Máquinas de Turing
23 / 22
Descargar