Está en la página 1de 32

Introducción a la complejidad

computacional

Clases P y NP
Introducción

• En análisis de algoritmos se estudia la complejidad de


computacional de las soluciones  Eficiencia
Introducción

• En análisis de algoritmos se estudia la complejidad de


computacional de las soluciones  Eficiencia

• La eficiencia algorítmica puede ser estimada en términos de:

 Tiempo de ejecución  Complejidad temporal

 Espacio requerido  Complejidad espacial


Introducción

• Notación asintótica: Estima la función de tiempo de


ejecución para una entrada de tamaño n
Introducción

• Notación asintótica: Estima la función de tiempo de


ejecución para una entrada de tamaño n
Introducción

• Notación asintótica: Estima la función de tiempo de


ejecución para una entrada de tamaño n
Introducción

• Notación asintótica: Estima la función de tiempo de


ejecución para una entrada de tamaño n
Introducción

• Notación asintótica:
Introducción
• Notación asintótica – Cuáles expresiones son verdaderas?

 3n2  O(n2) n2  O(n3) n3  O(n2)

 3n2  (n2) n2  (n3) n3  (n2)

 3n2  (n2) n2  (n3)

 n3  (n2) 2n+1  O(2n) (2+1)n  O(2n)

 (2+1)n  (2n) O(n)  O(n2)

 (n+1)!  O(n!) n2  O(n!)


Clasificación de problemas

• No todos los problemas tienen solución con los recursos


computacionales.

• Clase de problemas:

 Problemas de solución

 Problemas de decisión

 Problemas de optimización
Clasificación de problemas

• Problema de solución: Encontrar todas las combinaciones de


un conjunto S tal que la suma de ellos sea igual a P.

• Problema de decisión: Determinar si hay un camino de


Hamilton en un grafo.

• Problema de optimización: El problema del agente viajero

• Ejercicio: Proponga al menos un nuevo ejemplo de cada tipo,


de naturaleza diferente de los propuestos arriba.
Decidibilidad y Tratabilidad

• Los problemas pueden ser:

 Decidibles

Tratables

Intratables

 Indecidibles

Indecidibles (Simplemente)

Altamente indecidibles
Decidibilidad y Tratabilidad

• Problemas decidibles: Son aquellos para los cuales existe


una máquina de Turing determinista que pueda procesar
cualquier entrada válida.

• Los problemas decidibles pueden ser tratables o intratables.

• Algunos problemas indecidibles:

 Dada una ecuación con coeficientes enteros, ¿existe una


solución entera?

 Dados dos programas, ¿calculan lo mismo?


Decidibilidad y Tratabilidad

• Problemas tratables: Son aquellos cuya solución se puede


obtener en un tiempo polinómico  O(n k).

• Problemas intratables: Su solución se obtiene en un tiempo


no polinómico  Ω(an).
Máquinas de Turing

• Modelo matemático de un dispositivo que se comporta como


un autómata finito y que dispone de una cinta de longitud
infinita.

• M.T. Determinista: Para cada par (estado, entrada) existe, a


lo sumo, una posible acción.

• M.T. No Determinista:Es el caso en que existe, al menos, un


par (estado, entrada) con más de una posible combinación de
acciones.
Máquinas de Turing
Máquinas de Turing
Máquinas de Turing

• Para cada una de las siguientes cintas, determinar la cinta


final cuando T para, siendo T la máquina definida por las 5-
Tuplas: (S0,0,S1,0,R) , (S0,1,S1,0,L), (S0,B,S1,1,R),
(S1,0,S2,1,R), (S1,1,S1,1,R), (S1,B,S2,0,R), (S2,B,S3,0,R)

… B B 1 1 1 B B B …

… B B 0 0 B 0 0 B …
Máquina de Turing Determinista
• Una quíntupla (qi, sh, qj, sk, D) se entiende como:

 qi : Estado actual

 sh : Símbolo leído por la cabeza

 qj : Nuevo estado

 sk : Símbolo escrito en la cinta

 D : Desplazamiento de la cabeza

• Un problema es P si tiene asociada una MTD de complejidad


polinomial que lo resuelve.
Máquina de Turing No Determinista
• Permite paralelismo de ejecución cuando existe más de una
quíntupla para algún par (qi, sj)

• Cuando una instancia de un problema es resuelta por una


máquina de Turing No Determinista en tiempo polinomial, se
dice que ésta máquina es polinomial.

• Problema NP es el que se puede resolver en tiempo


polinomial por una Máquina de Turing No Determinista
Clasificación P

• Problema P

 Solucionable por una DTM en tiempo polinomial.

• Problema NP

 No cumple lo anterior, pero

 Solucionable por una NTM en tiempo polinomial.

 Verificable en tiempo polinomial por una DTM


Clasificación P
• Problema NPC (NP-Completo)

 No se conoce solución polinomial, pero:

 No se ha demostrado que no se pueda resolver en tiempo


polinomial.

• Problema NP-HARD

 No se pueden reducir a NPC

 No pueden verificarse por una DTM


Problema de Satisfacibilidad Booleana
(SAT)
• Fue el primer problema en ser demostrado como NP-Completo
(Stephen Cook – 1971)

• Al ser NP- Completo  Puede ser verificado en tiempo polinomial.

• Comprobar la solución de SAT  Qué valores deben tomar las


variables.

• Usado en análisis de software, diseño de hardware, diseño lógico


Problema de Satisfacibilidad Booleana
(SAT)
• Planteamiento: Determinar si una expresión booleana, sin
cuantificadores, tiene asignada una asignación de valores para
sus variables que hace que la expresión sea verdadera.

• Ejemplo: (A v C) Λ (B Λ D)

A= C=

B= D=

En este caso, la expresión es satisfacible


Problema de Satisfacibilidad Booleana
(SAT)
• Ejemplo: Es satisfacible la siguiente expresión?
 (–A Λ A)

La respuesta se obtiene fácilmente porque es una expresión


pequeña

• Ejemplo:
 Sea Փ = { p v q , p v –q , –p v q , –p v –q v –r, –p v r }

 Existe una combinación de valores que haga verdaderas todas


las expresiones?
Problema de Satisfacibilidad Booleana
(SAT)
• Continuación Ejemplo: p q r p v q p v - q -p v q -p v -q v -r -p v -r Փ SAT
T T T No
T T F Si
T F T No
T F F No
F T T
F T F No
No
F F T
No
F F F
No
Problema de Satisfacibilidad Booleana
(SAT)
• El método de las tablas de verdad es práctico pero sumamente
ineficiente.

• Complejidad?

 2n

• El problema puede simplificarse con la forma normal


conjuntiva. (Expansión de conjunciones de disyunciones)

(p v q) Λ (p v –q) Λ (–p v q) Λ (–p v –q v –r) Λ (–p v r)


Reducción

• Sea A un problema de decisión NPC conocido y B un problema


de decisión NP, se puede transformar una instancia A en una
instancia B en tiempo polinomial.

• Para hacer la reducción, es necesario que A ≤ p B (la


complejidad de A debe ser menor o igual que la complejidad
de B.
Reducción

• Si se da que:

 Las instancias negativas en A son instancias negativas en B

 Las instancias positivas en A son instancias positivas en B

Decimos que la reducción es correcta.


Preguntas

También podría gustarte