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

Tamaño: px
Comenzar la demostración a partir de la página:

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

Transcripción

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

2 Problema de Encontrar todos los Pares de Rutas más Cortas 2 Encontrar las rutas más cortas entre todos los pares de vértices de un grafo Es el problema para hacer una tabla de distancias entre todos los pares de ciudades en un Atlas de carreteras Partimos de un grafo pesado y dirigido G = (V, E) con una función de pesos w : E R que mapea arcos a pesos con valores reales Encontrar para cada par de vértices u, v V Una ruta más corta (con menor peso) de u a v Donde el peso de la ruta es la suma de los pesos de sus arcos Salida en forma tabular Entrada en renglón u y columna v es el peso de la ruta más corta entre u y v

3 Problema de Encontrar todos los Pares de Rutas más Cortas Podemos resolver el problema ejecutando el algoritmo de rutas más cortas con una sola fuente V veces, una para cada vértice como la fuente Si todos los pesos son no-negativos, podemos utilizar el algoritmo de Dkstra Con un arreglo lineal implementando una priority-queue podemos tener un tiempo de O(V 3 +VE) = O(V 3 ) Con min-heap binario para priority-queue, O(VElgV) Mejora para grafos poco densos Con Fibonacci-heap para priority-queue O(V 2 lgv+ve) 3

4 Problema de Encontrar todos los Pares de Rutas más Cortas Si hay pesos negativos ya no podemos utilizar Dkstra 4 Entonces utilizaríamos Bellman-Ford (aunque más lento), una vez para cada vértice O(V 2 E), que para un grafo denso se convierte en O(V 4 ) Estos tiempos se pueden mejorar con otros algoritmos Algunos algoritmos utilizan representación de matriz de adyacencia y no la de lista de adyacencia como en los algoritmos de una sola fuente

5 Modelado del Problema Grafo dirigido y pesado, G = (V, E) Representación de matriz de adyacencia Pesos: W =(w ) 0 si i = w = el peso del arco dirigido (i, j) si i si i Se permiten arcos con peso negativo El grafo de entrada no contiene ciclos con peso negativo 5 j, j j y (i, y (i, j) E, j) E

6 Modelado del Problema Salida tabular de todos los pares de rutas más cortas Matriz de n x n, D = (d ) 6 d contiene el peso de una ruta más corta del vértice i al j δ(i,j) denota el peso de la ruta más corta del vértice i al j En la terminación del algoritmo d = δ(i,j) También calculamos una matriz de predecesores Π = (π ), con valor NIL si i = j o si no hay ruta de i a j y en otro caso π es el predecesor de j para alguna ruta más corta desde i

7 Subgrafo predecesor Modelado del Problema 7 El subgrafo inducido por el i-ésimo renglón de la matriz Π debe ser un árbol de rutas más cortas con raíz en i El subgrafo predecesor de G para i se define como G π,i = (V π,i, E π,i ), donde V π,i = {j V : π NIL} {i}, y E π,i = {(π, j) : j V π,i {i}}.

8 Imprimir Ruta más Corta de i a j 8 Dada la matriz de predecesores Π podemos imprimir la ruta más corta de i a j

9 Rutas más Cortas y Multiplicación de Matrices Solución con programación dinámica para el problema de todos los pares de rutas más cortas con un grafo dirigido G = (V, E) Invoca operación parecida a multiplicación de matrices Primer algoritmo Θ(V 4 ) Mejora en Θ(V 3 lgv) 9

10 4 pasos Recordando Programación Dinámica Caracterizar la estructura de la solución óptima 10 Definir recursivamente el valor de una solución óptima Calcular el valor de la solución óptima de manera bottomup Construir la solución óptima con la información calculada

