Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces...

45
Algoritmos voraces (greedy) 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

Transcript of Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces...

Page 1: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy)

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

Page 2: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

1 Algoritmos voraces (greedy)Aplicaciones de los algoritmos voracesChange-making problemMinimum spanning tree (MST)Algoritmo de Prim para MSTAlgoritmo de Kruskal para MSTAlgoritmo de DijkstraProblema de codificaciónCodigos de Huffman

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 2 / 45

Page 3: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy)

Algoritmos voraces (greedy)

Construyen una solución de un problema de optimización paso apaso a través de una secuencia de elecciones que son:

Factibles

Localmente óptimas

Irrevocables

Para algunos problemas, entregan una solución óptima para cadainstancia

Para la mayoría, no lo logran pero pueden ser útiles paraencontrar aproximaciones rápidas

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 3 / 45

Page 4: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Aplicaciones de los algoritmos voraces

1 Algoritmos voraces (greedy)Aplicaciones de los algoritmos voracesChange-making problemMinimum spanning tree (MST)Algoritmo de Prim para MSTAlgoritmo de Kruskal para MSTAlgoritmo de DijkstraProblema de codificaciónCodigos de Huffman

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 4 / 45

Page 5: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) 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

Page 6: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Change-making problem

1 Algoritmos voraces (greedy)Aplicaciones de los algoritmos voracesChange-making problemMinimum spanning tree (MST)Algoritmo de Prim para MSTAlgoritmo de Kruskal para MSTAlgoritmo de DijkstraProblema de codificaciónCodigos de Huffman

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 6 / 45

Page 7: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Change-making problem

Change-making problem

Dada una cantidad ilimitada de monedas de denominacionesd1, > · · · > dm, dar cambio por la cantidad n con el menor númerode monedas posible

Ejemplo: d1 = 25c, d2 = 10c, d3 = 5c, d4 = 1c y n = 48c

La solución voraz (greedy) es óptima cualquier n y condenominaciones “normales”

Puede no ser óptima para denominaciones arbitrarias

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 7 / 45

Page 8: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Minimum spanning tree (MST)

1 Algoritmos voraces (greedy)Aplicaciones de los algoritmos voracesChange-making problemMinimum spanning tree (MST)Algoritmo de Prim para MSTAlgoritmo de Kruskal para MSTAlgoritmo de DijkstraProblema de codificaciónCodigos de Huffman

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 8 / 45

Page 9: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Minimum spanning tree (MST)

Minimum spanning tree (MST)

Árbol recubridor (spanning tree) de un grafo conectado G: unsubgrafo acíclico conectado que incluye todos los vértices de G

Árbol recubridor mínimo (minimum spanning tree, MST) de ungrafo conectado ponderado G: un árbol recubridor de G con pesototal mínimo

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 9 / 45

Page 10: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Algoritmo de Prim para MST

1 Algoritmos voraces (greedy)Aplicaciones de los algoritmos voracesChange-making problemMinimum spanning tree (MST)Algoritmo de Prim para MSTAlgoritmo de Kruskal para MSTAlgoritmo de DijkstraProblema de codificaciónCodigos de Huffman

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 10 / 45

Page 11: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Algoritmo de Prim para MST

Algoritmo de Prim para MST

Inicia con un árbol T1 que consiste de un vértice (cualquiera) delgrafo y expande este árbol un vértice a la vez para producir elMST a través de una serie de subárboles T1, T2, · · · , Tn

