Autómatas y Lenguajes Formales
Complejidad Computacional Problemas P-NP
UNLaM
Problemas P – NP y NP Completos
Complejidad Computacional
Hagamos un repaso
Una MT ACEPTA una cadena w si al ejecutarla, entra en un estado de aceptación
Una MT RECHAZA una cadena w si al ejecutarla entra en un estado de rechazo
Una MT entra en LOOP si cuando ejecuta, no entra ni en un estado de aceptación ni en un estado de rechazo
Una MT NO ACEPTA w si rechaza o entra en loop
Una MT NO RECHAZA w si acepta o entra en loop
Una MT PARA si acepta o rechaza la cadena w
Complejidad Computacional
Un lenguaje es RECURSIVAMENTE ENUMERABLE si existe una MT que acepta sus cadenas
Un lenguaje es RECURSIVO o DECIDIBLE si existe una MT que acepta o
rechaza, es decir, PARA SIEMPRE (o en un estado de aceptación o en uno de rechazo)
Para cualquier w L (MT) , MT acepta w Para cualquier w L (MT) , MT no acepta w ACEPTA,RECHAZA o LOOP
L (MT) = { w * / MT acepta w }
Para cualquier w L (MT) , MT acepta w Para cualquier w L (MT) , MT rechaza w ACEPTA o RECHAZA
L (MT) = { w * / MT acepta w }
Complejidad Computacional
La pregunta acerca de la computabilidad es :
¿ Qué problemas podemos resolver con una computadora?
Ya dijimos qué es un problema
Sabemos qué es una computadora Sabemos que es resolver
Ahora que ya sabemos :
La pregunta acerca de la complejidad es:
¿Qué problemas podemos resolver de manera eficiente con una computadora?
Vamos a estudiar esta eficiencia sobre los problemas DECIDIBLES (aquellos que cuya respuesta es SI o NO)
Un problema de decisión tiene asociado muchas instancias de las cuales algunas tienen como respuesta SI.
Complejidad Computacional
6
Problemas Decidibles ALGORITMO
Halting Problem
Teselación del Plano Validez Logica de
Primer Orden
Problemas Indecidibles
Problemas No Computables
EFICIENCIA
Complejidad Computacional
Repasemos
Computabilidad
Ningún modelo de computo es mas poderoso que una MT
Complejidad :
La complejidad temporal se mide con la función de pasos en una MT M para el peor caso tomado sobre una entrada de longitud n ( estructura o la longitud de la entrada)
En general aproximamos la función con la medición del factor dominante, el que crece.
Entonces → orden asintótico , particularmente O grande
Pero hay modelos que pueden ser más eficientes que una MT. De todas maneras, teóricamente eso no importa tanto porque siempre voy a estar cerca de las
aproximaciones asintóticas entre los modelos.
Complejidad Computacional
¿Qué es
eficiente
?Tesis de Cobhan – Edmonds
Un lenguaje puede ser decidible eficientemente si y solo si existe una MTD que siempre va a parar (acepta o rechaza) en tiempo polinomial.
Por lo tanto :Un algoritmo es eficiente si se ejecuta en tiempo polinomial
Un algoritmo se ejecuta en tiempo polinomial si el tiempo de ejecución es de orden O(nk)
para algún k
¿Por qué polinomios?
Porque siempre mantienen sus propiedades dentro de polinomios (Suma es polinómica, el producto, la composición)
¿Qué sería ineficiente entonces?
Los órdenes exponenciales
No se conozcan algoritmos polinomiales que lo resuelvan
Complejidad Computacional y MT
Volvamos a nuestra relación entre complejidad y MT (movimientos)
Vamos a diferenciar la complejidad en una MTD y MTND. Es natural pensar que la función de pasos va a ser más fácil de contar en una MTD que en una MTND.
En una MTD el conteo de pasos es lineal ya que el camino hacia la solución es directo.
Árbol de cómputo (MTD): secuencia lineal de movimientos que da una MTD con una entrada w.
En una computación determinística, el árbol es una línea recta. La complejidad temporal es el peso de dicho árbol.
MTD
La complejidad de una MTD está dada por la cantidad de movimientos desde el estado inicial hasta alcanzar un estado final en función del tamaño de la entrada.
Complejidad Computacional y MT
Maquinas de Turing No Determinísticas
En cada paso se selecciona una de las alternativas posibles.
En cada paso se continua la ejecución en paralelo de las distintas alternativas, generando una copia de la MTND por cada alternativa que sigue su ejecución independiente de las otras.
Una MTND acepta si alguna de sus alternativas llega a un estado de aceptación Una MTND rechaza si todas sus alternativas llegan a un estado de rechazo
Árbol de cómputo (MTND): son todas las secuencias de movimientos que podría dar una MTND con una entrada w.
En una MTND el conteo de pasos no es lineal, se ramifica en muchas soluciones posibles. El árbol se ensancha.
Complejidad Computacional y MT
Entonces para resolver la decisión de una MTND tenemos que ver que :
• Todas las secuencias en el árbol me digan NO o
• Encontrar una que me diga SI
¿Cómo medimos la complejidad entonces?
En una computación no determinística, la complejidad temporal está dada por los pasos que llevan a computar la rama más larga de una respuesta verdadera
Si esa función de pasos tiene orden polinómico, entonces el problema no determinístico es de orden polinomial.
En general un problema de este tipo se resuelve con una MTND que :
Genere una posible solución y verificando que esa solución sea correcta de manera que pueda decidir el problema
Complejidad Computacional y MT
Algunas ventajas de las MTND
Las MTND son igual de poderosas que las MTD
Convertir una MTND en una MTD aumenta la complejidad
Una MTND con complejidad f , se equivale con una MTD
con complejidad O(2
O(f))
La Clase P
La clase P (Polynomial time) es el conjunto de todos los problemas de decisión que se pueden resolver con una MTD en tiempo polinomial
Problemas Indecidibles RE
R
P
Un PROBLEMA puede RESOLVERSE EFICIENTEMENTE si y solo si esta EN P
Un PROBLEMA está en P si y solo si puede RESOLVERSE EN UNA COMPUTADORA en TIEMPO POLINOMIAL
El lenguaje del problema está en P si y solo si existe una MTD, un pgm en leng esencial, un pgm en un leng de programación que resuelve el problema en tiempo polinomial
La Clase P
EJEMPLOS
2-SAT : Dada una formula del cálculo proposicional con a lo sumo dos literales por clausula. ¿Es satisfacible?
Conectividad entre grafos : Dado un grafo G. Dos nodos n y m. ¿Hay un camino entre n y m?
Test de primalidad: Dado un número n, ¿ n es primo ? .
Sudoku : Dado un tablero T de 9 x 9 completo por números del 1 al 9. ¿ T es un sudoku?
2-COLOR : Dado un grafo no dirigido G, y dos colores cualesquiera. ¿ Existe una forma de colorear el grafo de manera que ningún par de nodos adyacentes tengan el mismo color ?
Matching Máximo: Dado un grafo G con nodos y, arcos que conectan sus nodos.
¿Hay un conjunto máximo de arcos que formen un matching (conjunto de arcos no adyacentes tal que ningún arco comparte un nodo) ?
Reducciones en P
¿Cómo podemos probar que un problema es P?
Haciendo un algoritmo o una MTD y asegurando que tiene O(nk).
Reduciendo el lenguaje del problema a un lenguaje en P
Problema
A Problema
B
Si existe un algoritmo para resolver un problema B y se pretende resolver un problema A ¿Podremos aprovechar el algoritmo A para resolver B?
Si cualquier instancia de A puede convertirse a una instancia de B, entonces decimos que A se reduce a B ( A B)
Reducciones Polinómicas en P
Si:
• Una instancia IA del problema A se reduce a una instancia de un problema B (IB ) y
• Existe un algoritmo para B que resuelve en tiempo polinómico IB
Entonces
• Se resuelve A en tiempo polinómico por reducción polinómica de A a B (A P B)
SI
NO
IA R B
A IB
Reducciones Polinómicas en P
Si L
A σ
1∗y L
B σ
2∗son lenguajes que representan a los problemas A y B respectivamente, una reducción polinómica (L
A
PL
B) del lenguaje L
A
1a un lenguaje L
B
2es una función f :σ
1∗→ σ
2∗tal que
f(w) puede computarse en tiempo polinomial
w L
A f(w) L
B w
1L
Ase reduce a L
B(L
A
PL
B) si existe una reducción polinómica de L
A
PL
BReducciones Polinómicas en P
Si B está en P y A
PB , entonces A está en P Teorema
Problema B : Dado un grafo G. Dos nodos n y m. ¿Hay un camino entre n y m?
Clasificación: P
Problema A: Dado un conjunto de conectores, con entradas y salidas,
¿Hay una manera de conectar la salida a con la entrada b?
Clasificación : ?
Ejemplo
Resolución : Problema A P Problema B A está en P
Complejidad Computacional y MT
Para resolverlo podemos intentar con alguna posible solución y verificar si es correcta. Si es correcta, encontré un camino, sino intento otro. Así, hasta que no haya mas caminos por recorrer.
¿Podemos resolverlo en tiempo polinomial?
SI, si las ciudades
son pocas
porque podemos encontrar todos los caminos y evaluarlos en un tiempo polinómico en relación al número de ciudades.¿ Habrá problemas que no pueden resolverse en tiempo polinomial ?
EJEMPLO : Problema de grafos (circuito euleriano)
¿Hay un camino que pasa por todas las ciudades exactamente una vez ?
C1
C2 C4
C3 C5
C7
C8 C9
C10
La Clase NP
• El problema se resuelve con una MTND que genere una posible solución y verifique que esa solución sea correcta de manera que pueda decidir el problema
• En una computación no determinística, la complejidad temporal está dada por los pasos que llevan a computar la rama más larga de una respuesta verdadera
• Si esa función tiene orden polinómico, entonces el problema no determinístico es de orden polinomial.
La clase NP (Nondeterministic Polynomial time) son la clase de los problemas que pueden resolver las MT no determinísticas en tiempo polinómico.
Decíamos que:
Un Problema NP
EJEMPLO : Problema de grafos
¿Hay un camino que pasa por todas las ciudades exactamente una vez ?
¿Es un problema NP?
Si, porque genera caminos no deterministicamente y los verifica deterministicamente en tiempo polinomial.
De esta manera si encontramos un camino, entonces podemos dar respuesta al problema.
Entonces este problema es NP
C1
C2 C4
C3 C5
C7
C8 C9
C10
Un Problema NP
Con una MTND con input <G>
<G> es el grafo codificado
No determinísticamente, obtenemos un camino de todos los posibles.
Para cada input <G, C> es el grafo codificado y el camino obtenido :
Determinísticamente verificamos en tiempo polinómico si ese camino pasa por todas las ciudades exactamente una vez.
Un Problema NP
C1 C2 C3 C4
C1 x x x
C2 x x x
C3 x x x
C4 x x x
C1
C2 C4
C3
Tenemos n! caminos posibles entre los nodos si no nos importa el punto de partida ni la dirección y cada par de nodos se conecta entre sí.
Si n = 4 24 posibles caminos
Un Problema NP
C
1 C
2
C
3 C
4
C 2
C
3 C
4
C
3 C
4
C
2 C
4 C
2 C
3
C 1
C
3 C
4
C
3 C
4
C
1 C
4 C
1 C
3
C 1
C
2 C
4
C
2 C
4
C
1 C
4 C
1 C
2
C 1
C
2 C
3
C
2 C
3 C
1 C
3 C
1 C
2
C 4
C
3 C
4 C
2 C
3 C
2 C
4 C
3 C
4 C
1 C
3 C
1 C
4 C
2 C
4 C
1 C
2 C
1 C
3 C
2 C
3 C
1 C
2 C 1
C1
C2 C4
C3
Un Problema NP
C
1 C
2
C
3 C
4
C 2
C
3 C
4
C
3 C
4
C
2 C
4 C
2 C
3
C 1
C
3 C
4
C
3 C
4
C
1 C
4 C
1 C
3
C 1
C
2 C
4
C
2 C
4
C
1 C
4 C
1 C
2
C 1
C
2 C
3
C
2 C
3 C
1 C
3 C
1 C
2
C 4
C
3 C
4 C
2 C
3 C
2 C
4 C
3 C
4 C
1 C
3 C
1 C
4 C
2 C
4 C
1 C
2 C
1 C
3 C
2 C
3 C
1 C
2 C 1
Ahora supongamos que no todos los nodos tienen conexión
C1
C2 C4
C3
Problemas NP
Con algunos nodos conectados o con todos los nodos conectados, claramente el problema anterior es NP
Podemos hacer un algoritmo no determinístico que resuelva los caminos y podemos hacer un algoritmo que lo verifique determinísticamente en tiempo polinomial.
El problema es el tiempo………
A medida que los nodos aumentan el algoritmo es el mismo, lo que pasa es que ya dejaría de ser tratable en términos del tiempo (polinómico)
¿Por qué?
Si n = 4 24 Si n = 6 720
Si n = 10 3.628.800
Si n = 15 1.307.674.368.000
Problemas NP
Otro ejemplo: SUDOKU:
No determinísticamente, obtenemos una respuesta de cómo llenar los casilleros.
Determinísticamente, podemos verificar si esa respuesta es o no correcta.
EJ
Si tengo un SUDOKU resuelto es un problema P
Reducciones en NP
¿Cómo?
• La reducción debe computarse determinísticamente en tiempo polinomial
• La salida de la reducción es la entrada a un algoritmo no determinístico con tiempo polinomial.
EL OBJETIVO DE LA REDUCCION ES TRANSFORMAR EL PROBLEMA; NO RESOLVERLO
¿Cómo podemos probar que un problema es NP?
Reduciendo el lenguaje del problema a un lenguaje en NP
Si B está en NP y A
PB , entonces A está en NP
IA R B
A IB
Clase NP
R
P NP
R
P NP
¿P=NP?
No hay respuesta todavía
Un problema que se verifica de manera eficiente, ¿se resuelve de manera eficiente?
Pero entonces , ¿ Se relacionan P y NP ?
Sabemos que todas las MT determinísticas están contenidas en las MT no determinísticas, entonces se deduce, en términos de Turing que P NP.
¿Dónde está NP?
P = NP : Problemas que se verifican bien pero no resuelven “bien”
1. Árbol de Steiner
2. Supersecuencia común más corta (SCL)
El árbol de Steiner, nombrado en honor a Jakob Steiner, es un problema de optimización combinatoria consistente en buscar la interconexión más corta para un conjunto de elementos dados. Se pueden añadir vértices intermedios y lados extras al grafo con el fin de reducir la longitud del árbol. El árbol de Steiner tiene aplicaciones en el diseño de circuitos eléctricos y redes de telecomunicaciones.
https://es.wikipedia.org/wiki/%C3%81rbol_de_Steiner
En informática, la supersecuencia común más corta de dos secuencias X e Y es la secuencia más corta que tiene X e Y como subsecuencias. Este es un problema estrechamente relacionado con el problema de subsecuencia común más largo. Dadas dos secuencias X =
<x1, ..., xm> e Y = <y1, ..., yn>, una secuencia U = <u1, ..., uk> es una supersecuencia común de X e Y si los elementos se pueden eliminar de U para producir X o Y. Una supersecuencia común más corta (SCS) es una supersecuencia común de longitud mínima. En el problema de supersecuencia común más corto, se dan las dos secuencias X e Y y la tarea es encontrar una supersecuencia común más corta posible de estas secuencias. En general, un SCS no es único
Se suele utilizar para determinar si existe una cadena de ADN simple de manera que haya múltiples secuencias de genes que podrían ser parte de la misma
https://en.wikipedia.org/wiki/Shortest_common_supersequence_problem
P = NP
Si P = NP todos estos problemas tendrían soluciones eficientes
Si P NP, ninguno de estos problemas tendría solución eficiente (Problemas aparentemente fáciles sin solución eficiente)
Lo que se sabe es que resolver la igualdad o desigualdad entre P y NP es muy difícil.
Hace casi 40 años que se busca probarlo . Por eso:
Este es actualmente uno de los problemas abiertos más importantes en la ciencia de la computación teórica. Es uno de los siete problemas del Milenio elegidos por el Instituto Clay con un premio de U$S 1 millón por su solución (http://claymath.org/millennium-problems/p-vs-np-problem=)
NP Completos
Informalmente son todos los problemas de decisión difíciles que están en NP
Estos problemas son difíciles de resolver porque:
o Todos los algoritmos conocidos que hay para estos problemas corren en tiempo exponencial
o Aunque muchos de estos algoritmos tienen entradas relativamente chicas igualmente son intratables.
o Si existiese un algoritmo polinomial para uno, existirían para todos.
NP Completo
NP P
NPC
Si algún problema NP-Completo estuviese en P , entonces P = NP (por reducción polinómica)
Si algún lenguaje NP-Completo no está en P, entonces P NP
Problema SAT
El problema de satisfacibilidad booleana (SAT)
Dada una fórmula de la lógica proposicional , ¿es satisfacible?
Formalmente SAT = { ⟨ ⟩ | es una fórmula de la lógica proposicional satisfacible }
¿Cómo sabemos que hay problemas NP-Completos?
En el año 1971, Stephen Cook, matemático y científico estadounidense, demostró este teorema, en su artículo "The Complexity of Theorem Proving Procedures“ ("La complejidad de los procedimientos de demostración de teoremas“).
Leonid Levin, informático ruso, también hizo dicha demostración, por eso el nombre del Teorema de Cook-Levin.
Una fórmula de la lógica proposicional es satisfacible si hay una asignación de valores (verdadero o falso) a sus variables que la hace verdadera:
p q es satisfacible
p p es insatisfacible
p p es satisfacible
p → (p q) es satisfacible
p q es satisfacible, porque para la combinación de valores: p=verdadera y q=verdadera, la fórmula p q es verdadera.
p p es insatisfacible, ya que no existe un valor de p que haga verdadera esta fórmula (contradicción).
p p es satisfacible para cualquier valor de p.
p → (p q) es satisfacible, para p=verdadera y q=falsa.
Reducción NP-Completo
¿
Cómo probó que un problema es NP- Completo?
Por reducción polinómica
Un problema X es NP-Completo si:
◦
X NP
◦
Y NP , Y
PX (
X puede servirnos para resolver cada problema en NP)Otros problemas NP-Completos
TSP o Problema del viajante de comercio
Un viajante de comercio debe recorrer un conjunto determinado de ciudades.
Debe visitar exactamente una vez cada ciudad y finalmente volver al origen.
El viajante quiere hacer el mejor recorrido (distancia mínima) Se reduce a un problema de grafos
Encontrar un camino hamiltoniano (circuito que pasa por cada vértice una y sólo una vez) de longitud mínima sabiendo que sus aristas tienen longitudes asociadas.
Dado un grafo completo con peso en las aristas tendremos que encontrar todos los caminos posibles, medir sus longitudes y quedarnos con el mínimo.
NP-Completo
Recubrimiento de nodos (set-cover): Dado un grafo G=(V,E), un recubrimiento de nodos R es un subconjunto de V, tal que, para toda arista de E, por lo menos unos de los vértices que pertenecen a V, pertenezca a R.
Clique en un grafo: Dado un grafo G=(V,E) y un número natural k, decidir si existe un conjunto de k nodos, tal que todo par de nodos tiene una arista que los conecta.
Conjunto independiente de aristas en un grafo (perfect matching): es un conjunto de aristas independientes, que no tienen nodos en común.
Coloración de grafos (4-coloring): Todo mapa puede ser coloreado usando 4 colores. Las zonas que limitan entre sí deben tener distintos colores.
Coloración de grafos (4-coloring): se deben colorear los nodos de forma tal que ningún nodo adyacente comparta el mismo color.
Problemas - Resumen
Clase P
Problemas de decisión computables
por una MT (o algoritmo) determinístico
en tiempo polinómico
Clase NP
Problemas de decisión computables
por una MT (o algoritmo) no determinística
en tiempo polinómico o
Problemas para los cuales se puede comprobar una determinada solución en tiempo polinomial de manera determinística
Clase NP-Completo
Son los problemas más difíciles de la clase NP.
NP-Completo
https://en.wikipedia.org/wiki/List_of_NP-complete_problems
https://elcultural.com/Stephen-Cook-un-paso-mas-alla-de-Turing
https://sicreesinnovas.com/el-nobel-de-las-matematicas-el- premio-abel-par-dos-pioneros-que-unieron-matematicas-y-la- ciencia-de-la-computacion/
László Lovász y Avi Wigderson, ganadores del Premio 2021 de la Hungarian Academy of Sciences/Laszio Mudra-Cliff Moore/IAS
Los informáticos rompen el récord de vendedor ambulante
| Revista Quanta
https://www.quantamagazine.org/computer- scientists-break-traveling-salesperson-record- 20201008/
Stephen Cook