Class 31 Complexity Analysis

71
 Mg. Samuel Oporto Díaz Complejidad Computacional INTELIGENCIA AR TIFICIAL

Transcript of Class 31 Complexity Analysis

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 1/71

 

Mg. Samuel Oporto Díaz

Complejidad Computacional

INTELIGENCIA ARTIFICIAL

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 2/71

 

2 /60

Mapa Conceptual del Curso

SistemasInteligentes

Conocimiento

Complejidad

 Agentes Diseño de Agentes

 Agentes de

Búsqueda

Otros tipos

de agentes

 AgentesMóviles

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 3/71

 

3 /60

COMPLEJIDAD

ALGORITMICA

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 4/71

 

4 /60

Algoritmo

• Un algoritmo es un procedimiento

computacional bien definido, que tomaun conjunto de valores de entrada yproduce valores de salida.

• También podemos ver a un algoritmocomo una herramienta para resolver unproblema computacional específico.

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 5/71

 

5 /60

Complejidad

• La complejidad de un

algoritmo es una medida dela cantidad de recursos queconsume.

• Recurso: – Tiempo

 – Espacio

• Memoria

• Disco

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 6/71

 

6 /60

Complejidad de Algoritmos

• La Eficiencia nos la da el Análisis de Algoritmos:  

 – Dimensión Temporal: Medida del tiempo empleado. – Dimensión Espacial: medida de los recursos invertidos.

• Encontrar Algoritmos eficientes puede definir si Existe o nouna Solución al Problema.

• Al Análisis de Algoritmos se centra en el estudio de losBucles, del cual en última instancia, dependerán lasinstrucciones a ser ejecutadas.

 – No se puede realizar un análisis del número deInstrucciones pues son dependientes de las tecnologías

(RISK, CISC).

Eficiencia = F(n) 

siendo n la cantidad de elementos a ser procesados

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 7/717 /60

Utilidad del Análisis

Cuando desarrollamos un algoritmo nos interesados en:

 – Tener un idea qué tan bien puede esperarse que trabaje – Cómo se compararía con el desempeño de otros

algoritmos en el mismo problema.

• El análisis de un algoritmo nos puede ayudar acomprenderlo mejor, y nos puede sugerir mejoras.

• Entre más complicado sea un algoritmo, más complicado es

su análisis.

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 8/718 /60

Ejemplo 1

Calcular la complejidad de un algoritmo para encontrar el

mayor valor en un arreglo de tamaño N.

public class buscador {

public static int busca_max(int L[]) {

int Max = L[0];

for (int i = 1; i < L.length; i++) {

if (L[i] > Max) {

Max = L[i];

}

}

return Max;

}

public static void main(String[] args) {

int L[] = { 3, 6, 1, 8, 4, 2, 8, 4, 9, 23, 5, 3 };

int Max;

Max = busca_max(L);

System.out.println(Max);

}

}

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 9/719 /60

Ejemplo 1

• En el mejor de los casos

• En el caso promedio

• En el peor de los casos

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 10/71

10 /60

Complejidad

• ¿Qué medimos?:

 – Tiempo de ejecución

• ¿De qué depende?: – Tamaño de la entrada – Otros factores (HW y SW)

• Velocidad de la máquina• Calidad del compilador• Calidad del programa

• ¿ Cómo medirlo?: – Experimentalmente – Estimándolo matemáticamente

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 11/71

11 /60

Medición de la Eficiencia

• Una buena estimación de la Eficiencia debe ser

independiente de aspectos de implementación (laplataforma y el Lenguaje con que se codificará) pero debereflejar sus diferencias.

• Usamos el Orden de Magnitud de la Eficiencia del Tiempoy de los Recursos.

• Se lo complementa con la Tasa de crecimiento delprograma para evaluar su comportamiento a Futuro.

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 12/71

12 /60

1. Medición Experimental

• Midiendo el tiempo de ejecución en función del tamaño de

la entrada  – No podemos probar con todas las entradas

 – Es necesario implementar el algoritmo

 – Depende del software y el hardware

• Busquemos otra medida

 – Más abstracta

 – Más fácil de obtener

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 13/71

13 /60

Medición de la Eficiencia

