Teoria de La Complejidad Computacional
Teoria de La Complejidad Computacional
Teoria de La Complejidad Computacional
MÁQUINAS DE TURING:
FUNCIONAMIENTO MÁQUINAS DE TURING: EJEMPLO
Inicialmente: Queremos construir una máquina que
◮ La máquina recibe como entrada una verifique si el largo de una
palabra w. palabra de 0s es par: M = (Q, A, q0, δ, F)
◮ Coloca esta palabra en alguna parte del ◮ A = {0}.
arreglo. En las ◮ Q = {q0, q1, qS, qN}.
posiciones restantes el arreglo contiene ◮ F = {qS}.
símbolo blanco B. ◮ δ es definida como:
◮ La cabeza lectora se coloca en la δ (q0, 0) = (q1, 0, →)
primera posición de w y la maquina δ (q0, B) = (qS, B, →)
queda en el estado inicial q0. δ (q1, 0) = (q0, 0, →)
δ (q1, B) = (qN, B, →)
En cada paso:
◮ La máquina lee el símbolo a en la celda MÁQUINAS DE TURING:
apuntada por la cabeza lectora y EJECUCIÓN
determina en qué estado q se encuentra. Supongamos que w = 0000:
◮ Busca en el programa una instrucción
para (q, a). Si esta instrucción no existe,
entonces la maquina se detiene.
◮ Si la instrucción existe, entonces la
ejecuta: Escribe un símbolo en la posición
apuntada por la cabeza lectora, pasa a un
nuevo estado y mueve la cabeza lectora a
la derecha o a la izquierda Si la maquina
se detiene en un estado final, entonces la
maquina Acepta.
MÁQUINAS DE TURING:
FORMALIZACIÓN
Definición
Máquina de Turing (determinista): (Q, A,
q0, δ, F)
◮ Q es un conjunto finito de estados.
◮ A es un alfabeto tal que B 6∈ A.
◮ q0 es el estado inicial (q0 ∈ Q).
MÁQUINAS DE TURING: PALABRA ¿Existen problemas para los cuales no
VACÍA hay algoritmos? ¿Se puede
Finalmente supongamos que w = ε: demostrar esto?
EXISTENCIA DE PROBLEMAS NO
DECIDIRLES
Sea A = {0, 1}.
◮ ¿Cuantos lenguajes con alfabeto A
existen?
◮ ¿Cuantas máquinas de Turing con
Inicialmente: La cabeza lectora se alfabeto A existen?
encuentra en una posición cualquiera. ◮ ¿Existen lenguajes no decidirles?
◮ Si lanzamos un dardo al azar sobre el
EL LENGUAJE ACEPTADO POR espacio de todos los
UNA MÁQUINA DE TURING lenguajes con alfabeto A, ¿cuál es la
Definición probabilidad de que el
Dada una máquina de Turing M = (Q, A, dardo caiga en un problema decidirle?
q0, δ, F): L(M) = {w ∈ A∗ | M acepta w}.
L(M) es el lenguaje aceptado por M. La demostración anterior no es
En el ejemplo anterior: L(M) = {w ∈ {0} constructiva.
∗ | largo de w es par}. ◮ Sabemos que existe un problema
indecidible, pero no sabemos
DETENCIÓN DE UNA MÁQUINA es este lenguaje. Vamos a construir un
DE TURING lenguaje indecidible.
Una máquina de Turing puede no ◮ Usamos diagonalizacion.
detenerse en alguna entrada.
Ejemplo CODIFICACIÓN DE UNA
M = (Q, A, q0, δ, F), donde Q = {q0, q1}, MÁQUINA DE TURING
A = {0}, F = {q1} y δ Primero tenemos que introducir algo de
es definida de la siguiente forma: terminología. Supongamos que M = (Q,
δ (q0, 0) = (q1, 0, →) A, q1, δ, F), donde
δ (q0, B) = (q0, B, →) ◮ Q = {q1, . . ., qN}.
¿Con que palabra no se detiene esta ◮ A = {0, 1}.
máquina? ◮ F = {qi1, qi2, . . ., qim}, 1 ≤ i1 < i2 <
・ ・ ・ < im ≤ n.
PROBLEMAS DECIDIRLES Definimos una palabra C(M) =
Si una máquina de Turing no se detiene wQ00wδ00wF que representa a M.
en alguna entrada, entonces no puede ser
utilizada como un algoritmo. ◮ wQ:
◮ Un buen programa en C o Java no se
debería quedar en un loor infinito.
Definición Un lenguaje L es decidirle si
existe una máquina de Turing M que
se detiene en todas las entradas y tal que ◮ wδ: Usamos 1 para representar símbolo
L = L(M). 0, 11 para símbolo 1 y
111 para símbolo B. También usamos 1 primero un problema más simple.
para representar ← y 11 para →.
wδ es de la forma w1 ・ ・ ・ wok,
donde cada si representa una transición. UN PROBLEMA DE DECISIÓN MÁS
Por ejemplo, si δ (qim, 0) = (qj, B, ←), SIMPLE
entonces la siguiente palabra representa Otro problema de decisión Dada una
esta transición: máquina de Turing M, ¿es cierto que M
se detiene con entrada C(M)?
Le damos como entrada a M su propio
código, ¿es válido hacer esto?
◮ S´ı, C(M) es una palabra como
cualquier otra.
CODIFICACIÓN DE UNA Como problema de decisión:
MÁQUINA DE TURING: EJEMPLO H = {w ∈ {0, 1} ∗ | existe una MT M tal
Sea M = (Q, A, q1, δ, F), donde Q = {q1, que
q2, q3, q4}, A = {0, 1}, w = C(M) y M se detiene con entrada
F = {q3} y δ es definido de la siguiente C(M)}.
forma:
δ (q1, 0) = (q1, 0, →) δ (q2, B) = (q3, B, UN PROBLEMA DE DECISIÓN MÁS
←) SIMPLE: DEMOSTRACIÓN
δ (q1, 1) = (q2, 1, →) δ (q2, 0) = (q4, 0, Teorema
←) H es indecidible, vale decir, no existe una
δ (q2, 1) = (q4, 1, ←) máquina de Turing M que se detiene en
Entonces: C(M) = wQ00wδ00wF, donde: todas las entradas y tal que H = L(M).
wQ = 001001100111001111 Demostración: Por contradicción, asuma
wQ = 00111 que existe una MT M⋆ que se detiene en
wδ = todas las entradas y tal que H = L(M⋆).
001001001001001100100110011001100 Vale decir: para cada MT M, si M se
110011001110011100111001001100100 detiene con su propio código, entonces
1111001001001100110011110011001 M⋆ con entrada C(M) se detiene en un
estado final. En caso contrario, M⋆ se
UN PROBLEMA INDECIDIBLE: detiene en un estado que no es final.
PROBLEMA DE LA PARADA
Problema natural Sea M0 una MT que con entrada w
Dada una máquina de Turing M y una funciona de la siguiente forma:
palabra w, ¿se detiene M con entrada w? hace funcionar la maquina M⋆ con
Como problema de decisión: entrada w si M⋆ se detiene en un estado
Consideramos máquinas de Turing final entonces M0 no se detiene
con alfabeto {0, 1}. Entonces, en caso contrario M0 se detiene en un
U = {w′ ∈ {0, 1} ∗ | existe una MT M y w estado final
∈ A∗ tal que ¿Es posible construir M0? ¿Cómo?
w′ = C(M)0000w y M se detiene con
entrada w}. La pregunta ahora es si M⋆ acepta M0:
¿Es este problema decidirle? M⋆ acepta M0
◮ Vamos a demostrar que no, pero para si y solo si
eso vamos a considerar M0 se detiene con entrada C(M0)
si y solo si δ (q1, 0) = (q1, 0, →) δ (q2, B) = (q3, 0,
M⋆ se detiene en un estado no final con →)
entrada C(M0) δ (q1, 1) = (q1, 1, →) δ (q3, B) = (q4, 0,
si y solo si →)
M⋆ no acepta M0 δ (q1, B) = (q2, 0, →) δ (q4, B) = (qN, 0,
¡Tenemos una contradicción! →)
LA NOCIÓN DE COMPLETITUD:
HARENES
Definición
Dada una clase de complejidad C que
PTIME: conjunto de todos los problemas contiene PTIME, decimos
que pueden ser solucionados que L es haré para C si para todo L′ ∈ C
eficientemente. existe una reducción
polinomio de L′ a L.
UN PROBLEMA FUNDAMENTAL Teorema
El problema fundamental de nuestra Si PTIME (C y L es haré para C, entonces
disciplina: L 6∈ PTIME.
Dado un problema, encontrar un Entonces: Para probar que L 6∈ PTIME,
algoritmo eficiente para solucionarlo o basta encontrar una clase
demostrar que no existe tal algoritmo. C tal que PTIME (C y demostrar que L es
Primera parte (puede ser difícil): haré para esta clase.
Demostrar que L ∈ DTIME(t).
◮ Si L = {w ∈ {0} ∗ | largo de w es par}, LA NOCIÓN DE COMPLETITUD
entonces Pero: También queremos saber cuál es la
L ∈ DTIME(n). complejidad exacta de un
Segunda parte (es difícil): Demostrar que problema.
L 6∈ DTIME(t). Definición
◮ ¿Es cierto que SAT 6∈ PTIME? Decimos que L es completo para C si L ∈
◮ ¿Cómo podemos atacar este problema? C y L es haré para C.
Corolario
Si PTIME (C y L es completo para C,
entonces L 6∈ PTIME.
¿Se conoce alguna clase C tal que PTIME
(¿C? ¿Se puede
demostrar que SAT 6∈ PTIME usando CLASES DE COMPLEJIDAD NO
este enfoque? DETERMINISTAS
Definición
LA EXISTENCIA DE PROBLEMAS Un lenguaje L es aceptado en tiempo t
DIFÍCILES por una MT M no
Veamos un ejemplo de una clase que determinista si:
contiene en forma estricta a ◮ L = L(M).
PTIME: ◮ tM es O(t).
Teorema
PTIME (EXPTIME. CLASES DE COMPLEJIDAD NO
Existen problemas naturales que son DETERMINISTAS
completos para EXPTIME, y Definición
que por lo tanto no pueden ser resueltos NTIME(t) se define como el conjunto de
eficientemente. todos los lenguajes que pueden ser
aceptados en tiempo t por alguna MT no
¿ES SAT UN PROBLEMA DIFÍCIL? determinista.
Para demostrar que SAT 6∈ PTIME, solo Una clase fundamental:
tenemos que demostrar
que SAT es haré para EXPTIME
◮ Nadie sabe cómo hacer esto.
LA COMPLEJIDAD DE SAT
Tenemos que usar máquinas de Turing no ALGUNAS PROPIEDADES DE LA
deterministas para CLASE NP
entender la complejidad exacta de SAT. ¿Dónde vive NP? PTIME ⊆ NP ⊆
Notación EXPTIME.
Dada una MT no determinista M con ◮ Se sabe que al menos una de estas
alfabeto A: inclusiones es estricta
◮ Paso de M: Ejecutar una instrucción de (¿por qué?), pero no se sabe cuál.
la relación de ◮ Tampoco se sabe si ambas inclusiones
transición. son estrictas.
◮ tiempo(w): Numero de pasos de M con
entrada w en la TEOREMA DE COOK
ejecución más corta que acepta a w. Teorema (Cook)
Solo está definido para palabras aceptadas SAT es completo para la clase NP.
por M. Demostración: Sea L ∈ NP. Tenemos que
demostrar que L es
Definición reducible en tiempo polinomio a SAT.
Dado un número natural n: Esto significa que existe una función f:
{0, 1} ∗ → {0, 1} ∗ tal que:
◮ f es computable en tiempo polinomio.
◮ Para cada w ∈ {0, 1} ∗ se tiene que w ∈
L si y solo si
f (w) ∈ SAT.
Notación: f (w) = W
TEOREMA DE COOK:
DEMOSTRACIÓN
¿Qué sabemos de L?
◮ Como L ∈ NP, existe una MT M no
determinista tal que L = L(M) y tM es
O(no), donde k > 0 es una constante.
Vamos a representar el funcionamiento de Tercero, la cabeza siempre está en una
M con entrada w usando la formula W: M ´única posición:
acepta w si y solo si W es satisfacerle.
Suponemos:
◮ M = (Q, {0, 1}, q0, δ, F), donde F =
{qim} y no existe una
transición en δ para qm. Cuarto, el valor de una celda no cambia si
◮ Para cada q ∈ (Q \ {qim}) y a ∈ {0, 1, no es apuntada por la cabeza lectora:
B}, existe al menos una
transición en δ para (q, a).
◮ w = a0 ・ ・ ・ en−1, donde cada a ∈
{0, 1}.
Definición
Dado un número natural n:
tM(n) = Max {1} ∪
{espacio(w) | w ∈ _∗, |w| = n y M acepta
w}.
¿Por qué incluimos {1} en la definición?
Definición
Un lenguaje L es aceptado en espacio s
por una MT M no
determinista si:
◮ L = L(M).
◮ tM es O(s).
Definición
NSPACE(s) se define como el conjunto
de todos los lenguajes que pueden ser
aceptados en espacio s por alguna MT no
determinista. Dos clases fundamentales: