Title: Presentaci
1Diseño y análisis de algoritmos
Introducción a Teoría de NP-Completitud
2Temario
- Introducción a Teoría de NP-Completitud Ejemplo
de clave simétrica - Introducción
- Intratabilidad
- Problemas
- Las clases P y NP
- Problema SAT
- Reducibilidad polinómica
- Problemas NP-Completos
- Problemas NP-Duros
- Algoritmos Aproximados
3Introducción a Teoría de NP-Completitud
Introducción
- Complejidad computacional
- Considera globalmente todos los posibles
algoritmos para resolver un problema dado - En esta teoría interesan los problemas que pueden
ser resueltos por un algoritmo en tiempo
polinónmico(tratable) y los problemas para los
cuales no se conoce ningún algoritmo polinómico
(es decir, el mejor algoritmo conocido es no
polinómico y por lo tanto intratable) - La teoría de la NP-Completitud no proporciona un
método para obtener algoritmos de tiempo
polinómico. Tampoco dice que estos algoritmos no
existan . Lo que muestra es que muchos de los
problemas para los que no se conoce algoritmos
polinómicos están relacionados (computacionalmente
) - Además de los problemas P y NP existen dos clases
de problemas - NP-completos
- NP-duros
4Introducción a Teoría de NP-Completitud
Introducción
- Un problema NP-completo tiene la propiedad de que
puede ser resuelto en un tiempo polinómico si y
sólo si todos los problemas NP-completos puede
ser resuelto en un tiempo polinómico. - Si un problema NP-duro puede ser resuelto en un
tiempo polinómico, entonces todos los problemas
NP-completos puede ser resuelto en un tiempo
polinómico - Con el análisis de algoritmos se ha tratado de
demostrar que un problema bajo estudio puede
resolverse en un tiempo que está en
, para alguna función - Por otro lado se busca una función lo
más grande posible tal que se pueda demostrar que
cualquier algoritmo que resuelva correctamente el
problema (en todos sus casos) necesita de un
tiempo , al menos - Cuando se habrá
encontrado un algoritmo o más eficiente posible
(salvo por las constantes mutiplicativas ocultas) - Ejemplo multiplicación de matrices , su cota
inferior es - Se puede encontrar un algoritmo ?
- Como el mejor algorimo es se puede
seguir investigando
5Introducción a Teoría de NP-Completitud
Intratabilidad
- Def un algoritmo de tiempo polinómico , es aquél
cuya complejidad en tiempo en el caso peor, está
acotada por un polinomio (en relación al tamaño
de la entrada) - Son polinómicos los de complejidad ,
, - No son polinómicos los de complejidad
- Un problema es intratable si no se puede resolver
en tiempo polinómico.(Es una propiedad del
problema). Caso contrario, es tratable. - Dos categorías generales se pueden definir para
los tipos intratables - Problemas que se han demostrado intratables
- Problemas que no se han demostrado intratables,
pero para los cuales no se ha encontrado un
algoritmo polinómico.
6Introducción a Teoría de NP-Completitud
Intratabilidad
- Ejemplos de algoritmos polinómicos vistos
- Ordenamiento (quickSort)
- Búsqueda Binaria
- Multiplicación de matrices estándar
- Caminos más cortos en un grafo
- Muchos de los ejemplos anteriores pueden tener
algoritmos no polinómicos que los resuelven. Pero
eso no quiere decir que los problemas no sean
tratables. - Existen dos tipos, de problemas, para los cuales
se ha demostrado su intratabilidad - Problemas que generan una cantidad no polinomial
de salidas. - Ejemplo, determinar todos los circuitos
Hamiltonianos (un circuito hamiltoniano es un
camino de un grafo de n nodos, que visita una vez
cada nodo y vuelve al nodo de partida.) pueden
ser hasta (n-1)! - Porblemas para los que se les puede probar que no
se pueden resolver en un tiempo polinomial
7Introducción a Teoría de NP-Completitud
Intratabilidad
- Porblemas para los que se les puede probar que no
se pueden resolver en un tiempo polinomial. Por
extraño que parezca , se han encontrado pocos
problemas de este tipo - Problemas indecidibles no existe algoritmo que
los resuelva. Problema de parada. - Problemas decidibles generalmente construídos
artificialmente, con aplicaciones prácticas. - Existen problemas para los cuales no se ha
encontrado un algoritmo polinomial, pero nadie ha
demostrado que dicho algoritmo no sea posible - Problema de la mochila
- Problema del vendedor viajero
- Problema de la suma de subconjuntos
- Problema de coloreado de grafos
- Problema de los circuitos hamiltonianos
- Existe una relación interesante entre muchos de
estos tipos de problemas la estudia la teoría
de la NP-completitud
8Introducción a Teoría de NP-Completitud Problemas
- Inicialmente nos restringiremos a problemas de
decisión la salida de un problema de decisión
es simplemente sí o no. - En el curso se mostraron muchos de los problemas
anteriores como problemas de optimización. Cada
problema de tiene un problema de decisión
correspondiente. - Ejemplos
- Problema del vendedor viajero dado un grafo
dirigido con arcos valorados , el problema de
optimización consiste en encontrar un circuito de
costo mínimo, que empiece en un nodo , acabe en
ese nodo y visite al resto de los nodos
exáctamente una vez. - El problema de desición asociado consiste en
determinar, dado un positivo - d, si el grafo tiene un circito de costo no
mayor que d. - Problema de coloreado de grafos Determinar el
mínimo número de colores necesario para colorear
un grafo, de tal forma que no haya dos vértices
adyacentes con el mismo color. - El problema de decisión correspondiente
consiste en , dado un entero m, determinar si
existe un coloreado que utilice como mucho m
colores.
9Introducción a Teoría de NP-Completitud Problemas
- Problema del Cliqué un cliqué de un grafo no
dirigido G(V,A), es un conjunto W de V, tal que
cada vértice de W es adyacente al resto de
vértices en W. - Wa,b,c,d
- El problema de optimización del cliqué consiste
en maximizar el tamaño del cliqué - El problema de decisión del cliqué consiste en
determinar, dado un número entero positivo k, si
existe para el grafo un cliqué que contenga al
menos k vértices. - No se han encontrado algoritmos polinomiales para
los problemas descritos ya sea para su versión de
optimización o de decisión. - Sin embargo, si se desarrollara un algoritmo
polinómico para el problema de optimización, se
tendría también un algoritmo polinómico para su
versión de decisión. - Una solución al problema de optimización, produce
una solución del correspondiente problema de
decisión. Por lo que al comienzo se estudiarán
los problemas de decisión para pasar luego a los
de optimización.
10Introducción a Teoría de NP-Completitud Las
clases P y NP
- Definición P es el conjunto de todos los
problemas de decisión que pueden ser resueltos
por un algoritmo polinomial. - Qué problemas de decisión están en P?
- Qué problemas de decisión no están en P?
- Un algoritmo no determinista está compuesto por
dos fases - Fase de adivinación (no determinista)dada una
instancia o conjunto de datos para un problema
dado, produce una salida S, que puede entenderse
como una supuesta solución. - Fase de verificación (determinista)Dada la
instancia y la salida S, y procediendo de forma
determinista , o se devuelve cierto lo cual
significa que se ha verificado que la respuesta
para la instancia es si, o devuelve falso. - Teóricamente , se dice que un algoritmo no
determinista resuelve un problema de decisión
si - Para cualquier instancia par la cual la respuesta
es si hay alguna salida S, para la cual la
fase de verificación devuelve cierto. - Para cualquier instancia par la cual la respuesta
es no no hay ninguna salida S, para la cual la
fase de verificación devuelva verdadero
11Introducción a Teoría de NP-Completitud Las
clases P y NP
- Ejemplo Problema del Vendedor viajero
- Supongamos que dado un grafo G(V,A) y un número
d, una persona asegura que la respuesta al
problema es si, es decir asegura que hay un
circuito con costo total inferior a d. - Es razonable pedirle que pruebe su afirmación,
mostrando o produciendo un circuito hamiltoniano
de costo no superior a d. - Si la persona produce, por ejemplo S, una lista
de todos los vértices del grafo, se podría
construir un algoritmo que verificara si la ruta
determinada por S tiene un costo menor a d.
funcion verificar(G,d,S)booleano inicio si S
es circuito and costo_total(S) ltd entonces
devolver verdadero sino devolver falso
fin-si fin
Ejercicioimplementar el algoritmo con más
detalle y mostrar que su complejidad es
polinomial.
12Introducción a Teoría de NP-Completitud Las
clases P y NP
- Definición Un algoritmo no determinístico de
tiempo polinomial es un algoritmo no determinista
cuya fase de verificación es un algoritmo de
tiempo polinomial - Definición NP es el conjunto de todos los
problemas de decisión que pueden ser resueltos
por algoritmo no determinísticos de tiempo
polinomial . - NP viene de Nondeterministic Polinomyal
- Para que un problema esté en NP debe existir un
algoritmo que haga la verificación en tiempo
polinómico. - Ya que se puede verificar con un algoritmo
polinomial el problema del vendedor viajero está
en NP. - Esto no significa que haya algoritmos de tiempo
polinómicos que lo resuelvan - El principal propósito de introducir los
conceptos de algoritmos no determinista y la
clase NP es el clasificar los problemas - qué otros porblemas son NP?. Todos los nombrados
anteriormente (Y muchos más)
13Introducción a Teoría de NP-Completitud Las
clases P y NP
- Hay un gran número de problemas que están
trivialmente en NP todo problema P está también
en NP. - La figura muestra la relación que se cree
existe entre las clases P y NP - Nadie ha probado que exista un problema en NP que
no esté en P - La cuestión de si PNP es una de las más
misteriosas e importantes en informática - Para mostrar que tendríamos que
encontrar un problema en NP que no esté e P,
mientras que para probar que PNP, en principio,
tendríamos que encontrar un algoritmo polinomial
para cada problema en NP - Se verá que esta tarea se puede simplificar
bastante. Veremos que es suficiente encontrar un
algoritmo de tiempo polinomial para uno sólo de
los problemas en la clase de problemas
NP-completos
P
NP
14Introducción a Teoría de NP-Completitud Problema
SAT
- Una variable lógica , puede tomar valores
verdadero o fálso . Si x es una variable lógica,
es la negación de x. - Un literal es una variable lógica o su negación
- Una cláusula es una secuencia de literales
separados por el operador lógico or - Una expresión lógica en forma normal conjuntiva
(FNC), es una secuencia de cláusulas separadas
por el operador lógico and - El problema de decisión de satisfactibilidad FNC
(SAT-FNC), consiste en determinar, dada una
expresión lógica FNC , si existe una asignación
de valores verdadero-falso para las variables, de
manera que la expresión completa sea verdadera. - Ejemplo para la instancia
- la respuesta es si puesto que la
expresión es verdadera cuando - Para la instancia
- la respuesta es no
15Introducción a Teoría de NP-Completitud Problema
SAT
- A veces se clasifica como subproblema SAT ,
dependiendo de las variables de una cláusula,
2-SAT a lo más dos variables por cláusula, 3-SAT
3 variables por cláusula. - Es fácil escribir un algoritmo determinista de
complejidad polinomial, que tome como entrada,
una expresión lógica en FNC y una asignación de
variables y verifique si la expresión es
verdadera para la asignación. - Por lo tanto, SAT, está en la clase NP
- Nadie ha encontrado un algoritmo polinomial para
resolver SAT-FNC, pero tampoco nadie ha probado
que dicho algoritmo no exista, por lo que no se
sabe si está en la clase P - En 1971, Stephen Cook demostró que si SAT está en
P entonces P NP
16Introducción a Teoría de NP-Completitud
Reducibilidad polinómica
- Supongamos que se requiere resolver el problema
de decisión A y que se tiene el algoritmo que
resuelve el problema de decisión B - Supongamos también que se tiene un algoritmo que
construye una instancia y de B, para toda
instancia x de A de tal forma que un algoritmo
para B responde si para y si y sólo si la
respuesta al problema para x es si. Dicho
algoritmo se denomina algoritmo de
transformación. - Definición Si existe un algoritmo de
transformación polinomial del problema de
decisión A en el problema de decisión B, el
problema A es reducible polinomialmente al
problema B. Se denota
17Introducción a Teoría de NP-Completitud
Reducibilidad polinómica
- Si el algoritmo de reducibilidad es polinomial y
se tiene un algoritmo polinomial para B,
intuitivamente parece que el algoritmo para A
resultante de la combinación debe ser de
complejidad polinomial - Teorema1 Si el problema de decisión está en P y
, entonces el problema de decisión A está
en P. - Demostración
- Sea p el polinomio que acota la complejidad en
tiempo del algoritmo de transformación, y q el
polinomio que acota la complejidad del algoritmo
polinomial B, - Supongamos que se tiene una instancia para A de
tamaño n - Como el algoritmo de transformación da como mucho
pasos, el tamaño de la instancia para el
problema B es a lo más - El alcoritmo para B se realiza con mucho en
pasos. - Por lo tanto la cantidad total de trabajo para
resolver A es a lo más
, que es un polinomio en n
18Introducción a Teoría de NP-Completitud
Problemas NP-Completos
- DefiniciónUn problema B es NP-Completo si
- Está en NP
- Para cualquier otro problema A en NP,
- Por el teorema 1 , si pudiéramos demostrar para
cualquier problema NP-completo que está en P, se
podría concluir que PNP. - Si se demuestra que no puede existir una solución
polinomial para algun problema NP-Completo,
entonces NINIGUNO la tiene. - El destino de un problema NP-Completo es el
destino de todos, todos son tratables o todos son
intratables. - Teorema 2 (Cook/Levin)El problema SAT es
NP-Completo - No se verá la demostración, pero esta no se basa
en reducir exahustivamente todos los problemas NP
a SAT. La demostración, se basa en propiedades
comunes a todos los problemas NP, de manera de
probar que cualquier problema NP se puede reducir
a SAT. - Una vez probado el Teorema 2, se puede probar
que mucho otros problemas son NP-Completos. Las
demostraciones se basan en el siguiente teorema.
19Introducción a Teoría de NP-Completitud
Problemas NP-Completos
- Teorema 3 Un problema C es NP- completo si
- Está en NP
- Para algún problema NP-Completo B,
- Demostración
- Por ser B NP-Completo, para cualquier problema A
en NP - Como la reductibilidad es transitiva, entonces
- Puesto que C está en NP, satisface la definición
de NP-Completo. - Por los teoremas 2 y 3 , podemos demostrar que un
problema es NP-Completo mostrando que está en NP
y que SAT se puede reducir a él. - PDCProblema de decisión Cliqué, es NP-Completo
- Ejercicioprobar que el PDC está en NP,
escribiendo un algoritmo polinomial - que verifique la solución de las instancias de
PDC. - Probar que SAT se puede reducir al PDC
20Introducción a Teoría de NP-Completitud
Problemas NP-Completos
- Sea
una expresión lógica en FNC, con variables - Transformamos B en un grafo G(V,A) donde,
-
- es
un literal de la cláusula , - Por ejemplo para
el grafo equivalente
es - Ejercicio, probar que la transformación es
polinómica
21Introducción a Teoría de NP-Completitud
Problemas NP-Completos
- Se debe probar que B es satisfacible si y sólo si
G tiene un cliqué de tamaño al menos k - Si B es satisfacible, entonces G tiene
un cliqué de tamaño al menos k. - Si B es satisfacible, hay una asignación de
variables que hace cada cláusula cierta - Esto significa que hay al menos un literal en
cada cláusula que es verdadero . Elegimos
uno de estos literales de cada . - Sea es el literal cierto
tomado de - forma un cliqué en G de tamaño k, ya que
hay una arco entre cada par de vértices
y en , porque y tanto
y como z son verdaderos - Si G tiene un cliqué de tamaño al menos
k, entonces B es satisfacible. - Ya que no hay arista entre un vértice y
otro , los índices de los vérices del
cliqué deben ser todos diferentes - Ya que sólo hay k índices diferentes, el cliqué
tiene que tener como mucho k vértices
22Introducción a Teoría de NP-Completitud
Problemas NP-Completos
- Por tanto si el grafo G tiene un cliqué de
tamaño al menos k , el número de vértices de
tiene que ser exactamente k - Tomamos
- S contiene k literales, uno por cada cláusula.
- S no puede contener un literal y y su complemento
porque, seguún la definición de G no hay
ningún arco conectando con
para ningún i y j - Por lo tanto si hacemos
- y asignamos arbitrariamente los valores a
las variables que no están en S , todas las
cláusulas son verdaderas. - Por lo tanto, B es satisfacible.
23Introducción a Teoría de NP-Completitud
Problemas NP-Completos
- Se ha demostrado que el problema de decisión de
los Ciclos Hamiltonianos PDCH es NPcompleto. - Este problema consiste en determinar si un grafo
tiene al menos un ciclo que pase por todos los
vértice, exactamente una vez y vuelva al vértice
inicial. - Para demostrarlo
- Se construyó un algoritmo de verificación por lo
que es NP - Se demostró que SAT se puede reducir a PDCH
Ejemplo de ciclo hamiltoniano
24Introducción a Teoría de NP-Completitud
Problemas NP-Completos
- Ejercicio demostrar que el problema de decisión
del vendedor viajero (PDV simétrico, con grafo no
dirigido) es NP-Completo - La función verificar ya vista sirve también para
el caso simétrico. Por tanto PDV es NP. - Sólo queda probar que algún problema NP-Completo
se reduce a PDV. - PDCH se puede reducir a PDV
- Transformamos una instancia G(V,A) de PDCH en
una instancia G(V,A), con el mismo conjunto de
vértices V, un arco entre cada par de vértices ,
y el siguiente costo - G tiene un circuito Hamiltoniano si y solo si G
tiene un circuito de longitud o costo no mayor
que n , con nV cantidad de vértices -
25Introducción a Teoría de NP-Completitud
Problemas NP-Completos
- Ejemplo El grafo G se ha transformado a G
- En este caso la respuesta es no
- Ejercicio, plantear un algoritmo polinomial para
transformar el grafo
26Introducción a Teoría de NP-Completitud
Problemas NP-Duros
- Ahora se extenderan los resultados a problemas en
general, más allá de los de decisión. - Definición si el problema A puede resolverse en
tiempo polinomial, utilizando un algoritmo
polinomial hipotético para el problema B,
entonces A es Turing reducible en tiempo
polinomial a B. Se denota - Claramente, si A y B son problemas de decisión ,
- Definición Un problema B es NP-Duro si, para
algún problema NP-completo A, se cumple - Las reducciones turing son transitivas, por lo
tanto todos los problemas NP se reducen a algún
problema NP-duro. Esto significa que si existe un
algoritmo polinomial para un problema NP-duro,
entonces PNP.
duro
27Introducción a Teoría de NP-Completitud
Problemas NP-Duros
- Qué problemas son NP-Duros?
- Todo problma NP-Completo es NP-duro
- Los problemas de optimización asociados a
problemas NP-Completos son NP-duros - Qué problemas no son NP-Duros?
- No se sabe si hay un problema así.
- De hecho si se demostrara que algún problema no
es NP-Duro, estaríamos probando P NP - La razón es que (por contradicción) si PNP, todo
problema en NP se podría resolver con un
algoritmo polinomial - Por tanto, podríamos resolver cualquier problema
en NP, utilizando un algoritmo polinomial para un
problema B , simplemente llamando al algoritmo
polinomial de cada problema (no se necesitaría
el algoritmo hipotético para B) - Por lo tanto todos los problemas serían NP-Duros
28Introducción a Teoría de NP-Completitud
Problemas NP-Duros
- Por otro lado , cualquier problema para el cual
conocemos un algoritmo polinomial, podría no ser
NP-duro - De hecho, si probáramos que algún problema para
el cual tenemos un algoritmo polinomial fuera
NP-duro, se estaría probando que PNP - La razón es que tendríamos un algoritmo
polinomial real en vez de un algoritmo hipotético
para algun problema NP-duro - Por tanto, podríamos resolver cada problema en NP
en tiempo polinómico utilizando la Turing
reducción del problema al problema NP-duro. - El hecho de que un problema sea NP-Completo o
NP-duro es instructivo. Pues se sabe de antemano
que no hay algoritmo determinista eficiente para
resolverlos por lo que hay que usar otras
estrategias - Usar Bactracking o Branch and Bound, aunque en
muchos casos, la explosión combinatorial sea muy
grande - Encontrar un algoritmo eficiente y determinista
para una subclase de instancias. - Desarrollar un algoritmo aproximado no garantiza
devolver la solución óptima. A veces se llaman
heurísticas, que pueden ser determinísticas o
probabilísticas. La idea es que siempre
encuentre una solución aunque no sea la óptima.
29Introducción a Teoría de NP-Completitud
Algoritmos aproximados
- Se puede medir la calidad de la aproximación de
estos algoritmos - Sea P un problema, I una instancia de P, y F(I)
el valor de la solución óptima para I. Un
algoritmo aproximado A, produce soluciones
factibles para I cuyo valor es F(I) es menor (o
mayor)que F(I) si P es un problema de
maximización (o minimización). - Definición A es un algoritmo aproximado
absoluto si para cualquier instancia I - F(I) - F(I) lt k
- Para alguna constante k.
- Definición A es un algoritmo aproximadocon una
razón de aproximación r(n) si para si para
cualquier instancia I de tamaño n, F(I) está en
proporción r(n) con respecto al valor de la
solución óptima F(I) - Un algoritmo que alcanza una razón d
aproximación r(n) se denomina algoritmo
r(n)-aproximado
30Introducción a Teoría de NP-Completitud
Algoritmos aproximados
- La razón de aproximación nunca es menor que 1, ya
que - Un algoritmo 1-aproximado es óptimo, cuanto mayor
sea la razón , peores serán las soluciones.
implica