• ¿Cómo comparar la Eficiencia Real de 2 Algoritmos?

 – Programándolos, implementándolos y midiendo para elmismo Lote de Prueba: el tiempo de ejecución y losrecursos utilizados.

 – Suele ser caro, y una vez realizado no suele ser sencillovolver atrás y corregir

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 14/71

14 /60

2. Estimación Matemática

• Asociamos a cada algoritmo una función f(n)

• Emplearemos el caso peor para caracterizar el tiempo deejecución

• Es más fácil de calcular

• Interesa la velocidad de crecimiento del tiempo de

ejecución en función del tamaño de la entrada

• Comportamiento asintótico

• Asociamos a cada operación primitiva un tiempo deejecución constante: – Asignación - Llamada a método

 – Operación aritmética - Indexación en array

 – Seguir una referencia - Volver de un método

 – Etc.

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 15/71

15 /60

Ejemplo 2

Calcular la complejidad de un algoritmo para calcular el

factorial de un número n.

public static int iterative(int n)

{

int fact = 1;

for (int i = 1; i <= n; i++)

fact *= i;

return fact;

}

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 16/71

16 /60

Ejemplo 3

Calcular la complejidad de un algoritmo para calcular la

serie de fibonaccipublic class fibonacci {

public static long fibonacci_multiple(long N) {

if (N <= 1)

return 1;

elsereturn fibonacci_multiple(N - 1) +

fibonacci_multiple(N - 2);

}

}

public static void main(String[] args) {long F1;

F1 = fibonacci_multiple(10);

System.out.println(F1);

}

}

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 17/71

17 /60

Ejemplo 3

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 18/71

18 /60

Ejemplo 3

• f(n)= 1+f(n-1)+ f(n-2) ∀ n ≥ 2

• Puede observarse que f(n) es una función creciente a partirde n ≥ 2 y entonces, para esos valores, se satisface:

• f(n)= 1+f(n-1)+ f(n-2) > 2 f(n-2)

• y aplicando esta misma propiedad a f(n-2) y sucesivos f(n-i)deberíamos tener que:

• f(n) >2·2·f(n-4) > 2·2·2·f(n-6)>...> 2 i f(n-2i) > 2 [n/2]

• por inducción n , f(n) > 2 [n/2] para todo n ≥ 2.

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 19/71

19 /60

Tiempo de cálculo

• Asumiendo que cada término se puede calcular en 1 nano

segundo (10-9 segundos)

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 20/71

20 /60

Ejemplo 4

Calcular la

complejidad deun algoritmo paracalcular la seriede fibonacci

public class fibonacci {

public static long

fibonacci_iterativo(long N) {

if (N <= 1) {

return 1;

} else {

int n0 = 1, n1 = 1, n2 = 0;

for (int i = 1; i < N; i++) {

n2 = n1 + n0;n0 = n1;

n1 = n2;

}

return n2;

}

}

public static void main(String[] args) {

long F2;

F2 = fibonacci_iterativo(10);

System.out.println(F2);

}

}

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 21/71

21 /60

Ejemplo 5

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 22/71

22 /60

Ejemplo 5

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 23/71

23 /60

Ejemplo 5

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 24/71

24 /60

Ejemplo 5

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 25/71

25 /60

COMPLEJIDAD

ASINTOTICA

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 26/71

26 /60

Complejidad asintótica

• Cuando se hace el análisis teórico de algoritmos es común

calcular su complejidad en un sentido asintótico, es decir,para una tamaño de entrada suficientemente grande.

• Las estimaciones asintóticas se utilizan porque diferentes

implementaciones del mismo algoritmo no tienen porquetener la misma eficiencia.

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 27/71

27 /60

Complejidad asintótica

• En el caso de la búsqueda binaria, el algoritmo se ejecuta

en una cantidad de pasos proporcional a un logaritmo, enO(log(n)), coloquialmente "en tiempo logarítmico".

• La eficiencia de dos implementaciones "razonables"

cualesquiera de un algoritmo dado están relacionadas poruna constante multiplicativa llamada constante oculta.

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 28/71

28 /60

Complejidad Asintótica

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 29/71

29 /60

Complejidad Asintótica

• Para un n suficientemente grande, el valor de la función

está completamente determinado por su términodominante.

• El valor del coeficiente del término dominante no seconserva al cambiar de máquina.

