Introducción a la Complejidad Computacional

Anuncio
Introducción a la Complejidad Computacional
• El análisis sobre decidibilidad que hemos hecho nos permite saber qué podemos
hacer y qué no podemos hacer.
• Pero nada sabemos de qué tan difı́cil resolver los problemas en términos de
complejidad computacional.
• Más que clasificar los problemas en cuanto a su tiempo de ejecución, nos interesa
clasificarlos en términos de su tratabilidad.
• Diremos que un problema de decisión es tratable si se conoce un algoritmo
polinomial que lo resuelva, para cada instancia posible del problema.
• Normalmente utilizaremos indistintamente los términos tratable y eficiente.
• Consideremos el problema de satisfacibilidad de lógica proposicional:
Sea ϕ ∈ L(P ), ¿es ϕ satisfactible?
Jorge Baier Aranda, PUC
<< Atrás
250
• Sabemos que este problema es decidible, pero, en términos computacionales ¿qué
tan difı́cil es resolverlo?
• Lamentablemente, para este problema no se conoce un algoritmo polinomial
(eficiente)...
• Pero tampoco se ha demostrado que no exista.
• Sin embargo, existe suficiente evidencia para creer que efectivamente no existe
un algoritmo eficiente para resolverlo.
• A continuación detallaremos un poco más acerca de la teorı́a de complejidad que
hay detrás de estas afirmaciones.
Jorge Baier Aranda, PUC
<< Atrás
251
¿Qué es resolver un problema de decisión?
• Llevemos esta pregunta a un ejemplo más sencillo: ¿qué significa determinar si
una fórmula proposicional ϕ es satisfactible?
significa que debemos encontrar al menos una valuación σ tal que σ |= ϕ.
• En este caso, la valuación corresponde a una solución al problema.
• Una vez encontrada esta valuación, podemos dar una respuesta.
• Para analizar qué tan complejo es resolver un problema de decisión deberemos
preguntarnos qué tan complejo es generar la solución.
Jorge Baier Aranda, PUC
<< Atrás
252
Algunos problemas de decisión
• Los siguientes son algunos problemas de decisión tı́picos:
1. Dado un grafo (V, E), existe un camino cerrado que recorra a todos los nodos
del grafo (circuito hamiltoniano).
2. Dada una fórmula en 3-FNC (una fórmula proposicional con a lo más tres
literales por cláusula), ¿esta satisfactible? (3SAT)
3. La misma pregunta pero para cláusulas con a los más 2 literales. (2SAT)
4. Dado un conjunto de enteros a0, a1, . . . , an y un entero b, ¿existe un conjunto
de enteros x0, x1, . . . , xn? tales que
a0x0 + a1x1 + · · · + anxn ≤ b?
(Programación entera)
5. Dado un número N , existen dos factores P y Q distintos de 1 tales que
N = P Q (NUMCOMP).
Jorge Baier Aranda, PUC
<< Atrás
253
Las clases P y N P
• Las clases P y N P son clases de problemas de decisión.
• Un problema de decisión pertenece a la clase P si existe un algoritmo
determinı́stico polinomial, en el largo de la entrada, que lo resuelve.
• El algoritmo es polinomial para cualquier entrada.
• ¿qué es un algoritmo determinı́stico?
Es esencialmente una máquina de Turing como la que hemos visto hasta ahora.
• Algunos ejemplos de problemas de decisión en la clase P:
– dado un grafo (V, E), ¿es d la distancia mı́nima entre el nodo v1 y el nodo v2
(v1, v2 ∈ V )?
– dada una lista de números L, ¿es la lista L0 una ordenación ascendente de L?
• Un problema pertenece a la clase N P si es que es posible generar una solución
con una máquina no determinı́stica y luego verificarla en tiempo polinomial.
Jorge Baier Aranda, PUC
<< Atrás
254
• La N de N P viene de la generación no determinı́stica y la P de la verificación
polinomial.
• El proceso de generación y verificación puede ser aclarado con el siguiente
esquema:
Instancia del
problema
Sí
Algoritmo
Adivinador
de la solución
(no determinístico)
Jorge Baier Aranda, PUC
Algoritmo
Verificador
(determinístico
y polinomial)
No
<< Atrás
255
Algoritmos no determinísticos
• Ası́ como relacionábamos los algoritmos con las Máquinas de Turing,
relacionaremos los algoritmos no determinı́sticos con las máquinas de Turing
no determinı́sticas.
• Las MT’s no determinı́sticas, bajo una misma entrada, pueden tener distintas
posibles ejecuciones.
• En la siguiente figura se muestran distintas alternativas de ejecución.
Jorge Baier Aranda, PUC
<< Atrás
256
estado
palabra en la cinta
(q0 , w)
(p, w1 )
(r1 , x1 )
...
...
(r2 , x2 )
(r3 , x3 )
...
...
...
(qf , y )
...
...
(qf , y 0 )
(qf , y 000 )
(qf , y 00 )
• En esta figura representa un árbol de ejecución, en el cual cada nodo (q, w) es un
par que contiene el estado de la máquina y el string que contiene la cinta. Cada
flecha corresponde a una transición. En el estado p, la máquina podrı́a tomar
Jorge Baier Aranda, PUC
<< Atrás
257
cualquiera de las alternativas r1, r2 o r3
• Las hojas del árbol contienen los estados en los que la máquina se detiene junto
con la solución al problema, representada por la palabra en la cinta.
• Es importante notar que algunas de las ramas pueden ser infinitas.
• Decimos que la máquina ha resuelto el problema para una instancia w si al
menos una hoja del árbol construido a partir de (q0, w) (con q0 el estado inicial
de la máquina) contiene una hoja (p, wF ) tal que wF representa una solución
para el problema.
• Podemos decir que el tiempo que toma el algoritmo en llegar a una solución es
proporcional al largo de la rama hasta la hoja que la representa.
• Una forma alternativa de definir la pertenencia de un problema P a la clase
N P es que, para toda instancia w de P existe una rama del arbol de ejecución
acotada por un polinomio y que tiene como hoja a una solución para el problema.
Jorge Baier Aranda, PUC
<< Atrás
258
Reducción Polinomial
• Dentro de la clase de problemas N P existen algunos problemas que son más
difı́ciles que otros.
• Tal como en el caso de los algoritmos de decisión, diremos que un problema de
decisión P1 (con un lenguaje asociado L1) es reducible a un problema de decisión
P2 (con un lenguaje asociado L2 12) si es que es posible encontrar un función de
transformación f tal que
w ∈ L1 ssi f (w) ∈ L2
• En este caso decimos que L1 ≤ L2.
• Ahora, si la función f es computable en un tiempo polinomial dependiente del
largo de la entrada, diremos que
L1 ≤pol L2
12
En el futuro, designaremos los problemas de decisión sólo por su lenguaje.
Jorge Baier Aranda, PUC
<< Atrás
259
• ¿Para qué puede servir ahora el concepto de reducción?
• Por el momento, si sabemos que L es un problema que pertenece a la clase P y
demostramos que
L0 ≤pol L
entonces habremos demostrado que el problema L0 también pertenece a la clase
P
¿Por qué?
Porque en tiempo polinomial transformamos una instancia del problema L0 a un
problema de L y luego usamos el algoritmo de decisión para L (polinomial) para
resolver el problema.
Jorge Baier Aranda, PUC
<< Atrás
260
Problemas NP-completos
• Los problemas NP-completos son los más difı́ciles de la clase NP. Ya veremos por
qué...
• Definición 30. Un problema de decisión L es NP-completo ssi:
– L ∈ NP
– Para todo lenguaje L0 ∈ N P es posible demostrar que
L0 ≤pol L
• En términos prácticos esto significa que si encontramos un algoritmo eficiente
para resolver un problema NP-completo, podremos resolver eficientemente todos
los problemas de la clase NP.
• Teorema 8. [de Cook] El problema de decisión asociado al siguiente lenguaje:
SAT = {ϕ | es fórmula proposicional en FNC satisfactible}
Es NP-completo.
Jorge Baier Aranda, PUC
<< Atrás
261
¿Cómo podemos demostrar esto?
Sabemos que si un problema está en la clase N P, entonces éste es resuelto
por una MT no determinı́stica cuyo tiempo de ejecución está acotado por un
polinomio en el largo de la entrada.
En términos resumidos, la idea es que para toda MT no determinı́stica cuyo
tiempo de ejecución está acotado por un polinomio p en el largo de la entrada,
es posible construir una fórmula proposicional, en forma normal conjuntiva, que
describe el estado de la máquina y el estado de la cinta en todo momento de la
computación de la solución.
La fórmula construida es satisfactible ssi la máquina acepta.
• Esto significa que cualquier problema de la clase N P puede ser reducido a SAT.
• Esto implica que basta con resolver SAT eficientemente, para resolver
eficientemente todos los problemas de la clase N P.
• Una vez que se estableció que SAT es NP-completo, se demostró que muchos
otros problemas también son NP-completos:
Jorge Baier Aranda, PUC
<< Atrás
262
–
–
–
–
–
Circuito Hamiltoniano.
3-SAT.
Progamación entera.
Matching de expresiones regulares de Perl.
Buscaminas (!)
• Sin embargo, hay otros problemas que pertenecen a la clase NP, pero que aún
no se demuestra si son NP-completos:
– NUMCOMP (problema de encontrar los factores no triviales de un número
natural).
Jorge Baier Aranda, PUC
<< Atrás
263
¿Cómo demostramos que L es NP-completo?
• Lo que hay que demostrar son dos cosas:
1. Que el problema pertenece a la clase N P. Para demostrar esto, basta que sea
posible verificar en tiempo polinomial una solución para el problema.
2. Que todos los problemas de la clase N P se pueden reducir a L.
Para hacer esto basta reducir cualquier problema NP-completo a L.
La idea es que, dada tal reducción, inmediatamente sabemos que todos los
problemas de N P se pueden reducir a L.
En el siguiente esquema se muestra esta idea en forma gráfica lo que sucede
si reducimos SAT a L.
NP
CLIQUE
MINESWEEPER
SAT
L
CH
3−SAT
...
Jorge Baier Aranda, PUC
<< Atrás
264
3-SAT es NP-completo
• La demostración de este hecho la haremos reduciendo SAT a 3-SAT.
• Debemos demostrar que cualquier problema de SAT lo podemos reducir a un
problema 3-SAT.
• Supongamos que tenemos una fórmula arbitrara ϕ ∈ L(P ) en FNC.
• La función de transformación la podemos definir de la siguiente manera:
Jorge Baier Aranda, PUC
<< Atrás
265
Reemplazar cada cláusula l1 ∨ l2 ∨ l3 ∨ . . . ∨ ln Por:
(l1 ∨ l2 ∨ z1)∧
(¬z1 ∨ l3 ∨ z2)∧
...
(¬zk−2 ∨ lk ∨ zk−1)∧
...
(¬zn−4 ∨ ln−2 ∨ zn−3)∧
...
(¬zn−3 ∨ ln−1 ∨ ln)
donde n ≥ 4.
Es sencillo darse cuenta que la cláusula original es satisfecha si y sólo si este
nuevo conjunto es satisfecho.
Nuevamente, estas transformaciones están acotadas por un polinomio en el largo
de la cláusula.
Jorge Baier Aranda, PUC
<< Atrás
266
• Finalmente, podemos concluir que
SAT ≤pol 3-SAT
por lo que 3-SAT es NP-completo.
Jorge Baier Aranda, PUC
<< Atrás
267
CLIQUE es NP-completo
• Denominamos CLIQUE al siguiente problema:
Dado un grafo G y un entero k, ¿es posible encontrar un subgrafo de G completo
de tamaño k?13
• Claramente CLIQUE pertenece a N P.
• Ahora deberemos hacer una reducción de SAT a N P.
• Supongamos que tenemos una fórmula en FNC:
C1 ∨ C2 ∨ . . . ∨ Ck
con n variables proposicionales.
Formaremos un grafo G con un nodo por cada literal que aparece en cada
cláusula. Cada nodo está etiquetado con el literal que le dio origen.
13
Un grafo completo es aquel en el que todos los nodos están conectados entre sı́.
Jorge Baier Aranda, PUC
<< Atrás
268
Agregaremos un arco entre un nodo etiquetado con l y un nodo etiquetado con
l0 si y solo si:
– l y l0 están en cláusulas distintas.
– l no es el literal complementario de l.
Supongamos la siguiente fórmula:
(x1 ∨ x2 ∨ ¬x3) ∧ (¬x1 ∨ ¬x3) ∧ (x3 ∨ x2)
El grafo resultante queda como:
x1
x2
¬x1
¬x3
x2
Jorge Baier Aranda, PUC
¬x3
x3
<< Atrás
269
Ahora deberemos demostrar que G tiene un subgrafo completo de tamaño k ssi
ϕ es satisfactible.
⇒. Como todos los miembros del subgrafo pertenecen a cláusulas distintas,
cualquier valuación σ que hace verdadero a todo literal en el subgrafo hace
verdadera a la fórmula. (recordemos que dos literales complementarios no
pueden estar en un subgrafo completo)
⇐. Si la fórmula ϕ es satisfecha, debe existir una valuación σ que haga verdaderos
a al menos un literal en cada cláusula. Sean l1 ∈ C1, l2 ∈ C2, . . . , lk ∈ Ck estos
literales. Notemos que no es posible que existan dos literales complementarios
li y lj (1 ≤ i < j ≤ k). Necesariamente, entonces, podemos construir arcos
entre cada par de nodos en donde aparecen dichos literales siguiendo las reglas
de construcción del grafo.
Jorge Baier Aranda, PUC
<< Atrás
270
2-SAT está en P
• Recordemos que 2SAT es el problema de satisfacer fórmulas en 2-FNC (con
exactamente dos literales por cláusula).
• Una fórmula en 2-FNC se ve de la siguiente manera:
ϕ = (l1 ∨ m1) ∧ (l2 ∨ m2) ∧ . . . ∧ (ln ∨ mn),
donde li, lj son literales que corresponden a un conjunto de variables P .
• Reduciremos este problema a encontrar un camino con ciertas caracterı́sticas en
un grafo formado a partir de las variables en P .
• Se construye un grafo G = (V, E) en el cual
V = {`|` ∈ P o ` ∈ P },
es decir, para cada variable p ∈ P hay un nodo etiquetado con p y otro etiquetado
con ¬p.
Jorge Baier Aranda, PUC
<< Atrás
271
Por otro lado, por cada li ∨ mi, agregamos una arista entre ¬li y mi y entre ¬mi
y li (estos arcos provienen de considerar la disyunción como una implicación).
Proposición: El grafo construido contiene un ciclo ` → . . . → ` → . . . → ` si y
solo si ϕ es insatisfactible.
⇒ Supongamos que G contiene un ciclo de ese estilo y que ϕ es satisfactible.
En ese caso sabemos que existe un σ tal que σ |= ϕ.
Hay dos casos:
– σ(`) = 1. Debido a la estructura del ciclo esto obliga a que σ(`) = 1, lo cual
es una contradicción.
– σ(`) = 0. Lleva a una contradicción, igual que en el caso anterior.
⇐ Si no hay un ciclo de este estilo, es posible siempre construir una valuación σ
tal que σ |= ϕ de la siguiente manera:
1. Para cada literal ` sin un valor de verdad asignado, le asignamos valor de
verdad verdadero.
2. Asignamos valor de verdad verdadero a todos los nodos que son alcanzables
desde `.
3. Asignamos valor de verdad falso a las negaciones de cada uno de los nodos
asignados.
Jorge Baier Aranda, PUC
<< Atrás
272
4. Si aún existen nodos sin valor de verdad asignado, volver al paso 1.
Este algoritmo siempre producirá valuaciones consistentes, ya que nunca es
posible que se asigne al mismo tiempo valor de verdad 1 y valor de verdad 0 a
un mismo nodo (no hay ciclos). Por otra parte, con esta asignación se satisfacen
todos las disyunciones de la fórmula que están representadas a través de los arcos
del grafo.
Importante: Este grafo se puede construir en tiempo polinomial en el largo de
la fórmula.
• Una vez demostrado este teorema, para chequear la satisfactibilidad de.ϕ, basta
con revisar si existe un camino ` → . . . → ` → . . . → ` en el grafo.
• ¡Este problema es polinomial! Existe un algoritmo O(n3) que encuentra las
distancias entre todo par de nodos de un grafo de n nodos.
Jorge Baier Aranda, PUC
<< Atrás
273
Descargar