Dr. Eduardo A. RODRÍGUEZ TELLO CINVESTAV-Tamaulipas 21 de marzo de 2018 Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 1 / 45
1 Algoritmos voraces (greedy) Aplicaciones de los algoritmos voraces Change-making problem Minimum spanning tree (MST) Problema de codificación Codigos de Huffman Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 2 / 45
Algoritmos voraces (greedy) Construyen una solución de un problema de optimización paso a paso a través de una secuencia de elecciones que son: Factibles Localmente óptimas Irrevocables Para algunos problemas, entregan una solución óptima para cada instancia Para la mayoría, no lo logran pero pueden ser útiles para encontrar aproximaciones rápidas Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 3 / 45
Aplicaciones de los algoritmos voraces 1 Algoritmos voraces (greedy) Aplicaciones de los algoritmos voraces Change-making problem Minimum spanning tree (MST) Problema de codificación Codigos de Huffman Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 4 / 45
Aplicaciones de los algoritmos voraces Aplicaciones de los algoritmos voraces Soluciones óptimas: Change-making problem Minimum spanning tree (MST) Single-source shortest paths Simple scheduling problems Huffman codes Aproximaciones: Traveling salesman problem (TSP) Knapsack problem Otros problemas de optimización combinatoria Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 5 / 45
Change-making problem 1 Algoritmos voraces (greedy) Aplicaciones de los algoritmos voraces Change-making problem Minimum spanning tree (MST) Problema de codificación Codigos de Huffman Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 6 / 45
Change-making problem Change-making problem Dada una cantidad ilimitada de monedas de denominaciones d 1, > > d m, dar cambio por la cantidad n con el menor número de monedas posible Ejemplo: d 1 = 25c, d 2 = 10c, d 3 = 5c, d 4 = 1c y n = 48c La solución voraz (greedy) es óptima cualquier n y con denominaciones normales Puede no ser óptima para denominaciones arbitrarias Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 7 / 45
Minimum spanning tree (MST) 1 Algoritmos voraces (greedy) Aplicaciones de los algoritmos voraces Change-making problem Minimum spanning tree (MST) Problema de codificación Codigos de Huffman Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 8 / 45
Minimum spanning tree (MST) Minimum spanning tree (MST) Árbol recubridor (spanning tree) de un grafo conectado G: un subgrafo acíclico conectado que incluye todos los vértices de G Árbol recubridor mínimo (minimum spanning tree, MST) de un grafo conectado ponderado G: un árbol recubridor de G con peso total mínimo Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 9 / 45
1 Algoritmos voraces (greedy) Aplicaciones de los algoritmos voraces Change-making problem Minimum spanning tree (MST) Problema de codificación Codigos de Huffman Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 10 / 45
Inicia con un árbol T 1 que consiste de un vértice (cualquiera) del grafo y expande este árbol un vértice a la vez para producir el MST a través de una serie de subárboles T 1, T 2,, T n En cada iteración, construye T i+1 a partir de T i al agregar un vértice de G que no está en T i y que es el más cercano a aquellos de T i (paso voraz) Se detiene cuando todos los vértices están incluidos Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 11 / 45
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 12 / 45
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 13 / 45
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 14 / 45
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 15 / 45
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 16 / 45
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 17 / 45
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 18 / 45
Requiere un cola de prioridad para localizar el vértice más cercano a aquellos de T i Eficiencia: O(n 2 ), grafo representado como una matriz de adyacencia ponderada y la cola de prioridad mediante un arreglo O(m log n) grafo representado como una lista de adyacencia y la cola de prioridad mediante un montículo-min Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 19 / 45
1 Algoritmos voraces (greedy) Aplicaciones de los algoritmos voraces Change-making problem Minimum spanning tree (MST) Problema de codificación Codigos de Huffman Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 20 / 45
Ordena los arcos del grafo en forma no-decreciente respecto a sus longitudes Agrega al árbol un arco a la vez para producir el MST a través de una serie de bosques F 1, F 2,, F n 1 En cada iteración, agrega el próximo arco en la lista ordenada a menos que cree un ciclo Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 21 / 45
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 22 / 45
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 23 / 45
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 24 / 45
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 25 / 45
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 26 / 45
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 27 / 45
El algoritmo de Kruskal parece más fácil que el de Prim, pero es más difícil de implementar (verificación de ciclos) Verificación de ciclos: un ciclo se crea si y sólo si el arco agregado conecta vértices en el mismo componente conexo La complejidad es O(m log m) = O(m log n) usando las estructuras de datos adecuadas Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 28 / 45
1 Algoritmos voraces (greedy) Aplicaciones de los algoritmos voraces Change-making problem Minimum spanning tree (MST) Problema de codificación Codigos de Huffman Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 29 / 45
Permite resolver el problema single-source shortest paths Trabaja de manera similar al algoritmo de Prim, la diferencia es la forma de calcular las etiquetas numéricas: entre los vértices no presentes en el árbol, encuentra el vértice u con la más pequeña suma d v + w(u, v) donde v es un vértice con mínimo camino conocido, d v es la longitud del camino entre la fuente y v, y w(u, v) es la longitud del arco de v a u Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 30 / 45
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 31 / 45
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 32 / 45
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 33 / 45
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 34 / 45
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 35 / 45
Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 36 / 45
No funciona para grafos con pesos negativos Aplicable a grafos dirigidos y no-dirigidos Eficiencia: O(n 2 ) para un grafo representado como una matriz de adyacencia ponderada y la cola de prioridad mediante un arreglo O(m log n) para un grafo representado como una lista de adyacencia y la cola de prioridad mediante un montículo-min Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 37 / 45
Problema de codificación 1 Algoritmos voraces (greedy) Aplicaciones de los algoritmos voraces Change-making problem Minimum spanning tree (MST) Problema de codificación Codigos de Huffman Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 38 / 45
Problema de codificación Problema de codificación Codificación: asignación de cadenas de bits a caracteres de un alfabeto Palabras del código: cadenas de bits asignadas a caracteres de un alfabeto Dos tipos de códigos: De longitud fija (ASCII) De longitud variable (Morse) Códigos libres de prefijos: ninguna palabra del código es prefijo de otra Problema: si las frecuencias de ocurrencia de los caracteres se conocen, cuál es el mejor código binario libre de prefijos? Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 39 / 45
Codigos de Huffman 1 Algoritmos voraces (greedy) Aplicaciones de los algoritmos voraces Change-making problem Minimum spanning tree (MST) Problema de codificación Codigos de Huffman Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 40 / 45
Codigos de Huffman Codigos de Huffman Cualquier árbol binario con arcos etiquetados con 0 o 1 resulta en un código libre de prefijos de los caracteres asignados a sus hojas El árbol binario óptimo que minimiza la longitud esperada (el peso promedio) de una palabra del código puede ser construido de la siguiente forma: Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 41 / 45
Codigos de Huffman Codigos de Huffman Inicializar n árboles de un nodo con los caracteres del alfabeto y los pesos de los arcos con sus frecuencias Repetir el siguiente paso n 1 veces: Unir dos árboles binarios con los pesos más pequeños en uno solo (subárboles izq. y der.) y fijar sus pesos como la suma de los pesos de ambos árboles Marcar los arcos que llevan a los subárboles izq. y der. con 0 y 1, respectivamente. Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 42 / 45
Codigos de Huffman Codigos de Huffman Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 43 / 45