Вы находитесь на странице: 1из 13

TEMA 5

COMPLEJIDAD COMPUTACIONAL
Tema 5. Introducción a las Clases de Complejidad .
2016/2017

Irene Martínez Masegosa


Depto. de Informática. UAL.
5.1

Computabilidad o Indecidibilidad

Clasifica los problemas en
decidibles (computables) o indecidibles ( no computables)

Problema P

¿Existe Algoritmo resuelve el problema P ?

Indecidibles o Decidibles o
no computables computables

Clases de
complejidad

Objetivo
Clasificar los problemas DECIDIBLES o COMPUTABLES:
clases de complejidad
5.2

Contents
1 Ordenes de Complejidad 2

2 Problemas Computables 3

3 Problemas Intratables 3

1
4 NP-Completitud 4
4.1 Clase P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.2 Clase NP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4.3 Problemas NP-completos . . . . . . . . . . . . . . . . . . . . 9

5 Problemas NP-Difíciles 11 5.3

1 Ordenes de Complejidad
Teoría de la Complejidad Computacional
Definición
• Estudia los recursos necesarios (tiempo y espacio) para resolver un
problema computacional
• Clasifica los problemas computables y los algoritmos en términos
de su “coste” o posibilidad de resolución efectiva.

• Notación asintótica: Tasa de crecimiento del tiempo de ejecución


• Ordenes de complejidad para un algoritmo que resuelve problemas
de tamaño N:
Logarítmico log N
Lineal N
Cuadrático N2
Cúbico N3
Polinómico Nk
Exponencial 2n
Factorial N!
5.4

Repasamos la Clasificación de los órdenes de crecimiento

Orden Descripción Si N se duplica, el tiempo: Ejemplos


1 Algoritmos constantes No dependen del tamaño de Operaciones aritméticas
la entrada. Ejecuta una in- (+, −, ∗, ..). Asignaciones.
strucción un numero fijo de Declaración de variable
veces.
logN Algoritmo logarítmico. t. ejecución se incrementa Búsqueda Binaria
Crece más despacio que N por una cte.
N Algoritmo lineal que t. de ejecución también se Iterar sobre N elementos. Reser-
procesa N entradas. multiplica por 2. var memoria a un array de
tamaño N
N logN Lineal logarítmico. t. de ejecución se duplica un Quicksort, Mergesort, FFT
poco más del doble.
N2 Algoritmo cuadrático. t. de ejecución se multiplica Todos los pares de elementos
Uso práctico en problemas por 4.
pequeños.
N3 Algoritmo cúbico. En t. de ejecución se multiplica Todas las tripletas de elementos
problemas pequeños. por 8.
2N Algoritmo exponencial. t. de ejecución se eleva al Todos los subconjuntos de N el-
No es apropiado para apli- cuadrado! ementos. Discos que se mueven
carlo. en Torres de Hanoi.
N! Algoritmo factorial Si N se incrementa en una Todas las permutaciones de N
Peor que un exponencial unidad, el t. de ejecución se elementos
incrementa por un factor de
N

En esta tabla vemos el efecto que tiene en el tiempo de ejecución duplicar


el tamaño de la entrada 5.5

2
2 Clasificación de Problemas Computables
Clasificación de Problemas
Jerarquía de problemas en base a la complejidad del mejor algoritmo
que podamos construir para resolver el problema:

Problemas Tratables
• Son problemas sencillos
• El tiempo de ejecución crece como una función polinómica del tamaño
de la entrada N
• El algoritmo que los resuelve es polinómico: O(N), O(N 2 ),...,
O(N k )

Problemas Intratables
• Son problemas intrínsecamente “duros” o difíciles
• El tiempo empleado por el mejor algoritmo crece de forma exponencial
(o peor) respecto al tamaño de la entrada N
• Los algoritmos son de orden: O(2N ), O(N!), O(N N )
5.6

Relación entre Órdenes

Copyright by E. Rich, 2008

Se aprecia claramente la diferencia de complejidad entre los problemas


tratables y los intratables 5.7

