Problemas NP-completos

Anuncio
Análisis de Algoritmos
Problemas NP-completos
Dra. Elisa Schaeffer
elisa.schaeffer@gmail.com
PISIS / FIME / UANL
Problemas NP-completos– p. 1
Problemas NP-completos
La clase NP contiene numerosos problemas de
importancia práctica.
Típicamente el problema tiene que ver con la construcción
o existencia de un objeto matemático que satisface ciertas
especificaciones.
Problemas NP-completos– p. 2
Optimización versus decisión
La versión de la construcción misma es un problema de
optimización, donde la mejor construcción posible es la
solución deseada.
En la versión de decisión, que es la versión que
pertenece a la clase NP, la pregunta es si existe por lo
menos una configuración que cumpla con los requisitos
del problema.
Problemas NP-completos– p. 3
Demostraciones
Se puede decir que la mayoría de los problemas
interesantes de computación en el mundo real pertenecen
a la clase NP.
La aplicación “cotidiana” de la teoría de complejidad
computacional es el estudio sobre las clases a las cuales
un dado problema pertenece: solamente a NP o
también a P, o quizás a ninguna de las dos.
Problemas NP-completos– p. 4
Método básico
Mostrar que el problema de interés sea NP-completo,
porque este implicaría que el problema es entre los
menos probables de pertenecer en la clase P.
Si algún problema NP-completo perteneciera a NP,
aplicaría NP = P.
Problemas NP-completos– p. 5
Nivel de estudio
Si se sube a un nivel suficientemente general, muchos
problemas resultan NP-completos.
En muchos casos es importante identificar
qué requisitos causan que el problema resulte
NP-completo versus polinomial.
Una técnica básica es estudiar el conjunto de instancias
producidas por una reducción utilizada en la
demostración de ser NP-completo para capturar otro
problema NP-completo.
Problemas NP-completos– p. 6
Diseño de demostraciones
Demostrar NP-completitud para un problema Q:
Jugar con instancias pequeñas de Q para desarrollar unos “gadgets” u otros
componentes básicos para usar en la prueba.
Problemas NP-completos– p. 7
Diseño de demostraciones
Demostrar NP-completitud para un problema Q:
Jugar con instancias pequeñas de Q para desarrollar unos “gadgets” u otros
componentes básicos para usar en la prueba.
Buscar por problemas que ya tengan prueba de ser NP-completos que podrían
servir para la reducción necesaria.
Problemas NP-completos– p. 7
Diseño de demostraciones
Demostrar NP-completitud para un problema Q:
Jugar con instancias pequeñas de Q para desarrollar unos “gadgets” u otros
componentes básicos para usar en la prueba.
Buscar por problemas que ya tengan prueba de ser NP-completos que podrían
servir para la reducción necesaria.
Construir un reducción R
problema Q.
de un problema P conocido y NP-completo al
Problemas NP-completos– p. 7
Diseño de demostraciones
Demostrar NP-completitud para un problema Q:
Jugar con instancias pequeñas de Q para desarrollar unos “gadgets” u otros
componentes básicos para usar en la prueba.
Buscar por problemas que ya tengan prueba de ser NP-completos que podrían
servir para la reducción necesaria.
Construir un reducción R
problema Q.
de un problema P conocido y NP-completo al
Probar que con la entrada R(x), si la solución de Q es “sí” que este implica que la
solución de P con x también es siempre “sí”.
Problemas NP-completos– p. 7
Diseño de demostraciones
Demostrar NP-completitud para un problema Q:
Jugar con instancias pequeñas de Q para desarrollar unos “gadgets” u otros
componentes básicos para usar en la prueba.
Buscar por problemas que ya tengan prueba de ser NP-completos que podrían
servir para la reducción necesaria.
Construir un reducción R
problema Q.
de un problema P conocido y NP-completo al
Probar que con la entrada R(x), si la solución de Q es “sí” que este implica que la
solución de P con x también es siempre “sí”.
Probar que con la entrada x, si la solución de P es “sí” que este implica que la
solución de Q con R(x) también es “sí”.
Problemas NP-completos– p. 7
La dificultad
En la construcción típicamente se busca por representar
las elecciones hechas, la consistencia y restricciones.
Lo difícil es cómo expresar la naturaleza del problema P
en términos de Q.
Problemas NP-completos– p. 8
Estudios de continuación
Cuando ya está establecido que un problema de interés es
NP-completo, normalmente se dirige el esfuerzo de
investigación a
estudiar casos especiales
algoritmos de aproximación
análisis asintótica del caso promedio
algoritmos aleatorizados
algoritmos exponenciales para instancias pequeñas
métodos heurísticos de búsqueda local
Problemas NP-completos– p. 9
Relacion polinomialmente
balanceada
Una relación R ⊆ Σ∗ × Σ∗ se puede decidir en tiempo
polinomial si y sólo si existe una TM determinista que
decide el lenguaje {x; y | (x, y) ∈ R} en tiempo polinomial.
Una relación R está polinomialmente balanceada si
(x, y) ∈ R → (∃k ≥ 1 tal que |y| ≤ |x|k ).
Problemas NP-completos– p. 10
Conexión con la clase NP
Sea L ⊆ Σ∗ un lenguaje.
Aplica que L ∈ NP si y sólo si existe una relación
polinomialmente balanceada R que se puede decidir en
tiempo polinomial tal que
L = {x ∈ Σ∗ | (x, y) ∈ R para algún y ∈ Σ∗ } .
Problemas NP-completos– p. 11
Demostración (⇒)
Suponga que existe tal relación R.
Entonces L está decidida por una máquina Turing no
determinista que con la entrada x “adivina” un valor y con
largo máximo |x|k y utiliza la máquina para R para decidir
en tiempo polinomial si aplica (x, y) ∈ R.
Problemas NP-completos– p. 12
Demostración (⇐)
Suponga que L ∈ NP.
Esto implica que existe una máquina Turing no
determinista N que decide a L en tiempo |x|k para algún
valor de k.
Definimos (x, y) ∈ R si y sólo si y es una codificación de
una computación de N que acepta la entrada x.
Problemas NP-completos– p. 13
(⇐) continua...
Esta R está polinomialmente balanceada, como cada
computación de N tiene cota polinomial.
Además se puede decidir R en tiempo polinomial, como
se puede verificar en tiempo polinomial si o no y es una
codificación de una computación que acepta a x en N .
Como N decide a L, tenemos
L = {x | (x, y) ∈ R para algún y} ,
exactamente como queríamos.
Problemas NP-completos– p. 14
Certificado conciso
Un problema A pertenece a la clase NP si cada instancia
con la respuesta “sí” del problema A tiene por lo menos un
certificado concisoa y.
En los problemas típicos que tratan de la existencia de un
objeto matemático que cumple con ciertos criterios, el
objeto mismo sirve como un certificado.
a
también llamado un testigo polinomial
Problemas NP-completos– p. 15
Problemas kS AT
El lenguaje kS AT, donde k ≥ 1 es un entero, es el conjunto
de expresiones booleanas φ ∈ S AT (en C NF) en las cuales
cada cláusula contiene exactamente k literales.
3S AT es NP-completo
Problemas NP-completos– p. 16
Demostración
3S AT ∈ NP por ser un caso especial de S AT ∈ NP.
C IRCUITSAT es NP-completo y tenemos una reducción de
C IRCUITSAT a S AT.
Vamos a reconsiderar las cláusulas producidas en esa
reducción: ¡todas tienen tres literales o menos!
Problemas NP-completos– p. 17
Aumento de literales
Como las cláusulas son disyunciones, podemos
“aumentar” cada cláusula de uno o dos literales a tener
tres simplemente por copiar literales.
Entonces, tenemos una reducción de C IRCUITSAT a 3S AT.
Problemas NP-completos– p. 18
Transformaciones
A veces es posible aplicar transformaciones que eliminen
algunas propiedades de un lenguaje NP-completo así que
el hecho que está NP-completo no está afectado.
3S AT es NP-completo aún cuando solamente se permite
que cada variable aparezca por máximo tres veces en la
expresión φ ∈ 3S AT y además que cada literal aparezca
por máximo dos veces en φ.
Problemas NP-completos– p. 19
Demostración
Una reducción donde cada instancia φ ∈ 3S AT está
transformada a eliminar las propiedades no permitidas.
Considera una variable x que aparece k > 3 veces en φ.
Introducimos variables nuevas x1 , . . . , xk y reemplazamos
la primera ocurrencia de x en φ por x1 , la segunda por x2 ,
etcétera.
Problemas NP-completos– p. 20
Cláusulas auxiliares
Para asegurar que las variables nuevas tengan todas el
mismo valor, añademos las cláusulas siguientes en φ:
(¬x1 ∨ x2 ), (¬x2 ∨ x3 ), . . . , (¬xk ∨ x1 ).
Denota por φ′ la expresión que resulta cuando cada
ocurrencia extra de una variable en φ ha sido procesada
de esta manera.
Resulta que φ′ ya cumple con las propiedades deseadas y
que φ es satisfactible si y sólo si φ es satisfactible.
Problemas NP-completos– p. 21
2S AT
Para cada instancia φ de 2S AT, existe un algoritmo
polinomial basado en el problema R EACHABILITY en un
grafo G(φ).
Las variables x de φ y sus negaciones ¬x forman el
conjunto de vértices de G(φ).
Una arista conecta dos vértices xi y xj si y sólo si existe
una cláusula ¬xi ∨ xj o xj ∨ ¬xi en φ:
{xi , xj } ∈ E ⇔ {¬xj , ¬xi } ∈ E
Problemas NP-completos– p. 22
Demostración
φ no es satisfactible si y sólo si existe una variable x tal
que existen caminos de x a x̄ y viceversa en G(φ).
Entonces, sabemos que 2S AT es polinomial.
Problemas NP-completos– p. 23
2S AT ∈ NL
Además, resulta que 2S AT ∈ NL ⊆ P.
Como NL está cerrada bajo el complemento, podemos
mostrar que 2S AT Complement ∈ NL.
La existencia del camino de “no satisfiabilidad” del
resultado anterior puede ser verificada en espacio
logarítmico por computación no determinista por “adivinar”
una variable x y el camino entre x y ¬x.
Problemas NP-completos– p. 24
M AX 2S AT
Una generalización de 2S AT:
Dada: una expresión booleana φ en C NF con no más de
dos literales por cláusula y un entero k
Pregunta: ¿existe una asignaciones de valores T que
satisfecha por lo menos k cláusulas de φ?
M AX 2S AT es NP-completo
Problemas NP-completos– p. 25
NAESAT
El lenguaje NAESAT⊂ 3S AT contiene las expresiones
booleanas φ para las cuales existe una asignación de
valores T tal que en ninguna cláusula de φ, todas las
literales tengan el mismo valor ⊤ o ⊥.
NAESAT es NP-completo
Problemas NP-completos– p. 26
Demostración
C IRCUITSAT es NP-completo. Además para todo circuito C,
tenemos que C ∈ C IRCUITSAT si y sólo si R(C) ∈S AT.
Primero aumentamos todas las clausulas de la reducción
a contener exactamente tres literales por añadir uno o dos
duplicados de un literal z donde hace falta.
Vamos a mostrar que para la expresión booleana Rz (C) en
C NF de tipo 3S AT aplica que Rz (C) ∈
NAESAT⇔ C ∈C IRCUITSAT.
Problemas NP-completos– p. 27
La dirección (⇒)
Si T satisface a R(C) en el sentido de NAESAT, también la
asignación complementaria T̄ lo satisface por la condición
NAESAT.
En una de las dos asignaciones asigna ⊥ al literal z, por lo
cual todas las cláusulas originales están satisfechas en
esta asignación.
Entonces, por la reducción de C IRCUITSAT a S AT, existe
una asignación que satisface el circuito.
Problemas NP-completos– p. 28
La dirección (⇐)
Si C es satisfactible, existe una T que satisface a Rz (C).
Extendemos T para Rz (C) por asignar T (z) = ⊥.
En ninguna cláusula de Rz (C) es permitido que todos los
literales tengan el valor ⊤ (y tampoco que todos tengan el
valor ⊥).
Problemas NP-completos– p. 29
Análisis de T
Cada cláusula que corresponde a una puerta tipo ⊤, ⊥, ¬
o variable tenía originalmente dos literales o menos, por lo
cual contienen z y T (z) = ⊥.
Sin embargo, todas las cláusulas están satisfechas por T ,
por lo cual algún literal es necesariamente asignado el
valor ⊤ en T para cada cláusula.
Problemas NP-completos– p. 30
Puertas ∧ y ∨
En el caso de ∧, las cláusulas tienen la forma
(¬g ∨ h ∨ z), (¬g ∨ h′ ∨ z), (g ∨ ¬h ∨ ¬h′ ),
donde las primeras dos tienen z con su valor ⊥.
En la tercera, no todas las tres pueden tener el valor ⊤
porque así no es posible satisfacer a las dos primeras.
El caso de ∨ es parecido.
Problemas NP-completos– p. 31
Tarea para entregar el martes
El problema S AT trata de una expresión booleana φ en
C NF y es NP-completo.
¿Qué podemos deducir sobre la complejidad del problema
de satisfacción de expresiones en D NF?
Después, busca en la literatura o en línea la definición de
la clase de complejidad #P y vuelve a analizar la pregunta
anterior considerando en especial la clase #P.
Problemas NP-completos– p. 32
Descargar