11 Estructura de la Ruta más Corta, con Lema Prueba al lema 24.1 Descomponemos la ruta p en: Tenemos entonces que: Asumimos que hay una ruta p de v i a v j con peso: Entonces la ruta de v 1 a v k que pasa por p : Con peso: Tiene un peso menor a w(p) Contradice lo que asumimos, que p es una ruta más corta de v 1 a v k. v w + p i p pjk 1 1 vi v j ( p) = w( p1 i ) + w( p ) w( p jk w ( p' ) < w( p ) v p1i 1 v i p' v j pjk w ( p 1i ) + w( p' ) + w( p jk ) v ) v k k

12 Solución Recursiva para Todos los Pares de Rutas más Cortas 12 Sea l (m) el mínimo peso de una ruta del vértice i al j que tiene al menos m arcos Cuando m = 0, hay una ruta más corta de i a j sin arcos sí y solo si i = j, entonces (0) l 0 = Para m 1, calculamos l (m) como el mínimo de l (m-1) y el mínimo peso de la ruta de i a j con a lo más m arcos Con todos los posibles predecesores k de j l l ( m) ( m) = min( l = min( l 1 k n ( m 1) ( m 1) ik Los pesos de la ruta más corta están dados por δ(i,j) =l (n-1) = l (n) = l (n+1) =. si i = j, si i Hay a lo más n-1 arcos en la ruta más corta de i a j asumiendo que no hay ciclos con peso negativo j., min{ l 1 k n + w kj ) ( m 1) ik + w kj })

13 Calculando los Pesos de la Ruta más Corta Bottom-UP Tomamos como entrada la matriz W = (w ) Calculamos las matrices 13 L (1), L (2),, L (n-1), donde para m = 1, 2,, n-1 tenemos que L (m) = (l (m) ) La matriz final tiene los pesos de las rutas más cortas l (1) = w para todos los vértices i, j V, entonces L (1) = W

14 Algoritmo Dadas las matrices L (m-1) y W regresa L (m) 14 Extiende las rutas más cortas obtenidas hasta ahora con un arco

15 Algoritmo El algoritmo se basa en la ecuación recursiva Tiempo de ejecución Θ(n 3 ) por los ciclos anidados Parecido a multiplicación de matrices 15

16 Algoritmo Algoritmo para encontrar todos los pares de rutas más cortas Basado en Extend-Shortest-Paths Este algoritmo se ejecuta en un tiempo de Θ(n 4 ) 16

17 Ejemplo 17

18 Algoritmo más Rápido 18 No queremos calcular L (m) porque el resultado lo tenemos desde L (n-1) asumiendo que no hay ciclos con peso negativo, L (m) = L (n-1) para todos los enteros m n-1 Podemos calcular L (n-1) en ceiling(lg(n-1)) con la secuencia: L (1) = W L (2) = W 2 = W W L (4) = W 4 = W 2 W 2 L (8) = W 8 = W 4 W 4 L (2 lg(n-1) ) = W 2 lg(n-1) = W 2 lg(n-1) -1 W2 lg(n-1) -1 Continuamos hasta L (2 lg(n-1) ) Proceso conocido como técnica de repeating squaring Requiere solo lg(n-1) productos de matrices, llamadas a Extend

19 Algoritmo más Rápido Tiempo de ejecución Θ(n 3 lg n) 19

20 Algoritmo Floyd-Warshall Utiliza un enfoque diferente de programación dinámica 20 Tiempo de ejecución de Θ(V 3 ) Puede haber vértices con peso negativo pero no ciclos con peso negativo Seguimos el proceso de programación dinámica para desarrollar el algoritmo

21 Algoritmo Floyd-Warshall Considera los vértices intermedios de una ruta más corta Si p = <v 1, v 2,, v l > v 2 v l-1 son los vértices intermedios 21 El algoritmo Floyd-Warshall trabaja reduciendo sucesivamente el número de vértices intermedios que pueden ocurrir en una ruta más corta y sus subrutas Sea el grafo G = (V, E) con vértices V numerados de 1...n, V = {1, 2,, n}, y considerando un subconjunto {1, 2,, k} para algún k Sea p el mínimo peso de ruta desde el vértice i al vértice j para el que los vértices intermedios son tomados de {1, 2,, k}, puede ocurrir una de dos situaciones:

22 Algoritmo Floyd-Warshall 1) k no es un vértice intermedio de p i p j Contiene los vértices de {1, 2,, k-1} 2) k es un vértice intermedio de p i p1 k p2 j Contiene los vértices de {1, 2,, k-1} p 1 es la ruta más corta desde 1 a k p 2 es la ruta más corta desde k a j Esto por el lema

23 Solución Recursiva Sea d (k) el peso de la ruta más corta desde i a j con todos los vértices intermedios en {1, 2,, k} Como para cada ruta, los vértices intermedios están en el conjunto {1, 2,, n}, la matriz D (n) = (d (n) ) contendrá la solución final δ(i,j) para cada i, j V. Recurrencia: d D ( k ) ( n) w min( d ( n) ] 23 = ( k 1) ( k 1) ( k 1), dik + dkj = [ d = [ δ ( i, j)], n = V ) si si k k = 0 1

24 Algoritmo Calcula valores d (k) en orden creciente de los valores de k Entrada, matriz nxn W Regresa D (n) con los pesos de las rutas más cortas 24 Tiempo de ejecución es Θ(n 3 ), mejor que los anteriores con O(n 3 lgn) y O(n 4 )

25 Ejemplo 25

26 Ejemplo 26

27 Ejemplo 27

28 Ejemplo 28

29 Construcción de la Ruta más Corta Hay varios métodos de construir las rutas con el algoritmo Floyd-Warshall 29 Construir la matriz D de pesos de rutas más cortas y luego la matriz de predecesores Π a partir de D Construir la matriz de predecesores en línea, conforme el algoritmo Floyd-Warshall construye las matrices D (k) π π (0) ( k ) = = NIL i ( π ( π k 1) k 1) kj si i = j ó w si i j y w si d si d ( k 1) ( k 1) d > d =,. ( k 1) ik ( k 1) ik + + d d ( k 1) kj ( k 1) kj

30 Ejercicio Ejecute el algoritmo de Floyd Warshall para el siguiente grafo

Ruta más Corta con una sóla Fuente de Inicio (Single-Source Shortest Paths) DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE

Ruta más Corta con una sóla Fuente de Inicio (Single-Source Shortest Paths) DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Ruta más Corta con una sóla Fuente de Inicio (Single-Source Shortest Paths) 1 DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Problema de Encontrar la Ruta más Corta 2 Se requiere llegar de

Más detalles

Francisco J. Hernández López

Francisco J. Hernández López Francisco J. Hernández López fcoj23@cimat.mx Estructura de datos no lineales donde cada componente o nodo puede tener uno o más predecesores (a diferencia de los árboles) y sucesores Un grafo esta formado

Más detalles

Grafos: algunas definiciones

Grafos: algunas definiciones Grafos: algunas definiciones Un grafo dirigido G es un par (V, E), donde V es un conjunto finito de nodos (o vértices) y E es una relación binaria sobre V. Un grafo no dirigido G es un par (V, E), donde

Más detalles

Algoritmos para caminos más cortos (2) comp-420

Algoritmos para caminos más cortos (2) comp-420 lgoritmos para caminos más cortos (2) comp-420 lgoritmo * escrito totalmente en 1968 por Peter art, Nils Nilsson y ertram Raphael. n 1964 Nils Nilsson inventó un método que utiliza una heurística para

Más detalles

Programación dinámica: un último ejemplo

Programación dinámica: un último ejemplo Programación dinámica: un último ejemplo Dado: matrices A m n, B n r, C r s de números enteros Para calcular A m n B n r el algoritmo usual realiza m n r multiplicaciones de números enteros Cuántas multiplicaciones

Más detalles

Análisis de Algoritmos

Análisis de Algoritmos Análisis de Algoritmos Profesor: M.C. Cuauhtemoc Gomez Suarez Tarea 06: Para calificación de examen. Sección: 503 Manuel Alejandro Salazar Mejía. Matrícula: 0300704C 11 de enero de 2011 1 Tarea: a) Programar

