100 likes | 241 Views
Tratabilidad y NP-Completitud. Clases de problemas. Muchos problemas se resuelven con algoritmos polinómicos (O(n k )): problemas tratables Hay problemas que no se pueden resolver: problema de la parada.
E N D
Clases de problemas • Muchos problemas se resuelven con algoritmos polinómicos (O(nk)): problemas tratables • Hay problemas que no se pueden resolver: problema de la parada. • Hay problemas que no se pueden resolver en tiempo polinónico ((nk)): problemas intratables Antonio Fernández, GSyC
Problema de la parada • No existe ningún algoritmo que diga si un programa va a parar en tiempo finito con una entrada dada: • Supongamos que hay una función H(P,I) que lo resuelve. • Construimos D(P): If H(P,P) then loop forever else stop • ¿Qué debe hacer D(D)? Antonio Fernández, GSyC
Problemas NP-completos • Hay una clase de problemas que no se sabe si son tratables: problemas NP-completos • Nadie ha encontrado algoritmos polinómicos para ninguno de ellos. • Algunos muy parecidos a problemas tratables: • Ciclos eulerianos y hamiltonianos. • Satisfabilidad de 2-FNC y 3-FNC Antonio Fernández, GSyC
Clases P, NP y NPC • La clase P contiene todos los problemas tratables. • La clase NP contiene todos los problemas que se pueden “verificar” en tiempo polinómico. Claramente PNP. • La clase NPC contiene todos los problemas NP-completos Antonio Fernández, GSyC
Definicion NPC • Un problema es NP-Completo si: • Pertenece a NP. • Es tan “duro” como cualquier otro problema en NP (es NP-duro). • Un problema es NP-duro si el que haya un algoritmo polimómico para él implica que lo hay para todos los problemas en NP. Antonio Fernández, GSyC
P=NP? • Observa que si hubiera un algoritmo polinómico para cualquier problema en NPC entonces P=NP. • La hipótesis más aceptada es que P≠NP. • En general, si os encontráis un problema NPC mejor buscáis alternativas (simplificaciones, aproximaciones, etc.). Antonio Fernández, GSyC
Demostraciones de NPC • Se suelen usar problemas de decisión, cuya respuesta en SI o NO. • Se demuestra que el problema están en NP. • Se “reduce” un problema que se sabe está en NPC a este problema. Antonio Fernández, GSyC
Reducción polinómica • Demuestra que un problema en NP-duro. • Se parte de un problema p conocido en NPC. • Se construye un algoritmo polinómico que transforma p en nuestro problema. • Se concluye que si podemos resolver el nuestro en tiempo polinómico, p se resuelve en tiempo polinómico. Antonio Fernández, GSyC
Consejo • Si te encuentras con un problema que no eres capaz de resolver de manera eficiente, sospecha que puede ser NP-duro. • Intenta demostrar que lo es. • Si lo es, busca alternativas, porque mucha gente inteligente ha intentado diseñar algoritmos eficientes y no lo ha logrado. Antonio Fernández, GSyC