3 Problemas Intratables
Problema TSP Travelman Sales Problem
Problema del viajante de comercio para n ciudades
• Sean n ciudades de un territorio.
Objetivo: encontrar una ruta que, comenzando y terminando en una
ciudad concreta, pase una sola vez por cada una de las ciudades y
minimice la distancia recorrida por el viajante

• Elige la primera ciudad: n


• Elige la segunda: n − 1

3
• Elige la tercera: n − 2
• ......
• La búsqueda se realiza sobre n(n − 1)(n − 2)... recorridos = O(n!)

• Ejemplo: para N=12 ciudades , más de 479 millones de recorridos


diferentes
5.8

Problema de las Torres de Hanoi

http://en.wikipedia.org/wiki/Tower_of_Hanoi

La solución recursiva de este problema, para n discos es una recur-


rencia del tipo:
T (n) = 2T (n − 1) + 1

para n > 1 y T (1) = 1, cuya solución es:

T (n) = 2n − 1 ∈ O(2n )
Exponencial !!
La solución iterativa también necesita 2n − 1 movimientos. 5.9

4 NP-Completitud
Problemas de Decisión y Problemas de Optimización
Problema de Decisión (yes/no problem)
Es un problema es un problema en el que las únicas respuestas posibles son:
sí o no

Input

Algoritmo

No Sí

Problema de Búsqueda o de Optimización


Es un problema en el que se busca una solución (la mejor) entre un enorme
número de posibilidades
5.10

4
Cómo obtener Problemas de Decisión
Es fácil obtener un problema de decisión a partir de un problema de
búsqueda u optimización:

• TSP
– P. de optimización: Encontrar la ruta más corta, visitando
todas las ciudades una sola vez, y volviendo a la inicial
– Problema de decisión: ¿Existe una ruta de longitud ≤ d?

• Coloreo de grafos
– P. de optimización: Determinar el núm mínimo de colores
necesarios para colorear un grafo de modo que vértices adyacentes
tengan diferente color
– Problema de decisión: Dado n, ¿existe un coloreado que pinte el
grafo con un máximo de n colores?
5.11

Ejemplo: Problema del Coloreo


Grafo de Petersen
Coloreado con 3 colores, el número mínimo

http://es.wikipedia.org/wiki/Coloración_de_grafos

Problema equivalente: coloreo de mapas en el que países adyacentes


deben colorearse con distinto color 5.12

Más Problemas de Decisión


• CLIQUE
– P. de optimización: Dado un grafo G encontrar subgrafo de
tamaño máximo, de forma que cada par de vértices del sub-
grafo estén conectados entre sí.
– Problema de decisión: ¿Contiene G un clique con al menos d
vértices?

5
http://en.wikipedia.org/wiki/Clique_(graph_theory)

– Este grafo contiene 19 cliques de 3 vértices (azul claro)


– dos cliques de 4 nodos (azul oscuro) : estos son maximales
5.13

Relación entre estos Problemas de Decisión


• No se han encontrado algoritmos polinómicos ni para el prob-
lema de decisión ni para el de optimización de estos ejemplos
• Si tuviéramos un algoritmo polinómico para el problema de opti-
mización ⇒ tendríamos un algoritmo polinómico para el correspon-
diente problema de decisión
• Inicialmente estudiamos los problemas de decisión para después pasar
a los problemas de optimización.
5.14

Clases de complejidad P y NP

Empezamos estudiando clases de complejidad para problemas de


decisión
5.15

4.1 Clase de Complejidad P


Definición intuitiva
Clase de Complejidad P
Es el conjunto de todos los problemas de decisión que pueden resolverse en
tiempo Polinómico (en una MT determinista)

• La clase P contiene todos los problemas tratables:


– son problemas decidibles
– y resolubles en en un tiempo polinómico
• Esta clase recoge la mayoría de los problemas que pueden resolverse
en la práctica en máquinas reales
5.16

6
Ejemplos de Problemas que están en P
• Dado un grafo G dirigido, ¿hay un camino del vértice s al t?
• Dados dos números enteros, ¿son primos relativos?
• Comprobar si un grafo es conexo: ¿existe un camino entre cada vértice
y todos los demás?

n1 n2

n3 n4 n5

n6 n7

5.17