Más detalles

Algoritmos Elementales de Grafos DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE

Algoritmos Elementales de Grafos DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Análisis álii y Diseño de Algoritmos Algoritmos Elementales de Grafos DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Introducción Buscar en un grafo significa sistemáticamente seguir las aristas

Más detalles

Tema: Recorrido de Grafos. Ruta más corta

Tema: Recorrido de Grafos. Ruta más corta PED104. Guía N 12 Página 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación con Estructuras de Datos Tema: Recorrido de Grafos. Ruta más corta Competencia Desarrolla sistemas de información

Más detalles

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

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 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 Problema de Cableado de Circuitos Electrónicos 2 Diseño

Más detalles

Análisis y Diseño de Algoritmos

Análisis y Diseño de Algoritmos Análisis y Diseño de Algoritmos Algoritmos Voraces DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Introducción Siempre toman la mejor opción en cada momento (punto de decisión del algoritmo)

Más detalles

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

Tema: Algoritmos para la ruta más corta en un Grafo. Programación IV. Guía No. 10 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación IV Tema: Algoritmos para la ruta más corta en un Grafo. Objetivos Específicos Definir el concepto de camino

Más detalles

Caminos más cortos en gráficas. comp-420

Caminos más cortos en gráficas. comp-420 Caminos más cortos en gráficas comp-40 Caminos más cortos en gráficas Dado un grafo con peso y dirigido G = (V, E) con una función de peso w : E R que transforma aristas a valores reales de peso. El peso

Más detalles

Algoritmos para determinar Caminos Mínimos en Grafos

Algoritmos para determinar Caminos Mínimos en Grafos Problemas de camino mínimo Algoritmos para determinar Caminos Mínimos en Grafos Algoritmos y Estructuras de Datos III DC, FCEN, UBA, C 202 Problemas de camino mínimo Dado un grafo orientado G = (V, E)

Más detalles

Análisis y Diseño de Algoritmos

Análisis y Diseño de Algoritmos Análisis y Diseño de Algoritmos Introducción: El Rol de los Algoritmos en Computación DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Temario 2 1. Introducción 2. Notación Asintótica 3. Recurrencias

Más detalles

Algoritmos voraces (greedy)

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

Más detalles

Apuntes de Teórico PROGRAMACIÓN 3

Apuntes de Teórico PROGRAMACIÓN 3 Apuntes de Teórico PROGRAACIÓN Programación Dinámica Versión. Índice Índice... Introducción... Principio de optimalidad...5 Ejemplo: Camino de menor costo...6 Ejemplo: problema de la mochila...6 Aplicación

Más detalles

Programación Dinámica

Programación Dinámica Programación Dinámica Adaptado de Algorithm Design Goodrich and Tamassia Programación Dinámica 1 Calculando la serie de Fibonacci 1,1,2,3,5,8,13,21,. fib(n) = 1 si n = 0,1 fib(n 1) + fib(n 2) o.c. Programación

Más detalles

PARTE II: ALGORÍTMICA

PARTE II: ALGORÍTMICA Programa de teoría Parte I. Estructuras de Datos.. Abstracciones y especificaciones.. Conjuntos y diccionarios.. Representación de conjuntos mediante árboles. 4. Grafos. Parte II. Algorítmica.. Análisis

Más detalles

Máximo Flujo (Maximum Flow) DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE

Máximo Flujo (Maximum Flow) DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Máximo Flujo (Maximum Flow) DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Flujo Máximo También podemos utilizar un grafo dirigido para modelar una red de flujo Se produce un material que

Más detalles

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

Tema: Algoritmos para la ruta más corta en un Grafo. Programación IV. Guía 10 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación IV Tema: Algoritmos para la ruta más corta en un Grafo. Objetivos Específicos Definir el concepto de camino

Más detalles

259. El número de combinaciones de m objetos entre un conjunto de n, denotado por n, para n 1 y 0 m n, se puede definir recursivamente por: m

259. El número de combinaciones de m objetos entre un conjunto de n, denotado por n, para n 1 y 0 m n, se puede definir recursivamente por: m 258. Aplicar el algoritmo de programación dinámica para el problema del cambio de monedas sobre el siguiente ejemplo: n = 3, P = 9, c = (1, 3, 4). Qué ocurre si multiplicamos P y c por un valor constante,

Más detalles

Análisis y Diseño de Algoritmos

