Máquinas de Turing y verificadores

Anuncio
Máquinas de Turing y verificadores
William Cruz-Santos y Guillermo Morales-Luna
Departamento de Computación, Cinvestav-IPN,
Ciudad de México
noviembre de 2010
Resumen Se revisan las nociones fundamentales de las máquinas de
Turing deterministas y no-deterministas. Las definiciones de las clases de
problemas P y NP, la noción de completitud y se demuestra el teorema
de Cook-Levin [1, 2].
1
Introducción
Sea Σ un conjunto finito de sı́mbolos llamado alfabeto, por Σ ∗ se denota al
conjunto de todas las cadenas de sı́mbolos tomados de Σ y la cadena vacı́a ,
llamado diccionario. Si L ⊂ Σ ∗ decimos que L es un lenguaje sobre el alfabeto
Σ. Para cualquier cadena x ∈ Σ ∗ , se denota por |x| la longitud de x.
Definición 11 Una Máquina de Turing Determinista M (MTD) es una 7-tupla
(Q, Σ, Γ, δ, q0 , b, F ) donde Q es un conjunto finito de estados de control, Σ es el
alfabeto de entrada, Γ es el alfabeto de la cinta, q0 ∈ Q es el estado inicial, b un
sı́mbolo especial, F ⊂ Q un conjunto de estados finales i.e., F = {qY , qN } y δ es
una función de transición tal que δ : (Q − {qY , qN }) × Γ → Q × Γ × {−1, 0, 1}
con δ : (q, X) 7→ (p, Y, D), donde p ∈ Q es el estado siguiente, Y ∈ Γ , es el
nuevo sı́mbolo escrito sobre la cinta en la posición actual y D es la dirección de
la cabeza lectora. Aquı́ -1,1,0 significa un movimiento a la izquierda, derecha o
sin movimiento respectivamente.
Dada una MTD M y una cadena de entrada x ∈ Σ ∗ , se denota por M (x) la
aplicación de M sobre x. Inicialmente se copia x en la cinta a partir de la posición
número uno y se realizan los siguientes pasos según sea el caso:
1. Se inicia en el estado q0 y la cabeza de lectura/escritura se sitúa sobre el
primer sı́mbolo de entrada.
2. Si el estado actual es qY o qN la computación termina.
3. Si el estado actual es q ∈ Q − {qY , qN } se lee el sı́mbolo s sobre la cinta en la
que se encuentra la cabeza lectora y el siguiente estado es δ(q, s) = (q 0 , s0 , D).
Es decir, se borra el sı́mbolo s sobre la cinta y se escribe el sı́mbolo s0 , la
cabeza se mueve una posición a la izquierda si D = −1 o una posición a la
derecha si D = 1, finalmente el nuevo estado es q 0 .
Por ejemplo, considere la siguiente descripción de una MTD M con Γ = {0, 1, b},
Σ = {0, 1}, Q = {q0 , q1 , q2 , q3 }, F = {qY , qN } y la función de transición δ que se
muestra en la tabla 1. La tabla 2 muestra la computación de M sobre x = 10100.
Tabla 1. Función de transición δ.
δ
q0
q1
q2
q3
0
(q0 , 0, +1)
(q2 , b, −1)
(qY , b, −1)
(qN , b, −1)
1
(q0 , 1, +1)
(q3 , b, −1)
(qN , b, −1)
(qN , b, −1)
b
(q1 , b, −1)
(qN , b, −1)
(qN , b, −1)
(qN , b, −1)
Tabla 2. Computación de M con x = 10100.
∇
q0 : b 1 0 1 0
∇
q0 : b 1 0 1 0
∇
q0 : b 1 0 1 0
∇
q0 : b 1 0 1 0
q0 : b 1 0 1
q0 : b 1 0 1
q1 : b 1 0 1
0 b
0 b
0 b
0 b
∇
0 0 b
∇
0 0 b
∇
0 0 b
∇
0 b b
q2 : b 1 0 1
∇
qY : b 1 0 1 b b b
Ası́, dada una MTD M y x ∈ Σ ∗ se dice que M acepta a x si y sólo si,
la computación de M sobre x termina en el estado qY y escribimos M (x) = 1,
M (x) = 0 si es qN y M (x) = ⊥ en otro caso. El lenguaje que reconoce M está
dado por LM = {x ∈ Σ ∗ |M acepta a x}. El tiempo de computación de M con
entrada x es el número de pasos que realiza hasta llegar a un estado terminal.
Si para toda x ∈ Σ ∗ , M (x) 6= ⊥ se define la complejidad en tiempo de M como
TM : Z+ → Z+ dada por
TM (n) =
max
x∈Σ ∗ ,|x|=n
{tiempo computación de M (x)}
Una MTD M es de complejidad polinomial en tiempo si existe un polinomio p
tal que para toda n ∈ Z+ , TM (n) ≤ p(n).
Definición 12 La clase P consiste de los lenguajes L para los cuales existe una
MTD M de complejidad polinomial en tiempo tal que L = LM .
Codificación de problemas de decisión Hasta ahora sólo se ha hablado de
lenguajes sobre cierto alfabeto, extendamos la representación de los lenguajes
como una codificación de problemas de decisión. Un problema de decisión Π
es aquel que pregunta por cierta propiedad o estructura de un problema y que
tiene como respuesta positiva o negativa. Formalmente consiste de un conjunto
de instancias DΠ y un subconjunto de instancias positivas YΠ ⊆ DΠ .
Para un problema de decisión Π, el esquema de codificación e proporciona
una forma de codificar instancias del problema Π en cadenas sobre un alfabeto
Σ. Tal codificación induce una partición a Σ ∗ en tres clases de cadenas: aquellas
que no son instancias de Π, aquellas que son instancias negativas de Π y aquellas
que son instancias positivas de Π.
El lenguaje de un problema de decisión Π bajo un esquema de codificación e
sobre un alfabeto Σ es L[Π, e] = {x ∈ Σ ∗ |x codifica una instancia positiva de Π}.
De aquı́ en adelante no se hará distinción entre un problema de decisión y un
lenguaje, asumiremos que existe un esquema de codificación para representarlo.
1.1
No determinismo y la clase NP
Definición 13 Una Máquina de Turing No-determinista N (MTN) es una 7tupla (Q, Σ, Γ, ∆, q0 , b, F ) donde Q, Σ, Γ , q0 ∈ Q y F ⊂ Q se definen como en
una MTD y ∆ ya no es una función, si no, una relación ∆ ⊂ [(Q − {qY , qN }) ×
Γ ] × (Q × Γ × {−1, 0, 1}). Esto significa que para un estado actual de N existen
más de un estado siguiente o ninguno. Para alguna entrada x ∈ Σ ∗ , M (x) es
un ”árbol de computación” donde cada ”rama de computación” es uno de los
posibles caminos que toma M con la entrada x según ∆.
La MTN N funciona de la siguiente forma:
1. Toma como entrada x ∈ Σ ∗ , se escribe sobre la cinta a partir de la posición
1 hasta la número |x|, la cabeza lectora se localiza sobre el primer sı́mbolo
en la cinta y el estado inicial es q0 .
2. Explora todas las ramas de computación en paralelo a partir del estado inicial
al igual que una MTD.
Se dice que N acepta a x si existe al menos una rama de computación que llegue
al estado terminal qY . El lenguaje que reconoce una MTN N es LN = {x ∈
Σ ∗ |N acepta a x}. El tiempo de computación de N con la entrada x ∈ LN es la
longitud mı́nima de todas las ramas de computación que terminan en el estado
qY . La complejidad en tiempo de una MTN N se define como TN : Z+ → Z+
dada por
TN (n) =
max {tiempo computación de N (x)}
x∈LN ,|x|=n
Una MTN N es de complejidad polinomial en tiempo si existe un polinomio p
tal que para toda n ≥ 1, TN (n) ≤ p(n).
Definición 14 La clase N P consiste de los lenguajes L para los cuales existe
una MTN N de complejidad polinomial en tiempo tal que L = LN .
Cada rama de computación corresponde a una función de transición por lo que
una MTD es un caso especial de una MTN entonces resulta que P ⊆ N P . Un
problema fundamental en teorı́a de la computación es saber si a caso P = N P
o P 6= N P .
La MTN y certificados Considere otra definición de una MTN. Sea N 0 =
(Q, Σ, Γ, δ, q0 , b, F ) una MTD de complejidad polinomial que posee un segundo
modulo de control no-determinista (MCN) que es una MTN con su propia cinta
y cabeza de lectura/escritura. El primer modulo de control determinista (MCD)
lleva a cabo la tarea de verificador, es decir, dada una instancia de un problema
y una posible solución, el MCD verifica si satisface al problema o no. Para una
entrada x ∈ Σ ∗ , N 0 funciona de la siguiente forma:
1. Se escribe x sobre la cinta a partir de la posición número uno hacia la derecha,
el MCN tiene como entrada a x y de todas las ramas de computación exitosas
si es que existen, escoge una y la escribe sobre la cinta de N 0 como certificado
de que x ∈ LM CN a partir de la posición numero -1 hacia la izquierda.
2. Se verifica si el certificado que escribió el MCN satisface a la instancia del
problema.
Es fácil ver que esta definición es equivalente a 13 ya que se trata de una MTN
con un modulo adicional de verificación de complejidad polinomial que no afecta
la complejidad de la misma. Al MCN se le puede ver como un modulo que provee
de soluciones para el problema y que el MCD se encarga de verificar.
1.2
Transformaciones polinomiales y completitud
Asumiendo P 6= N P la diferencia entre P y N P − P es importante. Los problemas en P se pueden decidir en tiempo polinomial mientras que los problemas
en N P − P son intratables.
Considere la siguiente condición, si Π ∈ N P y P 6= N P entonces Π ∈ N P −
P . Suponiendo la condición anterior es importante comparar la dificultad de
los problemas por medio de transformaciones polinomiales. Una transformación
polinomial de un lenguaje L1 ∈ Σ1∗ a un lenguaje L2 ∈ Σ2∗ es una función
f : Σ1∗ → Σ2∗ que satisface las siguientes condiciones:
1. Existe una MTD de complejidad polinomial que calcula f .
2. Para toda x ∈ Σ1∗ , x ∈ L1 si y sólo si f (x) ∈ L2 .
Si existe una transformación polinomial de L1 a L2 entonces se escribe L1 ∝ L2
y se lee, L1 se transforma polinomialmente a L2 .
Lema 11 Si L1 ∝ L2 entonces L2 ∈ P implica L1 ∈ P .
Demostración: sean los lenguajes L1 y L2 sobre los alfabetos Σ1 y Σ2 respectivamente. Sean f : Σ1∗ → Σ2∗ una transformación polinomial de L1 a L2 , Mf la MTD
que la calcula y M2 una MTD de complejidad polinomial que reconoce a L2 .
Para cada x ∈ Σ1∗ , Mf (x) = f (x) ∈ Σ2∗ por lo que M2 (f (x)) = 1 ⇐⇒ f (x) ∈ L2
entonces x ∈ L1 . La composición M2 ◦ Mf define una MTD de complejidad
polinomial que reconoce a L1 .
Lema 12 Si L1 ∝ L2 y L2 ∝ L3 entonces L1 ∝ L3 .
Demostración: sean los lenguajes L1 , L2 y L3 sobre los alfabetos Σ1 , Σ2 y Σ3
respectivamente. Sean f1 : Σ1∗ → Σ2∗ y f2 : Σ2∗ → Σ3∗ transformaciones polinomiales de L1 a L2 y de L2 a L3 respectivamente. Sea f : Σ1∗ → Σ3∗ tal que
∀x ∈ Σ1∗ : f (x) = (f2 ◦ f1 )(x) es una transformación polinomial de L1 a L3 .
Finalmente, ya que f1 y f2 se computan por MTD’s de complejidad polinomial
entonces la composición es también polinomial.
Dos lenguajes L1 y L2 son equivalentes si L1 ∝ L2 y L2 ∝ L1 . Ası́, la relación
∝ define un orden parcial sobre las clases de equivalencia de lenguajes, i.e., P y
NP.
Definición 15 Un lenguaje L es N P -completo si L ∈ N P y para cualquier otro
lenguaje L0 ∈ N P , L0 ∝ L.
Del mismo modo un problema de decisión Π es N P -completo según la definición
15 considerando su lenguaje L[Π, e] correspondiente. Si Π se puede resolver en
tiempo polinomial entonces todos los problemas en N P se pueden resolver en
tiempo polinomial. Si algún problema Π 0 ∈ N P es intratable entonces todos
los problemas N P -completos también lo son, finalmente si Π ∈ P entonces
P = NP.
Lema 13 Si L1 , L2 ∈ N P , L1 es N P -completo y L1 ∝ L2 entonces L2 es N P completo.
Demostración: se tiene que L2 ∈ N P y para demostrar la proposición se necesita
que cada L0 ∈ N P , L0 ∝ L2 . Para cualquier L0 ∈ N P , L0 ∝ L1 ya que L1 es
N P -completo, como L1 ∝ L2 por transitividad L0 ∝ L2 .
n−1
El problema de satisfactibilidad Sea X = (Xj )j=0
un conjunto de variables
δ
booleanas. Una literal es de la forma X donde X ∈ X y δ ∈ {0, 1} : X 0 = ¬X
y X 1 = X. Una cláusula es una disyunción de literales y una forma conjuntiva
(FC) es una conjunción de cláusulas. Una asignación es una cadena ε = (εj )nj=1 ∈
{0, 1}n . Una asignación satisface a la literal Xjδ si y sólo si εj = δ; satisface a
una cláusula si al menos una literal se satisface; y satisface a una FC si y sólo si
todas las cláusulas se satisfacen.
Una m-cláusula consiste de una cláusula con exactamente m literales y una
m-FC es una FC únicamente con m-cláusulas.
Problema 11 (Satisfactibilidad (SAT)) Dada una FC, decidir si existe una
asignación que la satisfaga.
Teorema 11 (Cook-Levin) El problema de satisfactibilidad booleana es N P completo.
Demostración: SAT es N P -completo si y sólo si
1. SAT ∈ N P
2. ∀Π ∈ N P =⇒ Π ∝ SAT
1) existe una MTN N de complejidad polinomial que reconoce al lenguaje
LSAT = L[SAT, e]. Lo único que tiene que hacer N es que para cualquier entrada x que corresponde a una codificación de instancias de SAT, N explora
todas las asignaciones posibles o ramas de computación para x. Si x ∈ LSAT
entonces existe al menos una rama de computación que termina en el estado qY
donde la longitud de las ramas de computación están acotadas polinomialmente
en |x|, por tanto N reconoce a LSAT .
2) en términos de lenguajes se quiere demostrar que ∀L ∈ N P =⇒ L ∝ LSAT .
∗
Es decir, se necesita describir una transformación polinomial fL : Σ ∗ → ΣSAT
∗
tal que para cualquier lenguaje L ∈ N P y x ∈ Σ entonces x ∈ L si y sólo si
fL (x) ∈ LSAT . Se considerará que fL va de las cadenas en Σ ∗ a SAT de formas
conjuntivas, de tal forma que fL (x) es una FC en lugar de pertenecer al lenguaje
LSAT . En consecuencia fL (x) es una FC que se satisface si y sólo si x ∈ L. Cada
lenguaje L ∈ N P se puede describir de forma estándar dando la descripción
de una MTN de complejidad polinomial que lo reconozca. Por ejemplo, si N es
una MTN tal que L = LN entonces fL transforma instancias de LN a LSAT
usando la descripción de N . Se empleará la definición alternativa de una MTN
con certificados.
Sea N = (Q, Σ, Γ, ∆, q0 , b, F ) una MTN de complejidad polinomial que reconoce el lenguaje LN donde la complejidad en tiempo TN (n) de N está acotada
por un polinomio p para toda n ∈ Z+ . Es evidente que si x ∈ L entonces existe
una computación de N sobre x que termina en un estado de aceptación (ver
tabla 2), de forma que se utilizan a lo más p(|x|) celdas sobre la cinta para escribir el certificado y se utilizan a lo más p(|x|) + 1 celdas en la verificación. Ası́,
el contenido de estas celdas, la posición de la cabeza lectora y el estado final
describen la computación de N con la entrada x.
Es necesario construir una FC que se satisfaga cuando la tabla de computación sea de aceptación. Considere la siguiente enumeración de Q como
q0 , q1 = qY , q2 = qN , q3 , . . . , qr y de Γ como s0 = b, s1 , s2 , . . . , sν donde r =
card Q − 1 y ν = card Γ − 1. Sea U = {Qi,k , Hi,j , Si,j,k } un conjunto de variables booleanas donde cada una de ellas representa una propiedad sobre la computación de una MTN, i.e., Qi,k se refiere al estado qk que se encuentra N en el
paso i, Hi,j al contenido de la cinta en la celda j en el paso i y Si,j,k al sı́mbolo
sk que se lee en la celda j en el paso i. Una descripción más precisa se puede ver
en la tabla 3 donde n = |x|.
Para alguna entrada x ∈ L, fL (x) es una FC Φ sobre U que consta de 6
conjuntos de cláusulas donde cada uno de ellos impone ciertas restricciones en
la computación de la MTN que en conjunción satisfacen lo que requerimos (ver
tabla 4).
Tabla 3. Variables booleanas en U.
Variable Rango
Qi,k
0 ≤ i ≤ p(n)
0≤k≤r
Hi,j
0 ≤ i ≤ p(n)
−p(n) ≤ j ≤ p(n) + 1
Si,j,k
0 ≤ i ≤ p(n)
−p(n) ≤ j ≤ p(n) + 1
0≤k≤ν
Significado
en el paso i, N está en el estado qk
en el paso i, la cabeza lee la celda j
en el paso i, la celda j contiene el sı́mbolo sk
Tabla 4. Conjuntos de cláusulas en Φ.
Cláusulas
G1
G2
G3
G4
G5
G6
Tipo de restricción
en el paso i, N se encuentra en un único estado
en el paso i, la cabeza lee exactamente una celda
en el paso i, cada celda contiene un único sı́mbolo en Γ
en el paso 0, N se encuentra en el estado q0
si en el paso p(n), N se encuentra en el estado qY
entonces x es aceptada
para cada paso i, 0 ≤ i ≤ p(n), la configuración de N
en el paso i + 1 resulta de la aplicación de δ con la configuración
del paso i
Conjunto G1 :
ϕ1 =
^
(Q1i,0 ∨ Q1i,1 ∨ · · · ∨ Q1i,r )
(1)
i
ψ1 =
^
(Q0i,j ∨ Q0i,s )
(2)
i,j,s
G1 = ϕ1 ∧ ψ1
(3)
donde 0 ≤ i ≤ p(n) y 0 ≤ j < s ≤ r. ϕ1 se satisface siempre que en cualquier
paso i, N se encuentre en al menos un estado y ψ1 se satisface siempre que
se encuentre en un sólo estado. La conjunción de ϕ1 y ψ1 aseguran que en
cada paso N se encuentre en un sólo estado.
Conjunto G2 :
^
1
1
1
ϕ2 = (Hi,−p(n)
∨ Hi,−p(n)+1
∨ · · · ∨ Hi,p(n)+1
)
(4)
i
ψ2 =
^
0
0
(Hi,j
∨ Hi,s
)
(5)
i,j,s
G2 = ϕ2 ∧ ψ2
(6)
donde 0 ≤ i ≤ p(n), −p(n) ≤ j < s ≤ p(n) + 1. ϕ2 se satisface siempre que
en cualquier paso i, N lea al menos un celda sobre la cinta y ψ2 se satisface
siempre que la cabeza lectora lea una sola celda en cada paso. La conjunción
de ϕ2 y ψ2 aseguran que en cada paso N lea una sola celda.
Conjunto G3 :
^
1
1
1
ϕ3 = (Si,j,0
∨ Si,j,1
∨ · · · ∨ Si,j,ν
)
(7)
i,j
ψ3 =
^
0
0
(Si,j,k
∨ Si,j,t
)
(8)
i,j,k,t
G3 = ϕ3 ∧ ψ3
(9)
donde 0 ≤ i ≤ p(n), −p(n) ≤ j ≤ p(n) + 1, 0 ≤ k < t ≤ ν. ϕ3 se satisface
siempre que en cualquier paso i, en cualquier celda j se lee al menos un
sı́mbolo sk y ψ3 se satisface siempre que el paso i y celda j solo exista un
solo sı́mbolo de Γ . La conjunción de ϕ3 y ψ3 aseguran que en cada paso y
cada posición sobre la cinta contenga un sólo sı́mbolo.
Conjunto G4 :
1
1
ϕ4 = Q10,0 ∧ H0,1
∧ S0,0,0
ψ4 =
φ4 =
1
1
S0,1,k
∧ S0,2,k
∧ ···
1
2
1
1
S0,n+1,0 ∧ S0,n+2,0 ∧
G4 = ϕ4 ∧ ψ4 ∧ φ4
(10)
1
∧ S0,n,k
n
1
· · · ∧ S0,p(n)+1,0
(11)
(12)
(13)
donde x = sk1 sk2 · · · skn . ϕ4 se satisface si el estado inicial en el paso i = 0
es q0 , la cabeza lectora se encuentre en la posición j = 1 y el sı́mbolo en la
posición j = 0 se encuentre el sı́mbolo sk0 (espacio en blanco); ψ4 se satisface
si en el paso i = 0 el contenido de la cinta desde la celda j = 1 hasta j = n
se encuentra escrita la entrada x y φ4 se satisface si el resto de las celdas
n + 1 hasta p(n) + 1 están en blanco.
Conjunto G5 :
G5 = Q1p(n),1
(14)
G5 se satisface si en a lo más p(n) pasos el estado actual de N es qY .
Conjunto G6 : consta de dos subconjuntos
1. Si la cabeza lectora no se encuentra en la celda j en el paso i entonces
el sı́mbolo en la celda j no cambia entre los pasos i e i + 1.
^
0
1
1
ϕ6 =
(Si,j,l
∨ Hi,j
∨ Si+1,j,l
)
(15)
i,j,l
donde 0 ≤ i ≤ p(n), −p(n) ≤ j ≤ p(n) + 1 y 0 ≤ l ≤ ν.
2. El estado siguiente depende de la función de transición δ. Para cada 4tupla (i, j, k, l) con 0 ≤ i ≤ p(n), −p(n) ≤ j ≤ p(n) + 1, 0 ≤ k ≤ r y
0 ≤ l ≤ ν, considere las siguientes cláusulas
^
0
0
1
0
0
ψ6 =
((Hi,j
∨ Q0i,k ∨ Si,j,l
∨ Hi+1,j+∆
) ∧ (Hi,j
∨ Q0i,k ∨ Si,j,l
∨ Q1i+1,k0 ) ∧
i,j,k,l
0
0
1
(Hi,j
∨ Q0i,k ∨ Si,j,l
∨ Si+1,j,l
0 ))
(16)
Tabla 5. Complejidad de Φ en términos del número de cláusulas.
Conjunto
G1
G2
G3
G4
G5
G6
Número de cláusulas
(p(n) + 1)(r + 1)(r/2) + p(n) + 1
...
...
3
1
2(p(n) + 1)2 (ν + 1) + 6p(n)(p(n) + 1)(r + 1)(ν + 1)
donde si qk ∈ Q − {qY , qN } los valores ∆, k 0 y l0 son tales que δ(qk , sl ) =
(qk0 , sl0 , ∆), y si qk ∈ {qY , qN } entonces ∆ = 0, k 0 = k y l0 = l.
Se tiene que G6 = ϕ6 ∧ ψ6 cumple con la restricción deseada.
Por lo tanto, para cada x ∈ L se tiene que existe una computación de N sobre
x de longitud a lo más p(x) que induce una asignación sobre las variables en U
V6
que satisface a Φ = i=1 Gi .
Finalmente, queda por demostrar que este procedimiento se puede realizar
en tiempo polinomial en la longitud de x. Esto es cierto si la longitud de Φ está
acotada polinomialmente en n, por ejemplo, si (card U) · (card Φ) está acotada
por p. La tabla 5 muestra la complejidad de Φ por lo que card Φ = O(p(n)2 ) y por
la tabla 3 se tiene que card U = O(p(n)2 ) donde se ignoran los factores constantes
que dependen de los valores fijos r y ν. Entonces (card U) · (card Φ) = O(p(n)4 )
que es polinomial en p(n).
Referencias
1. Michael R. Garey and David S. Johnson. Computers and Intractability; A Guide
to the Theory of NP-Completeness. W. H. Freeman & Co., New York, NY, USA,
1990.
2. Christos M. Papadimitriou. Computational complexity. Addison-Wesley, Reading,
Massachusetts, 1994.
Descargar