4.2 Clase de Complejidad NP


Algoritmos NO deterministas
Un algoritmo no determinista está compuesto por dos fases:
1. Fase de adivinación (no determinista): Dada una instancia del
problema, produce una salida S que puede entenderse como una posi-
ble solución.
2. Fase de verificación (determinista): Para esa instancia del problema
y la salida generada S, y procediendo de forma determinista, verifica
que S es solución, y por tanto devuelve “sí”, o en otro caso devuelve
falso.

Ejemplo: problema de decisión del viajante


• Fase de adivinación: generar un circuito S dentro del grafo G
• Fase de verificación: verificamos que el coste no es superior a d con el
algoritmo VerificaTSP( G, d, S ) :
– devuelve “sí“ si se cumple que: S es un circuito y además coste(S)
≤d
– “no” en otro caso
5.18

La clase NP
Algoritmo no determinista de tiempo polinómico
Es un algoritmo no determinista cuya fase de verificación se realiza con
un algoritmo de tiempo polinómico

• VerificaTSP( G, d, S ) es un algoritmo polinómico

Clase de Complejidad NP
La clase NP es el conjunto de todos los problemas de decisión que pueden
ser resueltos por algoritmos no deterministas de tiempo polinómico

7
• Es decir, es el conjunto de todos los problemas de decisión para los que
comprobar si S es una solución para una instancia del problema
puede realizarse con un algoritmo de tiempo Polinómico
• Se dice que son problemas verificables polinómicamente.
• NP: significa “Nondeterministic Polinomial”
• Formalmente son problemas computados por MT no-deterministas
en tiempo polinómico
• Como VerificaTSP( G, d, S ) es polinómico, el problema de de-
cisión del viajante está en NP.
• Esto no significa que haya algoritmos de tiempo polinómico que lo
resuelvan.
• El propósito de introducir los conceptos de algoritmo no determinista
y NP es el de clasificar algoritmos. 5.19

Ejemplos de Problemas que están en NP


Los problemas en NP tienen básicamente las siguientes propiedades:
• Para resolverlos debemos encontrar la solución (bajo unas restric-
ciones) probando en un espacio de búsqueda que crece exponen-
cialmente con el tamaño del problema
• No se conoce una técnica mejor para encontrar una solución exacta
• Es posible comprobar de forma eficiente una posible solución
Ejemplos
• Sistemas de ecuaciones lineales Ax = b: encontrar una solución es muy
costoso, pero verificar una solución es polinómico.
• Todos los problemas de decisión de los ejemplos anteriores
• TSP: Problema de decisión del viajante de comercio
• Problema de decisión del CLIQUE
• Problema de decisión en SUDOKU : podemos verificar una solución
• SAT: dada una expresión lógica, ¿existe alguna asignación de vari-
ables (verdadero/falso) que haga la expresión verdadera?. Verificar
si una determinada asignación hace la expresión verdadera o falsa, es
polinómico.
5.20

Problema SAT-FNC
• Una expresión lógica en forma normal conjuntiva FNC es una
secuencia de cláusulas separadas por la conectiva de conjunción ∧ :
(x1 ∨ x2 ) ∧ (x2 ∨ ¬x3 )
• Problema de decisión de SAT-FNC
– consiste en determinar, dada una expresión lógica en FNC, si
existe alguna asignación de valores verdadero y falso para
las variables, que haga la expresión verdadera (satisface la
expresión)
– Resolver este problema, probando todas las asignaciones es del
orden 2n (n núm. de variables) 5.21

8
Ejemplo. Problema SAT-FNC
• Instancia: (X1 ∨ X2 ) ∧ (X2 ∨ ¬X3 ) ∧ ¬X2
la respuesta es “sí” ya que la asignación X1 =V , X2 = F y X3 =F
hace la expresión verdadera.
• Instancia: (X1 ∨ X2 ) ∧ ¬X1 ∧ ¬X2
la respuesta es “no”
• Es fácil escribir un algoritmo polinómico que tome como entrada una
expresión lógica en FNC y una asignación de variables y verifique si
la expresión es cierta para esa asignación.
• Por tanto:
SAT-FNC está en NP 5.22