Análisis y Diseño de Algoritmos Análisis y Diseño de Algoritmos Ordenamiento Heapsort y Quicksort DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Heaps Un Heap es una estructura de datos binaria Un arreglo que representa

Más detalles

Matemáticas Discretas

Matemáticas Discretas Coordinación de Ciencias Computacionales - INAOE Matemáticas Discretas Cursos Propedéuticos 2016 Ciencias Computacionales INAOE Dr. Enrique Muñoz de Cote jemc@inaoep.mx http://ccc.inaoep.mx/~jemc Oficina

Más detalles

Programa de teoría. Algoritmos y Estructuras de Datos II. 3. Algoritmos voraces. 1. Análisis de algoritmos 2. Divide y vencerás

Programa de teoría. Algoritmos y Estructuras de Datos II. 3. Algoritmos voraces. 1. Análisis de algoritmos 2. Divide y vencerás Programa de teoría Algoritmos y Estructuras de Datos II 1. Análisis de algoritmos 2. Divide y vencerás 3. Algoritmos voraces 4. Programación dinámica 5. Backtracking 6. Ramificación y poda A.E.D. II 1

Más detalles

Teoría de redes y optimización en redes

Teoría de redes y optimización en redes Teoría de redes y optimización en redes Pedro Sánchez Martín Contenidos Definiciones básicas Árbol generador mínimo de expansión Camino mínimo Algoritmo Dkstra Algoritmo Bellman-Ford Fluo máximo Fluo de

Más detalles

Gráficas. Las relaciones que resultan de estas conexiones nos llevan a preguntas como:

Gráficas. Las relaciones que resultan de estas conexiones nos llevan a preguntas como: GRÁFICAS Gráficas Muchas aplicaciones computacionales involucran no solo un conjunto de elementos sino también conexiones entre pares de elementos. Las relaciones que resultan de estas conexiones nos llevan

Más detalles

Algoritmos y Estructuras de Datos III Apunte Teórico Primer cuatrimestre

Algoritmos y Estructuras de Datos III Apunte Teórico Primer cuatrimestre Algoritmos y Estructuras de Datos III Apunte Teórico 2018 Primer cuatrimestre Índice 1. Grafos 2 1.1. Conceptos básicos.......................... 2 1.2. Árboles................................ 6 1.3. Camino

Más detalles

Análisis y Diseño de Algoritmos (AyDA) Isabel Besembel Carrera

Análisis y Diseño de Algoritmos (AyDA) Isabel Besembel Carrera Análisis y Diseño de Algoritmos (AyDA) Isabel Besembel Carrera Estrategia 5 Programación dinámica Técnica utilizada para eliminar el trabajo redundante almacenando en un área de memoria especial las soluciones

Más detalles

Matemáticas Discretas

Matemáticas Discretas Coordinación de Ciencias Computacionales - INAOE Matemáticas Discretas Cursos Propedéuticos 2011 Ciencias Computacionales INAOE Dr. Enrique Muñoz de Cote jemc@inaoep.mx http://ccc.inaoep.mx/~jemc Oficina

Más detalles

Definición de las operaciones con matrices

Definición de las operaciones con matrices Definición de las operaciones con matrices Ejercicios Objetivos Aprender a hacer las operaciones aritméticas con matrices Aprender las definiciones formales de operaciones con matrices Requisitos Operaciones

Más detalles

Teoría de grafos y optimización en redes

