Algoritmos voraces (greedy)

Documentos relacionados
ÁRBOLES CRISTIAN ALFREDO MUÑOZ ÁLVAREZ JUAN DAVID LONDOÑO CASTRO JUAN PABLO CHACÓN PEÑA EDUARDO GONZALES

Apuntes de Teórico de Programación 3. Apuntes de Teórico PROGRAMACIÓN 3. Greedy. Versión 1.1

Algoritmos y Estructuras de Datos III

Análisis y Diseño de Algoritmos Árboles de Mínima Expansión (Minimum Spanning Trees) DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE

Algoritmos de búsqueda exhaustiva

Algoritmos Voraces. Diseño y Análisis de Algoritmos

3.0.-ARBOLES ABARCADORES Y COMPONENTES CONEXOS CONCEPTO DE ARBOL ABARCADOR Y SU RELACION CON LOS RECORRIDOS.

Teoría de grafos y optimización en redes

Minimum Spanning Tree (Árbol de Expansión Mínima) Agustín J. González ELO320: Estructura de datos y Algoritmos

Algebra Matricial y Teoría de Grafos

Estructura de Datos. Códigos de Huffman. Primer Semestre, Compresión de Archivos. Compresión de Archivos

TIPOS ABSTRACTOS DE DATOS EN HASKELL

Algoritmo de Kruskal

Teoría de redes y optimización en redes

Análisis de algoritmos

Teoría de Grafos. Herramientas de programación para procesamiento de señales

Modelos de Redes: Árbol. M. En C. Eduardo Bustos Farías

Grafos. Suponiendo que e = [u, v]. Entonces los nodos u y v se llaman extremos de e y u y v se dice que son nodos adyacentes o vecinos.

Parte de Algoritmos de la asignatura de Programación Master de Bioinformática. Grafos

Algoritmos de búsqueda en grafos I

Árboles. Un grafo no dirigido es un árbol si y sólo si existe una ruta unica simple entre cualquiera dos de sus vértices.

5.6 Árbol generador de un grafo

Árboles de Expansión Mínima. Matemática Discreta. Agustín G. Bonifacio UNSL

ARBOLES GENERADORES. Orlando Arboleda Molina. 16 de septiembre de Escuela de Ingeniería de Sistemas y Computación de La Universidad del Valle

5.4 Caminos mínimos: Algoritmo de Dijkstra

Tema: Algoritmos para la ruta más corta en un Grafo.

Árboles abarcadores mínimos: algoritmo de Prim y algoritmo de Kruskal.

MST: dos algoritmos glotones. comp-420

Este material es de uso exclusivo para clase de algoritmos y estructura de datos, la información de este documento fue tomada textualmente de varios

Introducción al Análisis y Diseño de Algoritmos

Tema 4y 5. Algoritmos voraces. Algoritmos sobre grafos

Matemáticas Discretas L. Enrique Sucar INAOE. Teoría de Grafos. Problema de los puentes de Königsberg [Euler]

MATROIDES Y EL ALGORITMO VORAZ

OBJETIVOS ÍNDICE BIBLIOGRAFÍA

Tema: Recorrido de Grafos. Ruta más corta

Tema: Los Grafos y su importancia para la optimización de redes.

1. Caminos Mínimos en un Grafo sin Pesos 2. Caminos Mínmos en un Grafo ponderado. 1. Algoritmo de Dijkstra

Todos los Pares de Rutas más Cortas (All-Pairs Shortest Paths) DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE

Algoritmos glotones 2 (código de Huffman) mat-151

Francisco J. Hernández López

Matemáticas Discretas

Tema 2, 3 y 4 GRUPO 82 - INGENIERÍA INFORMÁTICA. Bernardo D Auria. 3 Diciembre Departamento de Estadística. Universidad Carlos III de Madrid

Sesión 4: Teoría de Grafos

Análisis de algoritmos

Árboles generadores mínimos (MST) comp-420

Tema 2: Grafos y Árboles. Algoritmos y Estructuras de Datos 3

Grafos Eulerianos y Hamiltonianos. Algoritmos y Estructuras de Datos III

AnAnálisis de redes de transporte Tr. Muchas veces se utiliza en aplicaciones que nada tienen que ver con el transporte

Definición 1: Un grafo G es una terna ordenada (V(G), E(G), Ψ

A5 Introducción a la optimización en redes

Análisis y Diseño de Algoritmos

Capítulo 4: Grafos Clase 4: Árboles

Definiciones: conjuntos, grafos, y árboles. Agustín J. González ELO 320: Estructura de Datos y Algoritmos. 2002

Tema: Algoritmos para la ruta más corta en un Grafo.

Representación y manipulación de grafos: caminos, expansión, cortes y flujos

CONTENIDO MODELOS PARA LA LOCALIZACION DE PLANTA

ANÁLISIS Y DISEÑO DE ALGORITMOS

Contenido. Contenido - IX. 1 Encapsulamiento a través de clases y objetos Introducción al lenguaje de programación Java...

Algoritmos heurísticos y aproximados. Clase 6/10/09

Un grafo G = (V, E) se dice finito si V es un conjunto finito.

Capítulo 8. Árboles. Continuar

Teoría de Grafos I. 2. Describa tres situaciones prácticas en las cuales un grafo pueda ser útil.

Metaheurísticas y heurísticas. Algoritmos y Estructuras de Datos III

Flujos de redes (Network Flows NF)

Estructuras de Datos. Practica 06: Codificación de Huffman

Tema 1: Introducción a la Teoría de Grafos

TEMA 5 El tipo grafo. Tipo grafo

Algoritmos Codiciosos y problemas de Optimización en Grafos

Tema 5 Árboles y Grafos.

Estructura de datos y de la información Boletín de problemas - Tema 10

UNIVERSIDAD DE MANAGUA Al más alto nivel

1. GRAFOS : CONCEPTOS BASICOS

Análisis de algoritmos

Árboles. no es un árbol porque no es conexo. Sin embargo, cada componente conexa es un árbol y, este tipo de grafo se llama bosque.

Caminos y Flujos optimales. 2da y 3er clase 2007

Análisis de Algoritmos Teoría de grafos

Tema 11. Estructura de datos Grafo

Grafos. AMD Grado en Ingeniería Informática. AMD Grado en Ingeniería Informática (UM) Grafos 1 / 30

Caminos y Flujos optimales. Introducción a la Investigación de Operaciones 2007

Algoritmos y Complejidad. Generalidades. Generalidades. Algoritmos greedy. Problema de la mochila. Caminos más cortos. Pablo R.

Algorítmica y Complejidad. Tema 4 Algoritmos sobre grafos.

Fundamentos de Investigación de Operaciones Modelos de Grafos

Conceptos Fundamentales del Análisis de Algoritmos

Centro Asociado Palma de Mallorca. Tutor: Antonio Rivero Cuesta

Transcripción:

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