• Los valores pequeños de n generalmente no sonimportantes.

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 30/71

30 /60

Ejemplos

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 31/71

31 /60

Tamaño máximo de un problema

• Suponernos que cada operación puede realizarse en 1 μ s.

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 32/71

32 /60

Limitaciones del análisis asintótico

• No es apropiado para pequeñas cantidades de datos.

• El coeficiente del término dominante puedeintervenir cuando un algoritmo es suficientemente complejo

• A veces el análisis asintótico es una sobreestimación.

• La cota de tiempo de ejecución en el caso promedio puedeser significativamente menor que la cota en el caso peor

• El caso peor es en ocasiones poco representativo por loque puede ser ignorado

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 33/71

33 /60

ORDEN DE MAGNITUD

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 34/71

34 /60

Eficiencia (Ordenes de Magnitud)

• Bucles Lineales: 

 – E = F(n)= n

• Bucles logarítmicos: avance i*=a 

 – E = F(n)= Log2 n

 – E = F(n)= Loga n 

• Bucles Anidados: para “y” bucles de “n”  iteraciones c/u 

 – E = F(n)= n1*n2*…..ny= ny

• Recursividad: se invoca  “K”  veces a si mismo con un lote inicial “n”  

 – E = F(n)= kn 

i=0Mientras i<n

Códigoi++

Fin M

i=1Mientras i<n

Códigoi*=2

Fin M

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 35/71

35 /60

Logaritmos

Notación:

log n  = log 2 n  ln n  = log e n  

Propiedades:

a = b  log b  a ,

log c (ab ) = log c a + log c  b  

log b  a  n = n log b a

log b  a = log c  a / log c  b ,

log b (1/ a ) = - log b  a ,

log b  a = 1 / log a  b ,

a  log b  n = n  log b  a  

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 36/71

36 /60

Notación O()• 7n-3 es O(n)

 – c=7, n0=1 – 7n-3 ≤ 7n

• 20n3 + 10N log(n) +5 es O(n3)

• 3log(n) + Iog(log(n)) es O(log(n))

• 2100 es O(1)

• 5/n es O(1/n)

• log n   O(n a ), a > 0

• n k   O(c n ),  c > 1

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 37/71

37 /60

Ejercicio 6

• Ordenar las siguientes funciones con respecto de su orden

de crecimiento. – log n  

 – 4 log n  

 – 2 n  

 – 22 

 – 1/n

 – (3/2) n 

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 38/71

38 /60

Ejercicio 7

• Ordenar las siguientes funciones con respecto de su orden

de crecimiento.

2 (log n )/2 log( log n ) n   n 3 en n ! n log(log n) n log n  

(3/2) n 2 log n n 2  n 2 n 

2 n 2 2 4 log n  (n+1) !  n 1/log n (log n) ½ log n   2 2n +1

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 39/71

39 /60

Orden de magnitud de un algoritmo• Tiempos más comunes de los algoritmos:

• O(1) < O(log n) < O(n) < O(n log n) < O(n2) < O(n3) < O(2n)

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 40/71

40 /60

CLASES DE PROBLEMAS

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 41/71

41 /60

Problema de Decisión

Problema de decisión

Problema indecible

ESPACIOP

NP

NP-completo

Co-NP

P

P-completoNC

Problema decible

Leng. recursivo enumerable

BQP

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 42/71

42 /60

Clases de Problemas

Problemas decibles Problemas indecibles

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 43/71

43 /60

Problema de Decisión

• Es un conjunto de frases de longitud finita que tienen

asociadas frases resultantes también de longitud finita.• Un problema de decisión es un problema en donde las

respuestas posibles son SI o NO.

• Un problema de decisión también se puede formalizar

como el problema de decidir si una cierta frase pertenece aun conjunto dado de frases, también llamado lenguajeformal.

• El conjunto contiene exactamente las frases para las cuales

la respuesta a la pregunta es positiva.

¿Cierto número entero es primo?Una instancia de este problema sería: ¿17 es primo?.

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 44/71

44 /60

Ejemplo de problemas

• Las frases sobre el alfabeto {a, b} que contienen alternadas

las letras a y b.• Las frases sobre el alfabeto {a, b, c} que contienen igual