¿Cómo están relacionados P y NP ?


P⊂NP

P
NP

• Implica: todos los problemas que están en P están también en NP

Problema sin resolver:


¿P=NP?
• Muchas implicaciones computacionales
• Significaría que todos los problemas de búsqueda podrían ser resueltos
en tiempo polinómico
• El Clay Mathematics Institute ofrece un premio de un millón de
dolares para quien demuestre esta conjetura
http://www.claymath.org/millennium/P_vs_NP/ 5.23

4.3 Problemas NP-completos


Reducción
Reducción de un problema de decisión
Convertir un problema de decisión A en un problema de decisión B de modo
que la solución del problema B puede usarse para resolver el problema A.
Problema Problema
A B

x y

Algoritmo de
Transforma-
ción

El algoritmo de transformación combinado con algoritmo para


B ⇒ nos da un algoritmo para A 5.24

9
Reducción Polinómica
Reducción Polinómica
Si el algoritmo de transformación es polinómico, se dice que el prob-
lema de decisión A se reduce polinómicamente a un problema de decisión
B:
A≤p B

• Si tenemos un algoritmo polinómico para B y


• el algoritmo de transformación también es polinómico, ( A≤p B )
• el algoritmo para A, resultante de la combinación, también es
polinómico.
5.25

Problemas NP-completos
Son los problemas más “duros” a nivel computacional de la clase NP

Problema NP-completo
Un problema B es NP-completo si:
1. Está en NP , y
2. cualquier otro problema A en NP puede reducirse polinómicamente a
él: A≤p B

Teorema de Cook
• El problema de decisión SAT-FNC es NP-completo
5.26

Identificar Problemas NP-completos

¿Cómo podemos probar que un problema es NP-completo?

• Podemos mostrar que un problema es NP-completo probando


que está en NP y que otro problema NP-completo, como por
ejemplo SAT-FNC, se reduce a él.
5.27

Ejemplos de Problemas NP-completos


Problemas de decisión asociados a:
• TSP: Problema de decisión del viajante
• Clique es NP-completo
• Problema del Coloreo
• Problema SAT
• Tetris
• Sudoku
• Buscaminas ...
• Resolver Integrales
• PCP : ¿existe una solución de longitud ≤ k?
5.28

10
5 Problemas NP-Difíciles
Complejidad de problemas generales

Ampliamos el estudio a clases de complejidad para problemas


generales
5.29

Definición intuitiva NP-hard problems


• Hemos visto que un problema es NP-completo si:
1. Está en NP
2. Cualquier otro problema en NP se reduce polinómicamente a él

• Un problema NP-difícil solo cumple la propiedad 2

Problema NP-difícil
Un problema es NP-difícil si cualquier otro problema NP completo se reduce
polinómicamente a él.
• Los problemas NP-difíciles son problemas intratables

P
NP NP − dif ícil

NP − completos
5.30

Problemas NP-Difíciles
¿Qué problemas son NP-difíciles?
• Todo problema NP-completo
• Los problemas de optimización correspondientes a problemas NP-
completos

Ejemplos de problemas NP-difíciles


• Problemas de optimización:
– TSP
– Clique
– Problema del Coloreo de grafos
– ....
5.31

11
Más ejemplos de Problemas NP-Difíciles: JUEGOS y PUZZLES

• EL cubo de Rubik

• El 15-puzzle

• Rush hour (traffic jam)

• Mastermind
• El ajedrez (no está en NP)
• Tetris , Sokoban
• ....
• Muchos más juegos en:
http://www.ics.uci.edu/~eppstein/cgt/hard.html
http://en.wikipedia.org/wiki/List_of_NP-complete_problems
5.32

Solución al Problema del Viajante de Comercio??

http://xkcd.com/399/

12
http://xkcd.com/399/
5.33

References
[1] Sipser, Michael Introduction to the Theory of Computation 2nd. ed..
(capítulo 7) Thomson, 2006
[2] Rich, Elaine Automata, Computability, and Complexity. (capítulos 27 y
28) Prentice Hall, 2008 http://www.theoryandapplications.org/
5.34

13

Вам также может понравиться