Problemas NP-Completos
Problemas NP-Completos
Problemas NP-Completos
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Fundamentos de la Computación<br />
TC4001<br />
<strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong><br />
Centro de Manufactura / Centro de Sistema Inteligentes<br />
ITESM<br />
<strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong> TC4001 - p. 1/11
Introducción<br />
■ Hasta ahora se han abordado problemas que en<br />
su mayoría pueden resolverse en tiempo<br />
polinomial.<br />
Introducción<br />
Agenda: Clase P<br />
Agenda: Clase <strong>NP</strong><br />
Agenda:<br />
<strong>Problemas</strong><br />
<strong>NP</strong>-<strong>Completos</strong><br />
Agenda:<br />
Algoritmos de<br />
Aproximación<br />
Referencias<br />
<strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong> TC4001 - p. 2/11
Introducción<br />
■ Hasta ahora se han abordado problemas que en<br />
su mayoría pueden resolverse en tiempo<br />
polinomial.<br />
■ Sin embargo, hay problemas, como el de<br />
encontrar en un grafo un ciclo de Hamilton, en el<br />
cual la única solución en apariencia es<br />
resolverlos en forma casi exhaustiva.<br />
Introducción<br />
Agenda: Clase P<br />
Agenda: Clase <strong>NP</strong><br />
Agenda:<br />
<strong>Problemas</strong><br />
<strong>NP</strong>-<strong>Completos</strong><br />
Agenda:<br />
Algoritmos de<br />
Aproximación<br />
Referencias<br />
<strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong> TC4001 - p. 2/11
Introducción<br />
■ Hasta ahora se han abordado problemas que en<br />
su mayoría pueden resolverse en tiempo<br />
polinomial.<br />
■ Sin embargo, hay problemas, como el de<br />
encontrar en un grafo un ciclo de Hamilton, en el<br />
cual la única solución en apariencia es<br />
resolverlos en forma casi exhaustiva. En el caso<br />
del ciclo de Hamilton da una complejidad<br />
factorial.<br />
Introducción<br />
Agenda: Clase P<br />
Agenda: Clase <strong>NP</strong><br />
Agenda:<br />
<strong>Problemas</strong><br />
<strong>NP</strong>-<strong>Completos</strong><br />
Agenda:<br />
Algoritmos de<br />
Aproximación<br />
Referencias<br />
<strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong> TC4001 - p. 2/11
Introducción<br />
■ Hasta ahora se han abordado problemas que en<br />
su mayoría pueden resolverse en tiempo<br />
polinomial.<br />
■ Sin embargo, hay problemas, como el de<br />
encontrar en un grafo un ciclo de Hamilton, en el<br />
cual la única solución en apariencia es<br />
resolverlos en forma casi exhaustiva. En el caso<br />
del ciclo de Hamilton da una complejidad<br />
factorial.<br />
■ Lejos de intentar encontrar un algoritmo<br />
polinomial para el problema específico o para los<br />
problemas que vengan, se ha optado por una<br />
postura más radical:<br />
Introducción<br />
Agenda: Clase P<br />
Agenda: Clase <strong>NP</strong><br />
Agenda:<br />
<strong>Problemas</strong><br />
<strong>NP</strong>-<strong>Completos</strong><br />
Agenda:<br />
Algoritmos de<br />
Aproximación<br />
Referencias<br />
<strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong> TC4001 - p. 2/11
Introducción<br />
■ Hasta ahora se han abordado problemas que en<br />
su mayoría pueden resolverse en tiempo<br />
polinomial.<br />
■ Sin embargo, hay problemas, como el de<br />
encontrar en un grafo un ciclo de Hamilton, en el<br />
cual la única solución en apariencia es<br />
resolverlos en forma casi exhaustiva. En el caso<br />
del ciclo de Hamilton da una complejidad<br />
factorial.<br />
■ Lejos de intentar encontrar un algoritmo<br />
polinomial para el problema específico o para los<br />
problemas que vengan, se ha optado por una<br />
postura más radical: pensar en lo que se podrá<br />
alguna vez llegar a hacer en lugar de lo que<br />
ahora se puede hacer.<br />
Introducción<br />
Agenda: Clase P<br />
Agenda: Clase <strong>NP</strong><br />
Agenda:<br />
<strong>Problemas</strong><br />
<strong>NP</strong>-<strong>Completos</strong><br />
Agenda:<br />
Algoritmos de<br />
Aproximación<br />
Referencias<br />
<strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong> TC4001 - p. 2/11
Agenda Clase P<br />
■ Definir el concepto de problema de decisión y<br />
contrastarlo contra el problema de optimización<br />
(cuando hay lugar).<br />
Introducción<br />
Agenda: Clase P<br />
Agenda: Clase <strong>NP</strong><br />
Agenda:<br />
<strong>Problemas</strong><br />
<strong>NP</strong>-<strong>Completos</strong><br />
Agenda:<br />
Algoritmos de<br />
Aproximación<br />
Referencias<br />
<strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong> TC4001 - p. 3/11
Agenda Clase P<br />
■ Definir el concepto de problema de decisión y<br />
contrastarlo contra el problema de optimización<br />
(cuando hay lugar). Mostrar algunos ejemplos:<br />
◆ Coloreo de Grafos<br />
◆ Calendarización de trabajos<br />
◆ Empacamiento<br />
◆ Subconjuntos<br />
◆ Satisfactibilidad<br />
◆ Agente viajero<br />
Introducción<br />
Agenda: Clase P<br />
Agenda: Clase <strong>NP</strong><br />
Agenda:<br />
<strong>Problemas</strong><br />
<strong>NP</strong>-<strong>Completos</strong><br />
Agenda:<br />
Algoritmos de<br />
Aproximación<br />
Referencias<br />
<strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong> TC4001 - p. 3/11
Agenda Clase P<br />
■ Definir el concepto de problema de decisión y<br />
contrastarlo contra el problema de optimización<br />
(cuando hay lugar). Mostrar algunos ejemplos:<br />
◆ Coloreo de Grafos<br />
◆ Calendarización de trabajos<br />
◆ Empacamiento<br />
◆ Subconjuntos<br />
◆ Satisfactibilidad<br />
◆ Agente viajero<br />
■ Definición de la clase P<br />
Introducción<br />
Agenda: Clase P<br />
Agenda: Clase <strong>NP</strong><br />
Agenda:<br />
<strong>Problemas</strong><br />
<strong>NP</strong>-<strong>Completos</strong><br />
Agenda:<br />
Algoritmos de<br />
Aproximación<br />
Referencias<br />
<strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong> TC4001 - p. 3/11
■ Contrastrar entre resolver y verificar.<br />
Agenda Clase <strong>NP</strong><br />
Introducción<br />
Agenda: Clase P<br />
Agenda: Clase <strong>NP</strong><br />
Agenda:<br />
<strong>Problemas</strong><br />
<strong>NP</strong>-<strong>Completos</strong><br />
Agenda:<br />
Algoritmos de<br />
Aproximación<br />
Referencias<br />
<strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong> TC4001 - p. 4/11
■ Contrastrar entre resolver y verificar.<br />
■ Algoritmo no determinista.<br />
Agenda Clase <strong>NP</strong><br />
Introducción<br />
Agenda: Clase P<br />
Agenda: Clase <strong>NP</strong><br />
Agenda:<br />
<strong>Problemas</strong><br />
<strong>NP</strong>-<strong>Completos</strong><br />
Agenda:<br />
Algoritmos de<br />
Aproximación<br />
Referencias<br />
<strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong> TC4001 - p. 4/11
■ Contrastrar entre resolver y verificar.<br />
■ Algoritmo no determinista.<br />
■ Ejemplo<br />
Agenda Clase <strong>NP</strong><br />
Introducción<br />
Agenda: Clase P<br />
Agenda: Clase <strong>NP</strong><br />
Agenda:<br />
<strong>Problemas</strong><br />
<strong>NP</strong>-<strong>Completos</strong><br />
Agenda:<br />
Algoritmos de<br />
Aproximación<br />
Referencias<br />
<strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong> TC4001 - p. 4/11
■ Contrastrar entre resolver y verificar.<br />
■ Algoritmo no determinista.<br />
■ Ejemplo<br />
■ Definición de la clase <strong>NP</strong><br />
Agenda Clase <strong>NP</strong><br />
Introducción<br />
Agenda: Clase P<br />
Agenda: Clase <strong>NP</strong><br />
Agenda:<br />
<strong>Problemas</strong><br />
<strong>NP</strong>-<strong>Completos</strong><br />
Agenda:<br />
Algoritmos de<br />
Aproximación<br />
Referencias<br />
<strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong> TC4001 - p. 4/11
■ Contrastrar entre resolver y verificar.<br />
■ Algoritmo no determinista.<br />
■ Ejemplo<br />
■ Definición de la clase <strong>NP</strong><br />
■ P ⊆ <strong>NP</strong><br />
Agenda Clase <strong>NP</strong><br />
Introducción<br />
Agenda: Clase P<br />
Agenda: Clase <strong>NP</strong><br />
Agenda:<br />
<strong>Problemas</strong><br />
<strong>NP</strong>-<strong>Completos</strong><br />
Agenda:<br />
Algoritmos de<br />
Aproximación<br />
Referencias<br />
<strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong> TC4001 - p. 4/11
Agenda: <strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong><br />
■ El concepto de reducción polinómica y<br />
reducibilidad<br />
Introducción<br />
Agenda: Clase P<br />
Agenda: Clase <strong>NP</strong><br />
Agenda:<br />
<strong>Problemas</strong><br />
<strong>NP</strong>-<strong>Completos</strong><br />
Agenda:<br />
Algoritmos de<br />
Aproximación<br />
Referencias<br />
<strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong> TC4001 - p. 5/11
Agenda: <strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong><br />
■ El concepto de reducción polinómica y<br />
reducibilidad<br />
■ Definición de problema <strong>NP</strong>-Completo y de<br />
<strong>NP</strong>-Hard.<br />
Introducción<br />
Agenda: Clase P<br />
Agenda: Clase <strong>NP</strong><br />
Agenda:<br />
<strong>Problemas</strong><br />
<strong>NP</strong>-<strong>Completos</strong><br />
Agenda:<br />
Algoritmos de<br />
Aproximación<br />
Referencias<br />
<strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong> TC4001 - p. 5/11
Agenda: <strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong><br />
■ El concepto de reducción polinómica y<br />
reducibilidad<br />
■ Definición de problema <strong>NP</strong>-Completo y de<br />
<strong>NP</strong>-Hard.<br />
■ Teorema de Cook: El problema de la<br />
satisfactibilidad es <strong>NP</strong>-Completo<br />
Introducción<br />
Agenda: Clase P<br />
Agenda: Clase <strong>NP</strong><br />
Agenda:<br />
<strong>Problemas</strong><br />
<strong>NP</strong>-<strong>Completos</strong><br />
Agenda:<br />
Algoritmos de<br />
Aproximación<br />
Referencias<br />
<strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong> TC4001 - p. 5/11
Agenda: <strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong><br />
■ El concepto de reducción polinómica y<br />
reducibilidad<br />
■ Definición de problema <strong>NP</strong>-Completo y de<br />
<strong>NP</strong>-Hard.<br />
■ Teorema de Cook: El problema de la<br />
satisfactibilidad es <strong>NP</strong>-Completo<br />
Introducción<br />
Agenda: Clase P<br />
Agenda: Clase <strong>NP</strong><br />
Agenda:<br />
<strong>Problemas</strong><br />
<strong>NP</strong>-<strong>Completos</strong><br />
Agenda:<br />
Algoritmos de<br />
Aproximación<br />
Referencias<br />
<strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong> TC4001 - p. 5/11
Agenda: <strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong><br />
■ El concepto de reducción polinómica y<br />
reducibilidad<br />
■ Definición de problema <strong>NP</strong>-Completo y de<br />
<strong>NP</strong>-Hard.<br />
■ Teorema de Cook: El problema de la<br />
satisfactibilidad es <strong>NP</strong>-Completo<br />
■ Lista de Karp<br />
Introducción<br />
Agenda: Clase P<br />
Agenda: Clase <strong>NP</strong><br />
Agenda:<br />
<strong>Problemas</strong><br />
<strong>NP</strong>-<strong>Completos</strong><br />
Agenda:<br />
Algoritmos de<br />
Aproximación<br />
Referencias<br />
<strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong> TC4001 - p. 5/11
Agenda: <strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong><br />
■ El concepto de reducción polinómica y<br />
reducibilidad<br />
■ Definición de problema <strong>NP</strong>-Completo y de<br />
<strong>NP</strong>-Hard.<br />
■ Teorema de Cook: El problema de la<br />
satisfactibilidad es <strong>NP</strong>-Completo<br />
■ Lista de Karp<br />
■ Teorema: Si un problema <strong>NP</strong>-Completo<br />
cualquiera está en P, entonces P = <strong>NP</strong> .<br />
Introducción<br />
Agenda: Clase P<br />
Agenda: Clase <strong>NP</strong><br />
Agenda:<br />
<strong>Problemas</strong><br />
<strong>NP</strong>-<strong>Completos</strong><br />
Agenda:<br />
Algoritmos de<br />
Aproximación<br />
Referencias<br />
<strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong> TC4001 - p. 5/11
Agenda: <strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong><br />
■ El concepto de reducción polinómica y<br />
reducibilidad<br />
■ Definición de problema <strong>NP</strong>-Completo y de<br />
<strong>NP</strong>-Hard.<br />
■ Teorema de Cook: El problema de la<br />
satisfactibilidad es <strong>NP</strong>-Completo<br />
■ Lista de Karp<br />
■ Teorema: Si un problema <strong>NP</strong>-Completo<br />
cualquiera está en P, entonces P = <strong>NP</strong> .<br />
■ Conjetura del millón de dolares: P = <strong>NP</strong> .<br />
http://www.claymath.org/<br />
Introducción<br />
Agenda: Clase P<br />
Agenda: Clase <strong>NP</strong><br />
Agenda:<br />
<strong>Problemas</strong><br />
<strong>NP</strong>-<strong>Completos</strong><br />
Agenda:<br />
Algoritmos de<br />
Aproximación<br />
Referencias<br />
<strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong> TC4001 - p. 5/11
Algoritmos de Aproximación<br />
■ Enfoque: La solución exacta a un problema de<br />
optimización es para fines prácticos inalcanzable<br />
en un tiempo razonable, pero una solución<br />
aproximada y rápida tiene sentido en el<br />
problema y tiene un valor práctico.<br />
Introducción<br />
Agenda: Clase P<br />
Agenda: Clase <strong>NP</strong><br />
Agenda:<br />
<strong>Problemas</strong><br />
<strong>NP</strong>-<strong>Completos</strong><br />
Agenda:<br />
Algoritmos de<br />
Aproximación<br />
Referencias<br />
<strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong> TC4001 - p. 6/11
Algoritmos de Aproximación<br />
■ Enfoque: La solución exacta a un problema de<br />
optimización es para fines prácticos inalcanzable<br />
en un tiempo razonable, pero una solución<br />
aproximada y rápida tiene sentido en el<br />
problema y tiene un valor práctico.<br />
■ El concepto de Heurísticas de solución.<br />
Introducción<br />
Agenda: Clase P<br />
Agenda: Clase <strong>NP</strong><br />
Agenda:<br />
<strong>Problemas</strong><br />
<strong>NP</strong>-<strong>Completos</strong><br />
Agenda:<br />
Algoritmos de<br />
Aproximación<br />
Referencias<br />
<strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong> TC4001 - p. 6/11
Algoritmos de Aproximación<br />
■ Enfoque: La solución exacta a un problema de<br />
optimización es para fines prácticos inalcanzable<br />
en un tiempo razonable, pero una solución<br />
aproximada y rápida tiene sentido en el<br />
problema y tiene un valor práctico.<br />
■ El concepto de Heurísticas de solución.<br />
■ Heurísticas ejemplo para:<br />
◆ TSP<br />
◆ Apareamiento mínimo<br />
Introducción<br />
Agenda: Clase P<br />
Agenda: Clase <strong>NP</strong><br />
Agenda:<br />
<strong>Problemas</strong><br />
<strong>NP</strong>-<strong>Completos</strong><br />
Agenda:<br />
Algoritmos de<br />
Aproximación<br />
Referencias<br />
<strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong> TC4001 - p. 6/11
Algoritmos de Aproximación<br />
■ Enfoque: La solución exacta a un problema de<br />
optimización es para fines prácticos inalcanzable<br />
en un tiempo razonable, pero una solución<br />
aproximada y rápida tiene sentido en el<br />
problema y tiene un valor práctico.<br />
■ El concepto de Heurísticas de solución.<br />
■ Heurísticas ejemplo para:<br />
◆ TSP<br />
◆ Apareamiento mínimo<br />
■ Garantía de calidad de una heurística<br />
Introducción<br />
Agenda: Clase P<br />
Agenda: Clase <strong>NP</strong><br />
Agenda:<br />
<strong>Problemas</strong><br />
<strong>NP</strong>-<strong>Completos</strong><br />
Agenda:<br />
Algoritmos de<br />
Aproximación<br />
Referencias<br />
<strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong> TC4001 - p. 6/11
Referencias Clásicas<br />
■ La clase P fue introducida por Alan Cobham en:<br />
Cobham A: The intrinsic computational<br />
difficulty of functions. In Proceedings of the<br />
Congress for Logic, Methodology, and the<br />
Philosophy of Science, pages 24-30.<br />
North-Holland. 1964.<br />
Introducción<br />
Agenda: Clase P<br />
Agenda: Clase <strong>NP</strong><br />
Agenda:<br />
<strong>Problemas</strong><br />
<strong>NP</strong>-<strong>Completos</strong><br />
Agenda:<br />
Algoritmos de<br />
Aproximación<br />
Referencias<br />
<strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong> TC4001 - p. 7/11
■ La clase P también fue independientemente<br />
definida por Jack Edmonds que también<br />
introdujo la definición de <strong>NP</strong> y conjeturó que<br />
P = <strong>NP</strong> .<br />
Edmonds, J: Paths, trees, and Flowers.<br />
Canadian Journal of Mathematics.<br />
17:449-467, 1965.<br />
Introducción<br />
Agenda: Clase P<br />
Agenda: Clase <strong>NP</strong><br />
Agenda:<br />
<strong>Problemas</strong><br />
<strong>NP</strong>-<strong>Completos</strong><br />
Agenda:<br />
Algoritmos de<br />
Aproximación<br />
Referencias<br />
<strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong> TC4001 - p. 8/11
El concepto de problema <strong>NP</strong>-<br />
Completo fue introducida por Stephen<br />
Arthur Cook (Turing Award<br />
1982) dió la demostración de que el<br />
problema de satisfactibilidad de expresiones<br />
3-CNF era <strong>NP</strong>-Completo.<br />
Cook, S: The complexity of<br />
the theorem proving procedures.<br />
Proceedings of the Third<br />
Annual ACM Symposium on<br />
Theory of Computing. pages<br />
151-158. 1971.<br />
Introducción<br />
Agenda: Clase P<br />
Agenda: Clase <strong>NP</strong><br />
Agenda:<br />
<strong>Problemas</strong><br />
<strong>NP</strong>-<strong>Completos</strong><br />
Agenda:<br />
Algoritmos de<br />
Aproximación<br />
Referencias<br />
<strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong> TC4001 - p. 9/11
Richard Manning Karp (Turing<br />
Award 1985) introdujo una metodología<br />
para reducción de problemas<br />
a otros y demostró una variedad de<br />
problemas <strong>NP</strong>-<strong>Completos</strong> en:<br />
Karp, R: Reducibility among<br />
combinatorial problems. Complexity<br />
of Computer Computations,<br />
pages 85-103. Plenum<br />
Press, 1972.<br />
Introducción<br />
Agenda: Clase P<br />
Agenda: Clase <strong>NP</strong><br />
Agenda:<br />
<strong>Problemas</strong><br />
<strong>NP</strong>-<strong>Completos</strong><br />
Agenda:<br />
Algoritmos de<br />
Aproximación<br />
Referencias<br />
<strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong> TC4001 - p. 10/11
Manindra Agrawal was born in May 1966,<br />
and since 2001 he has been a full professor at<br />
the Indian Institute of Technology in Kanpur, In-<br />
dia. For some years he has been interested in<br />
finding a polynomial time algorithm to test whet-<br />
her a given number is prime. Although random<br />
algorithms can solve this problem with high cer-<br />
tainty in polynomial time, it remained a long-<br />
standing challenge to find a method that works<br />
in every case.<br />
To the great surprise of the experts, Agrawal<br />
solved this problem in August 2002, working to-<br />
gether with two undergraduate students: Neeraj<br />
Kayal and Nitin Saxena. Their proof establishes<br />
the correctness of a conjecture made in 1999<br />
by Agrawal and Biswas.<br />
Introducción<br />
Agenda: Clase P<br />
Agenda: Clase <strong>NP</strong><br />
Agenda:<br />
<strong>Problemas</strong><br />
<strong>NP</strong>-<strong>Completos</strong><br />
Agenda:<br />
Algoritmos de<br />
Aproximación<br />
Referencias<br />
<strong>Problemas</strong> <strong>NP</strong>-<strong>Completos</strong> TC4001 - p. 11/11