número de letras a y b.

• Las frases que describen un grafo con aristas etiquetadascon números naturales que indican su longitud, dos vértices

del grafo y un camino en el grafo que es el camino máscorto entre esos dos vértices.

todos los problemas matemáticos pueden ser redactados para que tomen laforma de un problema de decisión. Las soluciones al problema de decisióny al problema original se diferencian a lo sumo por un factor lineal.

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 45/71

45 /60

1. Problema Decible

• Si existe un algoritmo que pueda decidir para cada posible

frase de entrada si esa frase pertenece al lenguaje,entonces se dice que el problema es decidible, de otraforma se dice que es un problema indecidible.

• Se estudia cuanto recurso necesita un algoritmo decidiblepara ejecutarse (tiempo, espacio, procesadores, máquina)

• Estos pueden ser:

 – Problemas intratables No se pueden resolver en tiempo polinómicoO(kn)

 – Problemas tratables Se resuelven con algoritmos polinómicos O(nk)

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 46/71

46 /60

2. Problemas indecibles

• O "problemas no solucionables en forma algorítmica“.

• Son problemas que se pueden describir, pero no se puedenrepresentar o resolver.

• Ejemplo: Problema de la parada.

 – No existe ningún algoritmo que diga si un programa va aparar en tiempo finito con una entrada dada:

PPF(x) ¿ciclado?

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 47/71

47 /60

Post

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 48/71

48 /60

3. Problemas NP

• Su nombre viene de Polinómico no determinista  (Non- 

Deterministic Polynomial-time ).

• Es el conjunto de problemas que pueden ser resueltos entiempo polinómico por una máquina de Turing no

determinista.

• La importancia de esta clase de problemas de decisión esque contiene muchos problemas de búsqueda y de

optimización para los que se desea saber si existe unacierta solución o si existe una mejor solución que lasconocidas.

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 49/71

49 /60

3.1. Problemas P

• Un problema pertenece a la clase P si puede ser resuelto

en tiempo polinomial en una computadora determinística.• Ejemplos: Quicksort, búsqueda binaria, multiplicación

matricial.

• Esto es si el tiempo de ejecución del algoritmo es menor

que un cierto valor calculado a partir del número devariables implicadas (variables de entrada) usando unafórmula polinómica.

• Si determinar el camino óptimo que debe recorrer un cartero que pasapor N casas necesita menos de 50*N²+N segundos, entonces elproblema es resoluble en un "tiempo polinómico".

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 50/71

50 /60

3.2. Problemas NP-completo

• En teoría de la complejidad computacional, la clase de

complejidad NP-completo es el subconjunto de losproblemas de decisión en NP tal que todo problema en NPse puede reducir en cada uno de los problemas de NP-completo.

• Se puede decir que los problemas de NP-completo son losproblemas más difíciles de NP y muy probablemente noformen parte de la clase de complejidad P.

• La razón es que de tenerse una solución polinómica paraun problema de NP-completo, todos los problemas de NPtendrían también una solución en tiempo polinómico.

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 51/71

51 /60

3.2. Problemas NP-completo

• Todos los algoritmos conocidos para problemas NP-

completos utilizan tiempo exponencial con respecto altamaño de la entrada.

• Todos los algoritmos requeridos para resolverlos requieren

tiempo exponencial en el peor caso.

• Es decir, son sumamente difíciles de resolver.

• Ejemplos: el problema del agente viajero, O(n22n)

 

Ej l

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 52/71

52 /60

Ejemplo

• Suma de subconjuntos:

• Dado un conjunto S de enteros, ¿existe un subconjunto novacío de S cuyos elementos sumen cero?

• Es fácil verificar si una respuesta es correcta, pero no seconoce mejor solución que explorar todos los 2n-1subconjuntos posibles hasta encontrar uno que cumpla conla condición.

• El problema de satisfacibilidad booleana es NP-completo.

 

P NP

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 53/71

53 /60

P vs NP

• La clase P contiene problemas que pueden resolverse

rápidamente.

• La clase NP contiene problemas cuya solución puedeverificarse rápidamente.

• En 1971 se planteó la pregunta: ¿Es P = NP? Desdeentonces, sigue siendo una pregunta abierta para losteóricos.

• Se cree que P != NP

 