Teoría de grafos y optimización en redes Teoría de grafos y optimización en redes José María Ferrer Caja Universidad Pontificia Comillas Definiciones básicas Grafo: Conjunto de nodos (o vértices) unidos por aristas G = (V,E) Ejemplo V = {,,,,

Más detalles

Unidad 2: Problemas de camino mínimo

Unidad 2: Problemas de camino mínimo Representación Recorrido de grafos Camino mínimo Unidad 2: Problemas de camino mínimo Representación Matriz de adyacencia Matriz de incidencia Listas de vecinos Recorrido de grafos Estructuras de datos

Más detalles

Análisis y Diseño de Algoritmos

Análisis y Diseño de Algoritmos Análisis y Diseño de Algoritmos Recurrencias DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Introducción 2 Cuando un algoritmo se llama a sí mismo Su tiempo de ejecución se puede describir

Más detalles

Programación Dinámica

Programación Dinámica Programación Dinámica Es aplicada típicamente a problemas de optimización, donde puede haber muchas soluciones, cada una tiene un valor asociado y prentendemos obtener la solución con valor óptimo. Al

Más detalles

Diseño de algoritmos

Diseño de algoritmos Diseño de algoritmos Programación Dinámica Jesús Bermúdez de Andrés Universidad del País Vasco/Euskal Herriko Unibertsitatea (UPV/EHU) Curso 2008-09 1 Programación Dinámica Definición de la técnica Funciones

Más detalles

1. Diseñe algoritmos que permitan resolver eficientemente el problema de la mochila 0/1 para los siguientes casos:

1. Diseñe algoritmos que permitan resolver eficientemente el problema de la mochila 0/1 para los siguientes casos: PROGRAMACIÓN DINÁMICA RELACIÓN DE EJERCICIOS Y PROBLEMAS 1. Diseñe algoritmos que permitan resolver eficientemente el problema de la mochila /1 para los siguientes casos: a. Mochila de capacidad W=15:

Más detalles

Programación dinámica

Programación dinámica Parte de Algoritmos de la asignatura de Programación Master de Bioinformática Programación dinámica Web asignatura: http://dis.um.es/~domingo/algbio.html E-mail profesor: domingo@um.es Transparencias preparadas

Más detalles

Programación II Sesión 4: Inmersión, desplegado-plegado, transformación recursivo-iterativo

Programación II Sesión 4: Inmersión, desplegado-plegado, transformación recursivo-iterativo Programación II Sesión 4: Inmersión, desplegado-plegado, transformación recursivo-iterativo Diego R. Llanos Ferraris UNED, Centro Asociado de Palencia Nota: Estos apuntes son la guía utilizada por el Profesor

Más detalles

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

ÁRBOLES CRISTIAN ALFREDO MUÑOZ ÁLVAREZ JUAN DAVID LONDOÑO CASTRO JUAN PABLO CHACÓN PEÑA EDUARDO GONZALES ÁRBOLES CRISTIAN ALFREDO MUÑOZ ÁLVAREZ JUAN DAVID LONDOÑO CASTRO JUAN PABLO CHACÓN PEÑA EDUARDO GONZALES ÁRBOL Un árbol es un grafo no dirigido, conexo, sin ciclos (acíclico), y que no contiene aristas

Más detalles

Programación Dinámica

Programación Dinámica Programación Dinámica La técnica de programación dinámica se aplica en general a problemas de optimización. l igual que "dividir y conquistar", el problema es dividido en subproblemas de tamaños menores

Más detalles

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

Matemáticas Discretas L. Enrique Sucar INAOE. Teoría de Grafos. Problema de los puentes de Königsberg [Euler] Matemáticas Discretas L. Enrique Sucar INAOE Teoría de Grafos Problema de los puentes de Königsberg [Euler] Teoría de Grafos Definición y terminología Tipos de grafos Trayectorias y circuitos Isomorfismo

Más detalles

Programación Dinámica 1

Programación Dinámica 1 Programación Dinámica 1 El método de programación dinámica sirve para resolver problemas combinando las soluciones de subproblemas. Normalmente es usada para resolver problemas de optimización. Al construir

Más detalles

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

Representación y manipulación de grafos: caminos, expansión, cortes y flujos Un grafo G es un par de conjuntos G =(V,E) Representación y manipulación de grafos: caminos, expansión, cortes y flujos V = un conjunto de n vértices u, v, w V E = un conjunto de m aristas V = n, E = m

Más detalles

Centro Asociado Palma de Mallorca. Tutor: Antonio Rivero Cuesta

Centro Asociado Palma de Mallorca. Tutor: Antonio Rivero Cuesta Centro Asociado Palma de Mallorca Lógica y Estructuras Discretas Tutor: Antonio Rivero Cuesta Tema 5 Teoría de Grafos Conceptos Básicos Un grafo consta de: Grafo Un conjunto de nodos, Un conjunto de aristas

Más detalles

5.4 Caminos mínimos: Algoritmo de Dijkstra

5.4 Caminos mínimos: Algoritmo de Dijkstra 81 5.4 Caminos mínimos: Algoritmo de Dijkstra Al observar nuestro mapa de carreteras se pueden considerar las distancias en km que hay entre las ciudades, a cada arista se le asigna el valor correspondiente

Más detalles

Ejemplo: El problema de la mochila. Algoritmos golosos. Algoritmos y Estructuras de Datos III. Segundo cuatrimestre 2013

Ejemplo: El problema de la mochila. Algoritmos golosos. Algoritmos y Estructuras de Datos III. Segundo cuatrimestre 2013 Técnicas de diseño de algoritmos Algoritmos y Estructuras de Datos III Segundo cuatrimestre 2013 Técnicas de diseño de algoritmos Algoritmos golosos Backtracking (búsqueda con retroceso) Divide and conquer

Más detalles

Capítulo 5 Introducción a la teoría de grafos

Capítulo 5 Introducción a la teoría de grafos Capítulo 5 Introducción a la teoría de grafos 5.1. Terminología básica y tipos de grafos Una primera aproximación a la teoría de grafos la tenemos cuando observamos un mapa de carreteras: ciudades (vértices)

Más detalles

Estructuras de Datos Orientadas a Objetos. Pseudocódigo y aplicaciones en C#.NET. Capítulo 9.- Grafos

Estructuras de Datos Orientadas a Objetos. Pseudocódigo y aplicaciones en C#.NET. Capítulo 9.- Grafos Capítulo 9.- Grafos Cuestionario 9.1 Se pueden representar los nodos de un grafo como un conjunto de elementos 9.2 Se pueden representar los arcos de un grafo como un conjunto de tuplas 9.3 Los grafos

Más detalles

4.2. El número de combinaciones de m objetos entre un conjunto de n, denotado por n, para n 1 y 0 m n, se puede definir recursivamente por: m

4.2. El número de combinaciones de m objetos entre un conjunto de n, denotado por n, para n 1 y 0 m n, se puede definir recursivamente por: m 4.1. Aplicar el algoritmo de programación dinámica para el problema del cambio de monedas sobre el siguiente ejemplo: n = 3, P = 9, c = (1, 3, 4). Qué ocurre si multiplicamos P y c por un valor constante,

Más detalles

Teoría y Complejidad Algorítmica

Teoría y Complejidad Algorítmica Teoría y Complejidad Algorítmica Practica 3 Eduardo Viciana Gámez Contiene documentación y código fuente de la práctica 2 Descripción de la Práctica En esta práctica se van a comparar dos algoritmos que

Más detalles

Algebra Matricial y Teoría de Grafos

Algebra Matricial y Teoría de Grafos Algebra Matricial y Teoría de Grafos Unidad 3: Nociones de teoría de grafos Luis M. Torres Escuela Politécnica del Litoral Quito, Enero 2008 Maestría en Control de Operaciones y Gestión Logística p.1 Contenido

Más detalles

Tema: Programación Dinámica.

Tema: Programación Dinámica. Programación IV. Guía No. 12 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación IV Tema: Programación Dinámica. Objetivos Específicos Definir el concepto de programación dinámica. Interpretar

Más detalles

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

Apuntes de Teórico de Programación 3. Apuntes de Teórico PROGRAMACIÓN 3. Greedy. Versión 1.1 Apuntes de Teórico PROGRAMACIÓN 3 Greedy Versión 1.1 1 Índice Índice... Introducción... 3 Ejemplo 1 (problema de las monedas)... 3 Ejemplo (problema de la mochila)... 4 Aplicaciones del método Greedy a

Más detalles

Tema: Programación Dinámica.

Tema: Programación Dinámica. Programación IV. Guía 11 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación IV Tema: Programación Dinámica. Objetivos Específicos Definir el concepto de programación dinámica. Interpretar

Más detalles

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

Caminos y Flujos optimales. 2da y 3er clase 2007 Caminos y Flujos optimales 2da y 3er clase 2007 ESQUELETOS OPTIMALES (mínimo) Esqueleto de G =(X,U) es un subgrafo que es un árbol y que contiene todos los vértices de G. Esqueleto Mínimo de G = (X, U,

Más detalles

Técnicas para el Diseño de Algoritmos

Técnicas para el Diseño de Algoritmos Técnicas para el Diseño de Algoritmos Algoritmos Algoritmos voraces Divide y conquista Programación dinámica Backtracking Algoritmos Voraces Algoritmos Voraces Algoritmos que implementan una búsqueda miope

Más detalles

Deseamos interconectar entre si todos los ordenadores de un edificio

Deseamos interconectar entre si todos los ordenadores de un edificio Teoría de grafos Deseamos interconectar entre si todos los ordenadores de un edificio Tres problemas de conexión: Conectar una serie de ordenadores por pares Procurar que la distancia por cable entre dos

Más detalles

Programación Dinámica

Programación Dinámica Programación Dinámica Agustín Santiago Gutiérrez Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires Septiembre 2014 Agustín Gutiérrez (UBA) Programación Dinámica Septiembre 2014 1 / 10

Más detalles

Divide-y-vencerás, backtracking y programación dinámica

Divide-y-vencerás, backtracking y programación dinámica Divide-y-vencerás, backtracking y programación dinámica Diseño y Análisis de Algoritmos Cátedra de Programación Carrera de Ingeniería de Sistemas Prof. Isabel Besembel Carrera Noviembre, 2012 Prof. Isabel

Más detalles

1. GRAFOS : CONCEPTOS BASICOS

1. GRAFOS : CONCEPTOS BASICOS 1. GRAFOS : CONCEPTOS BASICOS Sea V un conjunto finito no vacio y sea E V x V. El par (V, E) es un grafo no dirigido, donde V es un conjunto de vértices o nodos y E es un conjunto de aristas. Denotaremos

Más detalles

Tema 6.2: Camino de Menor Valor. CMV: Objetivo. CMV: ejemplo. Ejemplo. Camino de menor valor

Tema 6.2: Camino de Menor Valor. CMV: Objetivo. CMV: ejemplo. Ejemplo. Camino de menor valor Tema.: Camino de Menor Valor Modelización Matemática Máster en Ingeniería de Caminos, Canales y Puertos Camino de menor valor Algoritmos Algoritmo de Dijkstra Algoritmo de Bellman-Ford Ignacio Montes Departamento

Más detalles

Formulación del problema de la ruta más corta en programación lineal

Formulación del problema de la ruta más corta en programación lineal Formulación del problema de la ruta más corta en programación lineal En esta sección se describen dos formulaciones de programación lineal para el problema de la ruta más corta. Las formulaciones son generales,

Más detalles

Backtracking: Esquema General

Backtracking: Esquema General Backtracking Idea: Técnica para recorrer sistemáticamente todas las posibles configuraciones de un espacio asociado a soluciones candidatos de un problema computacional. Se puede pensar este espacio tiene

Más detalles

Introducción Aplicaciones Primer Algoritmo Segundo Algoritmo - Algoritmo de Fortune. Diagrama de Voronoi. Jose Luis Bravo Trinidad 1 / 29

Introducción Aplicaciones Primer Algoritmo Segundo Algoritmo - Algoritmo de Fortune. Diagrama de Voronoi. Jose Luis Bravo Trinidad 1 / 29 1 / 29 Definición Propiedades geométricas Índice 1 Introducción Definición Propiedades geométricas 2 Análisis de recursos Triangulaciones Robótica Diseño 3 Implementación 4 Segundo - de Fortune 2 / 29

Más detalles

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

Un grafo G = (V, E) se dice finito si V es un conjunto finito. 1 Grafos: Primeras definiciones Definición 1.1 Un grafo G se define como un par (V, E), donde V es un conjunto cuyos elementos son denominados vértices o nodos y E es un subconjunto de pares no ordenados

Más detalles

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

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 Bernardo D Auria Departamento de Estadística Universidad Carlos III de Madrid GRUPO 82 - INGENIERÍA INFORMÁTICA Diciembre 2008 Ejercicio T2-JN12 Comprueba que el problema lineal min x x 1 + x 2 2x x +

Más detalles

El problema de localización del árbol de concentradores

El problema de localización del árbol de concentradores El problema de localización del árbol de concentradores I. Contreras 1 E. Fernández 1 A. Marín 2 1 Departmento de Estadística e I.O. Universidad Politécnica de Cataluña 2 Departmento de Estadística e I.O.

Más detalles

Caminos más cortos: Jose Aguilar

Caminos más cortos: Jose Aguilar Caminos más cortos: algoritmo de Dijkstra, algoritmo de Bellman-Ford, Caminos más cortos en grafos dirigidos, algoritmo de Floyd-Warshall y algoritmo de Johnson. Jose Aguilar Caminos más cortos Coste de

Más detalles

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

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 CLASE GRAFOS 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 libros por lo que está prohibida su impresión

Más detalles

Algoritmos mas complejos. Algoritmos y Estructuras de Datos II (Programación I) Mgter. Vallejos, Oscar A.

Algoritmos mas complejos. Algoritmos y Estructuras de Datos II (Programación I) Mgter. Vallejos, Oscar A. Algoritmos mas complejos Divide y Vencerás Técnica empleada en cosas dispares. También en el diseño de algoritmos. (ordenación: Quicksort; Mergesort). Consiste básicamente en dividir un problema original

Más detalles

Multiplicación de matrices simétricas

Multiplicación de matrices simétricas Multiplicación de matrices simétricas La traspuesta de una matriz A n n es definida como una matriz A T n n tal que A T [i, j] =A[j, i] paracadai, j 2{1,...,n} Además, una matriz A es simétrica si A =

Más detalles

Algoritmos y Estructuras de Datos II, Segundo del Grado de Ingeniería Informática, Test de Programación Dinámica, 4 de mayo 2017

Algoritmos y Estructuras de Datos II, Segundo del Grado de Ingeniería Informática, Test de Programación Dinámica, 4 de mayo 2017 Algoritmos y Estructuras de Datos II, Segundo del Grado de Ingeniería Informática, Test de Programación Dinámica, 4 de mayo 2017 Para cada uno de los dos problemas siguientes, hay que explicar cómo se

Más detalles

Estructuras de Datos y Algoritmos

Estructuras de Datos y Algoritmos Estructuras de Datos y Algoritmos Práctico 3: Grafos (Finalización: 06/09) Ing. en Computación - Ing. en Informática - Prof. en Computación Año 2018 Ejercicio 1: Dado el siguiente p-digrafo: 5 b 6 d 11

Más detalles

Grafos. Algoritmos y Estructuras de Datos III

Grafos. Algoritmos y Estructuras de Datos III Grafos Algoritmos y Estructuras de Datos III Grafos Un grafo G = (V, X ) es un par de conjuntos, donde V es un conjunto de puntos o nodos o vértices y X es un subconjunto del conjunto de pares no ordenados

Más detalles

Teoría de Grafos y Árboles.

Teoría de Grafos y Árboles. Estructuras Discretas Teoría de Grafos y Árboles. Prof. Miguel Fagúndez www.geocities.com/mfagundez4 1 www.geocities.com/mfagundez4 www.geocities.com/mfagundez4 3 Grafos: Definición Un grafo no es mas

Más detalles

Á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.

Á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. ÁRBOLES Árboles Un grafo conectado que no contiene circuitos simples. Utilizados desde 1857, por el matemático Ingles Arthur Cayley para contar ciertos tipos de componentes químicos. Un árbol es un grafo

Más detalles

Algoritmos en Teoría de Grafos

Algoritmos en Teoría de Grafos Algoritmos en Teoría de Grafos Jesús García López de Lacalle Algoritmos en Teoría de Grafos 1. Introducción 2. Conectividad 3. Caminos mínimos y distancias 4. Planificación y optimización de tareas 5.

Más detalles

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

Minimum Spanning Tree (Árbol de Expansión Mínima) Agustín J. González ELO320: Estructura de datos y Algoritmos Minimum Spanning Tree (Árbol de Expansión Mínima) Agustín J. González ELO320: Estructura de datos y Algoritmos 1 Introducción Lo que realmente se minimiza es el peso del árbol obtenido. No se minimiza

Más detalles

Programación: Sistemas unitriangulares inferiores

Programación: Sistemas unitriangulares inferiores Programación: Sistemas unitriangulares inferiores Objetivos. Programar en el lenguaje de MATLAB el método de la sustitución hacia adelante para resolver sistemas de ecuaciones lineales con matrices unitriangulares

Más detalles

Capítulo 4: Grafos Clase 4: Árboles

Capítulo 4: Grafos Clase 4: Árboles Capítulo 4: Grafos Clase 4: Árboles Matemática Discreta - CC3101 Profesor: Pablo Barceló P. Barceló Matemática Discreta - Cap. 4: Grafos 1 / 12 Árboles Los árboles son una clase particular de grafos que

Más detalles

Matemáticas Discretas

Matemáticas Discretas Coordinación de Ciencias Computacionales - INAOE Matemáticas Discretas Cursos Propedéuticos 2011 Ciencias Computacionales INAOE Dr. Enrique Muñoz de Cote jemc@inaoep.mx http://ccc.inaoep.mx/~jemc Oficina

Más detalles

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

Algoritmos Voraces. Diseño y Análisis de Algoritmos Algoritmos Voraces Diseño y Análisis de Algoritmos Contenidos Contenidos 1 Introducción 2 Ejemplos básicos 3 Cambio de monedas 4 Problema de la mochila 5 Problemas de planificación de tareas 6 Patrones

Más detalles

Análisis y Diseño de Algoritmos

Análisis y Diseño de Algoritmos Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Ordenamiento por Comparación (Comparison Sorts) Tiempo de ejecución HeapSort y

Más detalles

Diseño de algoritmos

Diseño de algoritmos Diseño de algoritmos Algoritmos de Vuelta Atrás Jesús Bermúdez de Andrés Universidad del País Vasco/Euskal Herriko Unibertsitatea (UPV/EHU) Curso 2008-09 1 Algoritmos de vuelta atrás El coloreado de mapas

Más detalles

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

ARBOLES GENERADORES. Orlando Arboleda Molina. 16 de septiembre de Escuela de Ingeniería de Sistemas y Computación de La Universidad del Valle ARBOLES GENERADORES Orlando Arboleda Molina Escuela de Ingeniería de Sistemas y Computación de La Universidad del Valle 16 de septiembre de 2008 Contenido Árboles generadores Algoritmo búsqueda por profundidad

Más detalles

Técnicas de diseño de algoritmos Programación dinámica

Técnicas de diseño de algoritmos Programación dinámica Técnicas de diseño de algoritmos Programación dinámica Luis Javier Rodríguez Fuentes Amparo Varona Fernández Departamento de Electricidad y Electrónica Facultad de Ciencia y Tecnología, UPV/EHU luisjavier.rodriguez@ehu.es

Más detalles

Algoritmos de fuerza bruta

Algoritmos de fuerza bruta Dr. Eduardo A. RODRÍGUEZ TELLO CINVESTAV-Tamaulipas 29 de enero de 2018 Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Algoritmos de fuerza bruta 29 de enero de 2018 1 / 26 1 Algoritmos de fuerza bruta Introducción

Más detalles

Diseño y Análisis de Algoritmos

Diseño y Análisis de Algoritmos 1. Recursividad 2. "Dividir para Reinar" 3. Recursividad y Tabulación (Programación Dinámica) 4. Métodos Matemáticos Funciones discretas Notación O Ecuaciones de recurrencia 5. Casos de Estudio Breve descripción

Más detalles

Fundamentos de Programación Entera. A. Revisión. Carlos Testuri Germán Ferrari

Fundamentos de Programación Entera. A. Revisión. Carlos Testuri Germán Ferrari Fundamentos de Programación Entera A. Revisión Carlos Testuri Germán Ferrari Departamento de Investigación Operativa Instituto de Computación Facultad de Ingeniería Universidad de la República 2012-2018

Más detalles

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

Parte de Algoritmos de la asignatura de Programación Master de Bioinformática. Grafos Parte de Algoritmos de la asignatura de Programación Master de Bioinformática Grafos Web asignatura: http://dis.um.es/~domingo/algbio.html E-mail profesor: domingo@um.es Transparencias preparadas a partir

Más detalles

Sesión 4: Teoría de Grafos

Sesión 4: Teoría de Grafos Modelos Gráficos Probabilistas L. Enrique Sucar INAOE Sesión 4: Teoría de Grafos Problema de los puentes de Königsberg [Euler] Teoría de Grafos Definición y terminología Tipos de grafos Trayectorias y

Más detalles

MODULARIDAD Y ESTRUCTURA DE COMUNIDADES EN REDES MATI

MODULARIDAD Y ESTRUCTURA DE COMUNIDADES EN REDES MATI MODULARIDAD Y ESTRUCTURA DE COMUNIDADES EN REDES MATI María Isabel Cardeñosa Sánchez Abraham Peña Hoyos 1 Modularidad y estructura de comunidades en redes Introducción Muchos sistemas de interés científico

Más detalles

Dividir-conquistar y podar-buscar

Dividir-conquistar y podar-buscar Técnicas de diseño de algoritmos Dividir-conquistar y podar-buscar Dra. Elisa Schaeffer elisa.schaeffer@gmail.com PISIS / FIME / UANL DC y PB p. 1 Diseño de algoritmos La meta: encontrar una manera eficiente

Más detalles

95.12 Algoritmos y Programación II Práctica 7: árboles

95.12 Algoritmos y Programación II Práctica 7: árboles Notas preliminares 95.12 Algoritmos y Programación II Práctica 7: árboles El objetivo de esta práctica es introducir distintas clases de estructuras de datos arbóreas y algoritmos para manipularlas. Los

Más detalles

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

Tema 1: Introducción a la Teoría de Grafos Tema 1: Introducción a la Teoría de Grafos MATEMÁTICA A DISCRETA Nociones básicas Subgrafos. Operaciones con grafos Formas de definir un grafo Isomorfismo de grafos Tema 1: 1 Nociones básicas: Grafo: G

Más detalles

Optimización combinatoria Flujo en redes. Investigación Operativa, Grado en Estadística y Empresa, 2011/12

Optimización combinatoria Flujo en redes. Investigación Operativa, Grado en Estadística y Empresa, 2011/12 Optimización combinatoria Flujo en redes Prof. José Niño Mora Investigación Operativa, Grado en Estadística y Empresa, 2011/12 Esquema Optimización combinatoria: definición y formulación de PE El problema

Más detalles

Análisis de algoritmos

Análisis de algoritmos Tema 10: Algoritmos ávidos M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom 1 Contenido Introducción Algoritmos ávidos Forma general de un

Más detalles