En cada iteración, construye Ti+1 a partir de Ti al agregar unvértice de G que no está en Ti y que es el más cercano aaquellos de Ti (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

Page 12: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Algoritmo de Prim para MST

Algoritmo de Prim para MST

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 12 / 45

Page 13: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Algoritmo de Prim para MST

Algoritmo de Prim para MST

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 13 / 45

Page 14: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Algoritmo de Prim para MST

Algoritmo de Prim para MST

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 14 / 45

Page 15: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Algoritmo de Prim para MST

Algoritmo de Prim para MST

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 15 / 45

Page 16: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Algoritmo de Prim para MST

Algoritmo de Prim para MST

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 16 / 45

Page 17: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Algoritmo de Prim para MST

Algoritmo de Prim para MST

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 17 / 45

Page 18: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Algoritmo de Prim para MST

Algoritmo de Prim para MST

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 18 / 45

Page 19: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Algoritmo de Prim para MST

Algoritmo de Prim para MST

Requiere un cola de prioridad para localizar el vértice máscercano a aquellos de Ti

Eficiencia:O(n2), grafo representado como una matriz de adyacenciaponderada y la cola de prioridad mediante un arregloO(m log n) grafo representado como una lista de adyacencia y lacola de prioridad mediante un montículo-min

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 19 / 45

Page 20: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Algoritmo de Kruskal para MST

1 Algoritmos voraces (greedy)Aplicaciones de los algoritmos voracesChange-making problemMinimum spanning tree (MST)Algoritmo de Prim para MSTAlgoritmo de Kruskal para MSTAlgoritmo de DijkstraProblema de codificaciónCodigos de Huffman

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 20 / 45

Page 21: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Algoritmo de Kruskal para MST

Algoritmo de Kruskal para MST

Ordena los arcos del grafo en forma no-decreciente respecto asus longitudes

Agrega al árbol un arco a la vez para producir el MST a través deuna serie de bosques F1, F2, · · · , Fn−1

En cada iteración, agrega el próximo arco en la lista ordenada amenos que cree un ciclo

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 21 / 45

Page 22: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Algoritmo de Kruskal para MST

Algoritmo de Kruskal para MST

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 22 / 45

Page 23: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Algoritmo de Kruskal para MST

Algoritmo de Kruskal para MST

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 23 / 45

Page 24: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Algoritmo de Kruskal para MST

Algoritmo de Kruskal para MST

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 24 / 45

Page 25: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Algoritmo de Kruskal para MST

Algoritmo de Kruskal para MST

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 25 / 45

Page 26: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Algoritmo de Kruskal para MST

Algoritmo de Kruskal para MST

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 26 / 45

Page 27: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Algoritmo de Kruskal para MST

Algoritmo de Kruskal para MST

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 27 / 45

Page 28: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Algoritmo de Kruskal para MST

Algoritmo de Kruskal para MST

El algoritmo de Kruskal parece más fácil que el de Prim, pero esmás difícil de implementar (verificación de ciclos)

Verificación de ciclos: un ciclo se crea si y sólo si el arcoagregado conecta vértices en el mismo componente conexo

La complejidad es O(m logm) = O(m log n) usando lasestructuras de datos adecuadas

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 28 / 45

Page 29: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Algoritmo de Dijkstra

1 Algoritmos voraces (greedy)Aplicaciones de los algoritmos voracesChange-making problemMinimum spanning tree (MST)Algoritmo de Prim para MSTAlgoritmo de Kruskal para MSTAlgoritmo de DijkstraProblema de codificaciónCodigos de Huffman

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 29 / 45

Page 30: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Algoritmo de Dijkstra

Algoritmo de Dijkstra

Permite resolver el problema single-source shortest paths

Trabaja de manera similar al algoritmo de Prim, la diferencia es laforma de calcular las etiquetas numéricas: entre los vértices nopresentes en el árbol, encuentra el vértice u con la más pequeñasuma dv + w(u, v)

donde v es un vértice con mínimo camino conocido, dv es lalongitud del camino entre la fuente y v, y w(u, v) es la longitud delarco de v a u

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 30 / 45

Page 31: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Algoritmo de Dijkstra

Algoritmo de Dijkstra

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 31 / 45

Page 32: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Algoritmo de Dijkstra

Algoritmo de Dijkstra

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 32 / 45

Page 33: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Algoritmo de Dijkstra

Algoritmo de Dijkstra

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 33 / 45

Page 34: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Algoritmo de Dijkstra

Algoritmo de Dijkstra

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 34 / 45

Page 35: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Algoritmo de Dijkstra

Algoritmo de Dijkstra

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 35 / 45

Page 36: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Algoritmo de Dijkstra

Algoritmo de Dijkstra

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 36 / 45

Page 37: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Algoritmo de Dijkstra

Algoritmo de Dijkstra

No funciona para grafos con pesos negativos

Aplicable a grafos dirigidos y no-dirigidos

Eficiencia:O(n2) para un grafo representado como una matriz de adyacenciaponderada y la cola de prioridad mediante un arregloO(m log n) para un grafo representado como una lista deadyacencia 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

Page 38: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Problema de codificación

1 Algoritmos voraces (greedy)Aplicaciones de los algoritmos voracesChange-making problemMinimum spanning tree (MST)Algoritmo de Prim para MSTAlgoritmo de Kruskal para MSTAlgoritmo de DijkstraProblema de codificaciónCodigos de Huffman

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 38 / 45

Page 39: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Problema de codificación

Problema de codificación

Codificación: asignación de cadenas de bits a caracteres de unalfabeto

Palabras del código: cadenas de bits asignadas a caracteres deun 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 prefijode otra

Problema: si las frecuencias de ocurrencia de los caracteres seconocen, ¿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

Page 40: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Codigos de Huffman

1 Algoritmos voraces (greedy)Aplicaciones de los algoritmos voracesChange-making problemMinimum spanning tree (MST)Algoritmo de Prim para MSTAlgoritmo de Kruskal para MSTAlgoritmo de DijkstraProblema de codificaciónCodigos de Huffman

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 40 / 45

Page 41: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Codigos de Huffman

Codigos de Huffman

Cualquier árbol binario con arcos etiquetados con 0 o 1 resulta enun código libre de prefijos de los caracteres asignados a sus hojas

El árbol binario óptimo que minimiza la longitud esperada (el pesopromedio) de una palabra del código puede ser construido de lasiguiente forma:

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 41 / 45

Page 42: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Codigos de Huffman

Codigos de Huffman

Inicializar n árboles de un nodo con los caracteres del alfabeto ylos 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 pesosde 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

Page 43: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola

Algoritmos voraces (greedy) Codigos de Huffman

Codigos de Huffman

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos voraces 21 de marzo de 2018 43 / 45

Page 44: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola
Page 45: Algoritmos voraces (greedy) - CINVESTAVertello/algorithms/... · 2018-03-21 · Algoritmos voraces (greedy) Algoritmo de Prim para MST Algoritmo de Prim para MST Requiere un cola