P NP?

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 54/71

54 /60

¿P=NP?

• Observa que si hubiera un algoritmo polinómico para

cualquier problema en NP-C entonces P=NP.

• La hipótesis más aceptada es que P≠NP.

• Si queremos enfrentar un problema NPC es nejor buscaralternativas (simplificaciones, aproximaciones, etc.).

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 55/71

55 /60

SOLUCIONES

APROXIMADAS

 

S l i i d

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 56/71

56 /60

Soluciones aproximadas

• Se desconoce si hay mejores algoritmos, por la cual, para

resolver un problema NP-completo de tamaño arbitrario seutiliza uno de los siguientes enfoques:

• Aproximación:

• Probabilístico:• Casos particulares:

• Heurísticas:

• Algoritmo genético:

 

S l i i d

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 57/71

57 /60

Soluciones aproximadas

• Aproximación: Un algoritmo que rápidamente encuentra una soluciónno necesariamente óptima, pero dentro de un cierto rango de error. Enalgunos casos, encontrar una buena aproximación es suficiente pararesolver el problema, pero no todos los problemas NP-completos tienenbuenos algoritmos de aproximación.

• Probabilístico: Un algoritmo probabilístico obtiene en promedio unabuena solución al problema planteado, para una distribución de losdatos de entrada dada.

• Casos particulares: Cuando se reconocen casos particulares delproblema para los cuales existen soluciones rápidas.

• Heurísticas: Un algoritmo que trabaja razonablemente bien en muchos

casos. En general son rápidos, pero no existe medida de la calidad dela respuesta.

• Algoritmo genético: Algoritmos que mejoran las posibles solucioneshasta encontrar una que posiblemente esté cerca del óptimo. Tampocoexiste forma de garantizar la calidad de la respuesta.

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 58/71

58 /60

EJEMPLO

 

P bl

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 59/71

59 /60

Problema (TSP)

• Sea: un conjunto de ciudades.

• Una ciudad origen O.• Un conjunto de aristas que une las

ciudades, con costos asociados.

• Problema del viajante: recorrer

todas las ciudades, comenzando enO y terminando en O, al menorcosto posible.

O

2

42

3

2

2

 

Ej l

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 60/71

60 /60

Ejemplo

• Problema • Una solución óptima (de valor 8)

O

2

42

3

2

2

O

2

2

2

2

 

Mét d d i ió

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 61/71

61 /60

Métodos de aproximación

• Encuentra solución con error máximo conocido a priori.

• En algunos casos, error de aproximación fijo.• En otros, posible elegir trade-off entre error de

aproximación y esfuerzo computacional (mayor esfuerzo,menor error).

 

Método goloso (greed )

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 62/71

62 /60

Método goloso (greedy)

• Idea: tratar de construir una solución eligiendo de manera

iterativa los elementos componentes de menor costo.

• Para algunos problemas con estructura particular, lasolución construida es una solución óptima. En general, no

es el caso.

 

Aplicación al TSP

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 63/71

63 /60

Aplicación al TSP

7

22

3

10

7

5

35

o

 

Aplicación al TSP

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 64/71

64 /60

Aplicación al TSP

• Elijo la ciudad más próxima (menor costo) entre las aún no

visitadas.

7

22

3

10

7

5

35

o

 

Aplicación al TSP

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 65/71

65 /60

Aplicación al TSP

7

22

3

10

7

5

35

o

 

Aplicación al TSP

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 66/71

66 /60

Aplicación al TSP

7

22

3

10

7

5

35

o

 

Aplicación al TSP

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 67/71

67 /60

Aplicación al TSP

7

22

3

10

7

5

35

o

 

Aplicación al TSP

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 68/71

68 /60

Aplicación al TSP

7

22

3

10

7

5

35

o

 

Aplicación al TSP

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 69/71

69 /60

Aplicación al TSP

7

22

3

10

7

5

35

oSolución:costo 22

 

Aplicación al TSP

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 70/71

70 /60

Aplicación al TSP

7

22

3

10

7

5

35

oSolución alternativa:costo 19

 

5/11/2018 Class 31 Complexity Analysis - slidepdf.com

http://slidepdf.com/reader/full/class-31-complexity-analysis 71/71

PREGUNTAS