SlideShare una empresa de Scribd logo
1 de 53
AlgoritmosAlgoritmos
yy
Estructuras de DatosEstructuras de Datos
Cursada 2014
Prof. Catalina Mostaccio
Prof. Alejandra Schiavoni
Facultad de Informática - UNLP
GRAFOS
Algoritmos y Estructuras de Datos
Algoritmos y Estructuras de Datos 3
Agenda - Grafos
• Caminos de costo mínimo
• Árbol de expansión mínimo
Algoritmos y Estructuras de Datos 4
Agenda - Grafos
• Caminos de costo mínimo
• Árbol de expansión mínimo
Algoritmos y Estructuras de Datos 5
Agenda – Grafos
 Caminos de costo mínimoCaminos de costo mínimo
 DefiniciónDefinición
 Algoritmos para el cálculo del camino mínimo desde un origenAlgoritmos para el cálculo del camino mínimo desde un origen
en:en:
 Grafos sin pesoGrafos sin peso
 Grafos con pesos positivosGrafos con pesos positivos
• Algortimo de Dijkstra: dos implementacionesAlgortimo de Dijkstra: dos implementaciones
 Grafos con pesos positivos y negativosGrafos con pesos positivos y negativos
 Grafos acíclicosGrafos acíclicos
 Algoritmo para el cálculo de los caminos mínimos entre todos losAlgoritmo para el cálculo de los caminos mínimos entre todos los
pares de vérticespares de vértices
Algoritmos y Estructuras de Datos 6
Camino de costo mínimo
Definición
Sea G=(V,A) un grafo dirigido y pesado, el costo c(i,j)
está asociado a la arista v(i,j).
Dado un camino: v1, v2, v3,…….vN
El costo del camino es:
Este valor también se llama longitud del camino pesado.
La longitud del camino no pesado es la cantidad de
aristas
∑
−
=
+=
1
1
)1,(
N
i
iicC
Algoritmos y Estructuras de Datos 7
Camino de costo mínimo
Definición (cont.)
El camino de costo mínimo desde un vértice vi a otro
vértice vj es aquel en que la suma de los costos de las
aristas es mínima.
Esto significa que:
es mínima∑
−
=
+=
1
1
)1,(
N
i
iicC
Algoritmos y Estructuras de Datos 8
Camino de costo mínimo
Definición (cont.)
Ejemplo:
1 2
50
1 3
30
2
5
1 3
30
2
20
4
50
1 4
100
2
20
1 5
10
2
20
4
10
50
35
100
120
40
Algoritmos y Estructuras de Datos 9
Algoritmos de Caminos mínimos
 Grafos sin peso
 Grafos con pesos positivos
 Grafos con pesos positivos y negativos
 Grafos dirigidos acíclicos
Algoritmos y Estructuras de Datos 10
Algoritmos de Caminos mínimos
Los algoritmos calculan los caminos
mínimos desde un vértice origen s a
todos los restantes vértices del grafo
Algoritmos y Estructuras de Datos 11
Algoritmos de Caminos mínimos
Grafos sin peso
 Estrategia: Recorrido en amplitud (BFS)
Pasos:
 Avanzar por niveles a partir del origen, asignando
distancias según se avanza (se utiliza una cola)
 Inicialmente, es Dw=∞. Al inspeccionar w se
reduce al valor correcto Dw=Dv+1
 Desde cada v, visitamos a todos los nodos
adyacentes a v
Algoritmos y Estructuras de Datos 12
Algoritmos de Caminos mínimos
Grafos sin peso (cont.)
1313
Vi Dv Pv
Conoc
V0 ∞ 0 0
V1 ∞ 0 0
V2 0 0 0
V3 ∞ 0 0
V4 ∞ 0 0
V5 ∞ 0 0
V6 ∞ 0 0
Valores iniciales de la tabla
Algoritmos de Caminos mínimos
Grafos sin peso (cont.)
∞
∞ ∞
∞
∞ ∞
1414
Algoritmo Caminos mínimos basado en BFS
Camino_min_GrafoNoPesadoG,s) {
(1) para cada vértice v Є V hacer
(2) Dv = ∞; Pv = 0; Conocv= 0;
(3) fin para
(4) Ds = 0; Encolar (Q,s); Conocv= 1;
(5) Mientras (not esVacio(Q)) hacer
(6) Desencolar (Q,u);
(7) Marcar u como conocido;
(8) para c/vértice w Є V adyacente a u hacer
(9) si w no es conocido entonces
(10) Dw = Du + 1;
(11) Pw = u;
(12) Encolar(Q,w); Conocv= 1;
(13) fin si
(14) fin para
(15) fin mientras
}
1515
Algoritmo Caminos mínimos basado en BFS
Camino_min_GrafoNoPesadoG,s) {
(1) para cada vértice v Є V hacer
(2) Dv = ∞; Pv = 0; Conocv= 0;
(3) fin para
(4) Ds = 0; Encolar (Q,s); Conocv= 1;
(5) Mientras (not esVacio(Q)) hacer
(6) Desencolar (Q,u);
(7) Marcar u como conocido;
(8) para c/vértice w Є V adyacente a u hacer
(9) si w no es conocido entonces
(10) Dw = Du + 1;
(11) Pw = u;
(12) Encolar(Q,w); Conocw= 1;
(13) fin si
(14) fin para
(15) fin mientras
}
1616
Vi Dv Pv
Conoc
V0 ∞ 0 0
V1 ∞ 0 0
V2 0 0 0
V3 ∞ 0 0
V4 ∞ 0 0
V5 ∞ 0 0
V6 ∞ 0 0
Valores iniciales de la tabla
Algoritmos de Caminos mínimos
Grafos sin peso (cont.)
1717
Vi Dv Pv
V0 ∞ 0
V1 ∞ 0
V2 0 0
V3 ∞ 0
V4 ∞ 0
V5 ∞ 0
V6 ∞ 0
Valores iniciales de la tabla
Programación 3
Algoritmos de Caminos mínimos
Grafos sin peso (cont.)
∞
∞ ∞
∞
∞ ∞
1818
Algoritmo Caminos mínimos basado en BFS
Camino_min_GrafoNoPesadoG,s) {
(1) para cada vértice v Є V hacer
(2) Dv = ∞; Pv = 0;
(3) fin para
(4) Ds = 0; Encolar (Q,s);
(5) Mientras (not esVacio(Q)) hacer
(6) Desencolar(Q,u);
(7) para c/vértice w Є V adyacente a u hacer
(8) si Dw = ∞ entonces
(9) Dw = Du + 1;
(10) Pw = u;
(11) Encolar(Q,w);
(12) fin si
(13) fin para
(14) fin mientras
}
Algoritmos y Estructuras de Datos 19
Algoritmos de Caminos mínimos
Grafos con pesos positivos – Algoritmo de Dijkstra
 Estrategia: Algoritmo de Dijkstra
Pasos:
 Dado un vértice origen s, elegir el vértice v que
esté a la menor distancia de s, dentro de los
vértices no procesados
 Marcar v como procesado
 Actualizar la distancia de w adyacente a v
Algoritmos y Estructuras de Datos 20
Algoritmo de Dijkstra (cont.)
 Para cada vértice v mantiene la siguiente
información:
 Dv : distancia mínima desde el origen (inicialmente ∞ para
todos lo vértices excepto el origen con valor 0)
 Pv : vértice por donde paso para llegar
 Conocido : dato booleano que me indica si está procesado
(inicialmente todos en 0)
Algoritmos y Estructuras de Datos 21
Algoritmo de Dijkstra (cont.)
 La actualización de la distancia de los adyacentes
w se realiza con el siguiente criterio:
 Se compara Dw con Dv + c(v,w)
 Se actualiza si Dw > Dv + c(v,w)
Distancia de s a w
(sin pasar por v)
Distancia de s a w,
pasando por v
Algoritmos y Estructuras de Datos 22
Algoritmo de Dijkstra
Ejemplo
V Dv Pv
Conoc.
1 0 0 0
2 ∞ 0 0
3 ∞ 0 0
4 ∞ 0 0
5 ∞ 0 0
6 ∞ 0 0
s
Valores iniciales de la tabla
Algoritmos y Estructuras de Datos 23
Algoritmo de Dijkstra
Ejemplo (cont.)
V Dv Pv
Conoc.
1 0 0 1
2 ∞ 0 0
3 40 1 0
4 ∞ 0 0
5 10 1 0
6 5 1 0
•Valores al seleccionar el vértice 1
•Actualiza la distancia de 3, 5 y 6
s
Algoritmos y Estructuras de Datos 24
Algoritmo de Dijkstra
Ejemplo (cont.)
V Dv Pv
Conoc.
1 0 0 1
2 ∞ 0 0
3 40 1 0
4 ∞ 0 0
5 10 1 0
6 5 1 0
s
Algoritmos y Estructuras de Datos 25
Algoritmo de Dijkstra
Ejemplo (cont.)
V Dv Pv
Conoc.
1 0 0 1
2 25 6 0
3 40 1 0
4 ∞ 0 0
5 10 1 0
6 5 1 1
s
•Valores al seleccionar el vértice 6
•Actualiza la distancia de 2
2626
Algoritmo de Dijkstra
Ejemplo (cont.)
V Dv Pv
Conoc.
1 0 0 1
2 25 6 0
3 40 1 0
4 ∞ 0 0
5 10 1 0
6 5 1 1
s
Algoritmos y Estructuras de Datos 27
Algoritmo de Dijkstra
Ejemplo (cont.)
V Dv Pv
Conoc.
1 0 0 1
2 25 6 0
3 40 1 0
4 30 5 0
5 10 1 1
6 5 1 1
s
•Valores al seleccionar el vértice 5
•Actualiza la distancia de 4
Algoritmos y Estructuras de Datos 28
Algoritmo de Dijkstra
Ejemplo (cont.)
 Los próximos vértices
a elegir son: 2, 4 y 3 en
ese orden.
V Dv Pv
Conoc.
1 0 0 1
2 25 6 1
3 35 4 1
4 30 5 1
5 10 1 1
6 5 1 1
El resultado final es:
Algoritmos y Estructuras de Datos 29
Algoritmo de Dijkstra
Dijkstra(G,w, s){
(1) para cada vértice v Є V hacer
(2) Dv = ∞; Pv = 0;
(3) fin para
(4) Ds = 0;
(5) para cada vértice v Є V hacer
(6) u = vérticeDesconocidoMenor Dist;
(7) Marcar u como conocido;
(8) para cada vértice w Є V adyacente a u hacer
(9) si w no está conocido entonces
(10) si Dw > Du + c(u,w) entonces
(11) Dw = Du + c(u,w);
(12) Pw = u;
(13) fin si
(14) fin si
(15) fin para
(16) fin para
}
Algoritmos y Estructuras de Datos 30
Algoritmo de Dijkstra
Tiempo de ejecución (I)
 El bucle para de la línea (5) se ejecuta para todos los vértices
 |V| iteraciones
 La operación vérticeDesconocidoMenorDist es O(|V|) y dado que se
realiza |V| veces
 el costo total de vérticeDesconocidoMenorDist es O(|V|2
)
 El bucle para de la línea (8) se ejecuta para los vértices adyacentes de cada
vértice. El número total de iteraciones será la cantidad de aristas del grafo.
 |E| iteraciones
 El costo total del algoritmo es (|V|2
+ |E| ) es O(|V|2
)
Algoritmos y Estructuras de Datos 31
Algoritmo de Dijkstra
Tiempo de ejecución (II)
Optimización: la operación vérticeDesconocidoMenorDist es más eficiente si
almacenamos las distancias en una heap.
 La operación vérticeDesconocidoMenorDist es O(log|V|) y dado que se
realiza |V| veces
 el costo total de vérticeDesconocidoMenorDist es O(|V| log |V|)
 El bucle para de la línea (8) supone modificar la prioridad (distancia) y
reorganizar la heap. Cada iteración es O(log|V|)
 realiza|E| iteraciones, O(|E| log|V|)
 El costo total del algoritmo es (|V| log|V|+ |E| log|V|) es O(|E| log|V|)
Algoritmos y Estructuras de Datos 32
Algoritmo de Dijkstra
Tiempo de ejecución (III)
Variante: usando heap la actualización de la línea (11) se puede
resolver insertando w y su nuevo valor Dw cada vez que éste se
modifica.
 El tamaño de la heap puede crecer hasta |E|.
Dado que |E| ≤ |V|2
, log |E| ≤ 2 log |V|, el costo total del
algoritmo no varía
 El costo total del algoritmo es O(|E| log|V|)
Algoritmos y Estructuras de Datos 33
Algoritmos de Caminos mínimos
Grafos con pesos positivos y negativos
 Estrategia: Encolar los vértices
Si el grafo tiene aristas negativas, el algoritmo de
Dijkstra puede dar un resultado erróneo.
s
uv
-5
-10
2
V Dv Pv Conoc.
s 0 0 1
u -5 s 1
v 2 s 1
Error !!
La distancia mínima
de s a u es -8
Algoritmos y Estructuras de Datos 34
Algoritmos de Caminos mínimos
Grafos con pesos positivos y negativos (cont.)
Pasos:
 Encolar el vértice origen s.
 Procesar la cola:
 Desencolar un vértice.
 Actualizar la distancia de los adyacentes Dw siguiendo
el mismo criterio de Dijkstra.
 Si w no está en la cola, encolarlo.
El costo total del algoritmo es O(|V| |E|)
Algoritmos y Estructuras de Datos 35
Algoritmos de Caminos mínimos
Grafos acíclicos
 Estrategia: Orden Topológico
 Optimización del algoritmo de Dijkstra
 La selección de cada vértice se realiza siguiendo el orden
topológico
 Esta estrategia funciona correctamente, dado que al
seleccionar un vértice v, no se va a encontrar una distancia
dv menor, porque ya se procesaron todos los caminos que
llegan a él
El costo total del algoritmo es O(|V| + |E|)
Algoritmos y Estructuras de Datos 36
Algoritmos de Caminos mínimos
Grafos acíclicos
Camino_min_GrafoDirigidoAcíclico(G,s)
Ordenar topológicamente los vértices de G;
Inicializar Tabla de Distancias(G, s);
para c/vértice u del orden topológico hacer
para c/vértice w Є V adyacente a u hacer
si Dw > Du + c(u,w) entonces
Dw = Du + c(u,w);
Pw = u;
Algoritmos y Estructuras de Datos 37
Algoritmos de Caminos mínimos
Grafos acíclicos
Camino_min_GrafoDirigidoAcíclico(G,s) {
Calcular el grado_in de todos los vértices
Encolar en Q los vértices con grado_in = 0
para cada vértice v Є V hacer
Dv = ∞; Pv = 0;
fin para
Ds = 0;
Mientras (!esVacio(Q)) hacer
Desencolar(Q,u);
para c/vértice w Є V adyacente a u hacer
Decrementar grado de entrada de w
si grado_in[w] = 0 entonces Encolar(Q,w);
si Du != ∞ entonces
si Dw > Du + c(u,w) entonces
Dw = Du + c(u,w);
Pw = u;
fin si
fin para
fin mientras
Algoritmos y Estructuras de Datos 38
Caminos mínimos entre todos los pares
de vértices
 Estrategia: Algoritmo de Floyd
 Lleva dos matrices D y P, ambas de |V| x |V|
Matriz de costos Matriz de vértices
mínimos intermedios
El costo total del algoritmo es O(|V|3
)
Algoritmos y Estructuras de Datos 39
Algoritmo de Floyd
para k=1 hasta cant_Vértices(G) hacer
para i=1 hasta cant_Vértices(G) hacer
para j=1 hasta cant_Vértices(G) hacer
si D[i,j] > D[i,k] + D[k,j] entonces
D[i,j] = D[i,k] + D[k,j];
P[i,j] = k;
fin si
fin para
fin para
fin para
Toma cada vértice como intermedio, para
calcular los caminos
Distancia entre los
vértices i y j, pasando
por k
Algoritmos y Estructuras de Datos 40
Agenda - Grafos
• Caminos de costo mínimo
• Árbol de expansión mínimo
Algoritmos y Estructuras de Datos 41
Agenda – Grafos
 Árbol de expansión mínimo
 Definición
 Algoritmo de Prim
 Algoritmo de Kruskal
Algoritmos y Estructuras de Datos 42
Árbol de expansión mínima
Definición
Dado un grafo G=(V , E) no dirigido y conexo
El árbol de expansión mínima es un árbol formado por
las aristas de G que conectan todos los vértices con un
costo total mínimo.
Algoritmos y Estructuras de Datos 43
Árbol de expansión mínima
Algoritmo de Prim
 Construye el árbol haciéndolo crecer por etapas
 En cada etapa:
- elige un vértice como raíz
- le agrega al árbol una arista y un vértice
asociado
 Selecciona la arista (u,v) de mínimo costo que
cumpla: u ∈ árbol y v ∉ árbol
Algoritmos y Estructuras de Datos 44
Árbol de expansión mínima
Algoritmo de Prim (cont.)
 Construye el árbol haciéndolo crecer por etapas
Ejemplo:
Nodo raíz
Se agrega la arista (1,3) y el vértice 3
1° Paso
Algoritmos y Estructuras de Datos 45
Árbol de expansión mínima
Algoritmo de Prim (cont.)
Se agrega la arista
(3,6) y el vértice 6
2° Paso 3° Paso
Se agrega la arista
(6,4) y el vértice 4
4° y 5° Pasos
- Se agrega la arista (3,2) y el
vértice 2
- Se agrega la arista (2,5) y el
vértice 5
Algoritmos y Estructuras de Datos 46
Algoritmo de Prim
Implementación
 La implementación es muy similar al algoritmo de
Dijkstra
 Se modifica la forma de actualizar la distancia de los
adyacentes:
 Se compara Dw con c(v,w)
 Se actualiza si Dw > c(v,w)
Distancia mínima a w (sin
tener en cuenta v)
Distancia de v a w
Algoritmos y Estructuras de Datos 47
Algoritmo de Prim
Tiempo de Ejecución
 Se hacen las mismas consideraciones que para el
algoritmo de Dijkstra
 Si se implementa con una tabla secuencial:
 El costo total del algoritmo es O(|V|2
)
 Si se implementa con heap:
 El costo total del algoritmo es O(|E| log|V|)
Algoritmos y Estructuras de Datos 48
Árbol de expansión mínima
Algoritmo de Kruskal
 Selecciona las aristas en orden creciente según su
peso y las acepta si no originan un ciclo
 El invariante que usa me indica que en cada punto
del proceso, dos vértices pertenecen al mismo
conjunto si y sólo sí están conectados
 Si dos vértices u y v están en el mismo conjunto, la
arista (u,v) es rechazada porque al aceptarla forma
un ciclo
Algoritmos y Estructuras de Datos 49
Árbol de expansión mínima
Algoritmo de Kruskal (cont.)
 Inicialmente cada vértice pertenece a su propio
conjunto
 |V| conjuntos con un único elemento
 Al aceptar una arista se realiza la Unión de dos
conjuntos
 Las aristas se organizan en una heap, para ir
recuperando la de mínimo costo en cada paso
Algoritmos y Estructuras de Datos 50
Árbol de expansión mínima
Algoritmo de Kruskal (cont.)
Ejemplo:
Algoritmos y Estructuras de Datos 51
Árbol de expansión mínima
Algoritmo de Kruskal (cont.)
Inicialmente cada vértice
está en su propio conjunto
Se agrega la arista (1,2)
Se agrega
la arista
(3,6)
Se agrega la
arista (4,6)
Algoritmos y Estructuras de Datos 52
Árbol de expansión mínima
Algoritmo de Kruskal (cont.)
Se agrega la arista (2,6) Se agrega la arista (3,5)
Algoritmos y Estructuras de Datos 53
Algoritmo de Kruskal
Tiempo de Ejecución
 Se organizan las aristas en una heap, para optimizar
la recuperación de la arista de mínimo costo
 El tamaño de la heap es |E|, y extraer cada arista
lleva O(log |E|)
 El tiempo de ejecución es O(|E |log|E|)
 Dado que |E| ≤ |V|2
, log |E| ≤ 2 log |V|,
 el costo total del algoritmo es O(|E |log|V|)

Más contenido relacionado

La actualidad más candente

Cuadro sinóptico estructuras de datos y su clasificación
Cuadro sinóptico   estructuras de datos y su clasificaciónCuadro sinóptico   estructuras de datos y su clasificación
Cuadro sinóptico estructuras de datos y su clasificaciónAlex Uhu Colli
 
Codigo-de-gray
Codigo-de-grayCodigo-de-gray
Codigo-de-grayYageri
 
Pilas como estructura de datos..
Pilas como estructura de datos..Pilas como estructura de datos..
Pilas como estructura de datos..NANO-06
 
Ejercicios sistemas numericos
Ejercicios sistemas numericosEjercicios sistemas numericos
Ejercicios sistemas numericosynato
 
Ch. 16 Database Case Study: XML/XSLT
Ch. 16 Database Case Study: XML/XSLTCh. 16 Database Case Study: XML/XSLT
Ch. 16 Database Case Study: XML/XSLTmh-108
 
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosEstructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosJosé Antonio Sandoval Acosta
 
2...2 expresiones regulares, cerradura, fractales, automata
2...2 expresiones regulares, cerradura, fractales, automata2...2 expresiones regulares, cerradura, fractales, automata
2...2 expresiones regulares, cerradura, fractales, automataJacqui Venegas
 
Estructuras lineales unidad 3
Estructuras lineales unidad 3Estructuras lineales unidad 3
Estructuras lineales unidad 3eliezerbs
 
Lecture 1 data structures and algorithms
Lecture 1 data structures and algorithmsLecture 1 data structures and algorithms
Lecture 1 data structures and algorithmsAakash deep Singhal
 
Programación 3: algoritmo de Prim y de Kruskal
Programación 3: algoritmo de Prim y de KruskalProgramación 3: algoritmo de Prim y de Kruskal
Programación 3: algoritmo de Prim y de KruskalAngel Vázquez Patiño
 
Unit I-Data structures stack & Queue
Unit I-Data structures stack & QueueUnit I-Data structures stack & Queue
Unit I-Data structures stack & QueueDrkhanchanaR
 
Bases de Datos - Parte 5/10 Modelo relacional
Bases de Datos - Parte 5/10 Modelo relacionalBases de Datos - Parte 5/10 Modelo relacional
Bases de Datos - Parte 5/10 Modelo relacionalCarlos Castillo (ChaTo)
 
Tema 7: Funciones de orden superior en Haskell
Tema 7: Funciones de orden superior en HaskellTema 7: Funciones de orden superior en Haskell
Tema 7: Funciones de orden superior en HaskellJosé A. Alonso
 
Importancia de las listas Estructura de datos.
Importancia de las listas Estructura de datos.Importancia de las listas Estructura de datos.
Importancia de las listas Estructura de datos.xaviercamposm
 

La actualidad más candente (20)

Modelo Entidad Relación
Modelo Entidad RelaciónModelo Entidad Relación
Modelo Entidad Relación
 
Cuadro sinóptico estructuras de datos y su clasificación
Cuadro sinóptico   estructuras de datos y su clasificaciónCuadro sinóptico   estructuras de datos y su clasificación
Cuadro sinóptico estructuras de datos y su clasificación
 
Codigo-de-gray
Codigo-de-grayCodigo-de-gray
Codigo-de-gray
 
Pilas como estructura de datos..
Pilas como estructura de datos..Pilas como estructura de datos..
Pilas como estructura de datos..
 
Grafo bipartito
Grafo bipartitoGrafo bipartito
Grafo bipartito
 
Ejercicios sistemas numericos
Ejercicios sistemas numericosEjercicios sistemas numericos
Ejercicios sistemas numericos
 
Ch. 16 Database Case Study: XML/XSLT
Ch. 16 Database Case Study: XML/XSLTCh. 16 Database Case Study: XML/XSLT
Ch. 16 Database Case Study: XML/XSLT
 
Modos De Direccionamiento
Modos De Direccionamiento Modos De Direccionamiento
Modos De Direccionamiento
 
Unidad aritmetico logica ALU
Unidad aritmetico logica ALUUnidad aritmetico logica ALU
Unidad aritmetico logica ALU
 
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosEstructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
 
2...2 expresiones regulares, cerradura, fractales, automata
2...2 expresiones regulares, cerradura, fractales, automata2...2 expresiones regulares, cerradura, fractales, automata
2...2 expresiones regulares, cerradura, fractales, automata
 
Estructuras lineales unidad 3
Estructuras lineales unidad 3Estructuras lineales unidad 3
Estructuras lineales unidad 3
 
Lecture 1 data structures and algorithms
Lecture 1 data structures and algorithmsLecture 1 data structures and algorithms
Lecture 1 data structures and algorithms
 
Listas doblemente enlazadas
Listas doblemente enlazadasListas doblemente enlazadas
Listas doblemente enlazadas
 
Programación 3: algoritmo de Prim y de Kruskal
Programación 3: algoritmo de Prim y de KruskalProgramación 3: algoritmo de Prim y de Kruskal
Programación 3: algoritmo de Prim y de Kruskal
 
Unit I-Data structures stack & Queue
Unit I-Data structures stack & QueueUnit I-Data structures stack & Queue
Unit I-Data structures stack & Queue
 
Bases de Datos - Parte 5/10 Modelo relacional
Bases de Datos - Parte 5/10 Modelo relacionalBases de Datos - Parte 5/10 Modelo relacional
Bases de Datos - Parte 5/10 Modelo relacional
 
Cursores
CursoresCursores
Cursores
 
Tema 7: Funciones de orden superior en Haskell
Tema 7: Funciones de orden superior en HaskellTema 7: Funciones de orden superior en Haskell
Tema 7: Funciones de orden superior en Haskell
 
Importancia de las listas Estructura de datos.
Importancia de las listas Estructura de datos.Importancia de las listas Estructura de datos.
Importancia de las listas Estructura de datos.
 

Similar a Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014

Claseeeeeeeeeeeeeeeeeessssssssssse_PA.pdf
Claseeeeeeeeeeeeeeeeeessssssssssse_PA.pdfClaseeeeeeeeeeeeeeeeeessssssssssse_PA.pdf
Claseeeeeeeeeeeeeeeeeessssssssssse_PA.pdfAbdias13
 
Grafos-2021.pdf
Grafos-2021.pdfGrafos-2021.pdf
Grafos-2021.pdfNathanLux3
 
I1M2010-T22: Algoritmos sobre grafos en Haskell
I1M2010-T22: Algoritmos sobre grafos en HaskellI1M2010-T22: Algoritmos sobre grafos en Haskell
I1M2010-T22: Algoritmos sobre grafos en HaskellJosé A. Alonso
 
Trazado de lineas rectas
Trazado de lineas rectasTrazado de lineas rectas
Trazado de lineas rectasSam Rdgz
 
Electrónica digital: Ruta de datos multiplexores y demultiplexores
Electrónica digital: Ruta de datos multiplexores y demultiplexores Electrónica digital: Ruta de datos multiplexores y demultiplexores
Electrónica digital: Ruta de datos multiplexores y demultiplexores SANTIAGO PABLO ALBERTO
 
Proyecto PIBAP 03-295 Contrato #040 Informe Componente 1
Proyecto PIBAP 03-295 Contrato #040 Informe Componente 1Proyecto PIBAP 03-295 Contrato #040 Informe Componente 1
Proyecto PIBAP 03-295 Contrato #040 Informe Componente 1Universidad Católica San Pablo
 
vectores y matrices.pdf
vectores y matrices.pdfvectores y matrices.pdf
vectores y matrices.pdfkaniaquintero2
 
Convección Difusión con Elementos Finitos.pptx
Convección Difusión con Elementos Finitos.pptxConvección Difusión con Elementos Finitos.pptx
Convección Difusión con Elementos Finitos.pptxMateoMarcosKrupiczer1
 
Mas_de_400_ejercicios_de_programacion_en (2).pdf
Mas_de_400_ejercicios_de_programacion_en (2).pdfMas_de_400_ejercicios_de_programacion_en (2).pdf
Mas_de_400_ejercicios_de_programacion_en (2).pdfmargothingrithllanca
 
Mas_de_400_ejercicios_de_programacion_en (1).pdf
Mas_de_400_ejercicios_de_programacion_en (1).pdfMas_de_400_ejercicios_de_programacion_en (1).pdf
Mas_de_400_ejercicios_de_programacion_en (1).pdfmargothingrithllanca
 

Similar a Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014 (20)

Claseeeeeeeeeeeeeeeeeessssssssssse_PA.pdf
Claseeeeeeeeeeeeeeeeeessssssssssse_PA.pdfClaseeeeeeeeeeeeeeeeeessssssssssse_PA.pdf
Claseeeeeeeeeeeeeeeeeessssssssssse_PA.pdf
 
Grafos-2021.pdf
Grafos-2021.pdfGrafos-2021.pdf
Grafos-2021.pdf
 
Rutamascorta1
Rutamascorta1Rutamascorta1
Rutamascorta1
 
Unidad 6 grafos
Unidad 6  grafosUnidad 6  grafos
Unidad 6 grafos
 
Unidad 6 grafos
Unidad 6  grafosUnidad 6  grafos
Unidad 6 grafos
 
Unidad 6 grafos
Unidad 6  grafosUnidad 6  grafos
Unidad 6 grafos
 
I1M2010-T22: Algoritmos sobre grafos en Haskell
I1M2010-T22: Algoritmos sobre grafos en HaskellI1M2010-T22: Algoritmos sobre grafos en Haskell
I1M2010-T22: Algoritmos sobre grafos en Haskell
 
Seminario de matlab
Seminario de matlabSeminario de matlab
Seminario de matlab
 
Trazado de lineas rectas
Trazado de lineas rectasTrazado de lineas rectas
Trazado de lineas rectas
 
Electrónica digital: Ruta de datos multiplexores y demultiplexores
Electrónica digital: Ruta de datos multiplexores y demultiplexores Electrónica digital: Ruta de datos multiplexores y demultiplexores
Electrónica digital: Ruta de datos multiplexores y demultiplexores
 
59563233 algoritmo-bresenham
59563233 algoritmo-bresenham59563233 algoritmo-bresenham
59563233 algoritmo-bresenham
 
Proyecto pibap
Proyecto pibapProyecto pibap
Proyecto pibap
 
Proyecto PIBAP 03-295 Contrato #040 Informe Componente 1
Proyecto PIBAP 03-295 Contrato #040 Informe Componente 1Proyecto PIBAP 03-295 Contrato #040 Informe Componente 1
Proyecto PIBAP 03-295 Contrato #040 Informe Componente 1
 
vectores y matrices.pdf
vectores y matrices.pdfvectores y matrices.pdf
vectores y matrices.pdf
 
Convección Difusión con Elementos Finitos.pptx
Convección Difusión con Elementos Finitos.pptxConvección Difusión con Elementos Finitos.pptx
Convección Difusión con Elementos Finitos.pptx
 
Computacion
ComputacionComputacion
Computacion
 
Mas_de_400_ejercicios_de_programacion_en (2).pdf
Mas_de_400_ejercicios_de_programacion_en (2).pdfMas_de_400_ejercicios_de_programacion_en (2).pdf
Mas_de_400_ejercicios_de_programacion_en (2).pdf
 
Mas_de_400_ejercicios_de_programacion_en (1).pdf
Mas_de_400_ejercicios_de_programacion_en (1).pdfMas_de_400_ejercicios_de_programacion_en (1).pdf
Mas_de_400_ejercicios_de_programacion_en (1).pdf
 
Int_Octave_II_2021.pptx
Int_Octave_II_2021.pptxInt_Octave_II_2021.pptx
Int_Octave_II_2021.pptx
 
Grafos Digrafos
Grafos DigrafosGrafos Digrafos
Grafos Digrafos
 

Último

SESION 2- 2 ATOMO Y ESTRUCTURA ATÓMICA.pdf
SESION 2- 2 ATOMO Y ESTRUCTURA ATÓMICA.pdfSESION 2- 2 ATOMO Y ESTRUCTURA ATÓMICA.pdf
SESION 2- 2 ATOMO Y ESTRUCTURA ATÓMICA.pdfEsvinAlvares
 
30-Planos-de-Casas-para-construir en.pdf
30-Planos-de-Casas-para-construir en.pdf30-Planos-de-Casas-para-construir en.pdf
30-Planos-de-Casas-para-construir en.pdfpauljean19831977
 
Sales Básicas Quimica, conocer como se forman las sales basicas
Sales Básicas Quimica, conocer como se forman las sales basicasSales Básicas Quimica, conocer como se forman las sales basicas
Sales Básicas Quimica, conocer como se forman las sales basicasPaulina Cargua
 
FOTOCELDAS Y LOS DIFERENTES TIPOS QUE EXISTEN.pdf
FOTOCELDAS Y LOS DIFERENTES TIPOS QUE EXISTEN.pdfFOTOCELDAS Y LOS DIFERENTES TIPOS QUE EXISTEN.pdf
FOTOCELDAS Y LOS DIFERENTES TIPOS QUE EXISTEN.pdfDanielAlejandroAguir2
 
Sistema Séptico Domiciliario para viviendas rurales
Sistema Séptico Domiciliario para viviendas ruralesSistema Séptico Domiciliario para viviendas rurales
Sistema Séptico Domiciliario para viviendas ruralesrberinald
 
ENSAYO DE PENETRACIÓN ESTÁTICA CTP ULTRADEFINITIVO.pptx
ENSAYO DE PENETRACIÓN ESTÁTICA CTP ULTRADEFINITIVO.pptxENSAYO DE PENETRACIÓN ESTÁTICA CTP ULTRADEFINITIVO.pptx
ENSAYO DE PENETRACIÓN ESTÁTICA CTP ULTRADEFINITIVO.pptxjosetuanama2
 
Sanidad en alpacas, enfermedades infecciosas y parasitarias
Sanidad en alpacas, enfermedades infecciosas y parasitariasSanidad en alpacas, enfermedades infecciosas y parasitarias
Sanidad en alpacas, enfermedades infecciosas y parasitariasJilvertHuisaCenteno
 
INSTRUCTIVO_NNNNNNNNNNNNNNSART2 iess.pdf
INSTRUCTIVO_NNNNNNNNNNNNNNSART2 iess.pdfINSTRUCTIVO_NNNNNNNNNNNNNNSART2 iess.pdf
INSTRUCTIVO_NNNNNNNNNNNNNNSART2 iess.pdfautomatechcv
 
EJERCICIOS DE -LEY-DE-OHM aplicaciones prácticas
EJERCICIOS DE -LEY-DE-OHM aplicaciones prácticasEJERCICIOS DE -LEY-DE-OHM aplicaciones prácticas
EJERCICIOS DE -LEY-DE-OHM aplicaciones prácticasEfrain Yungan
 
Guía para la identificación de materiales peligrosos
Guía para la identificación de materiales peligrososGuía para la identificación de materiales peligrosos
Guía para la identificación de materiales peligrososAdrianVarela22
 
electricidad básica, ejemplos prácticos y ejercicios
electricidad básica, ejemplos prácticos y ejercicioselectricidad básica, ejemplos prácticos y ejercicios
electricidad básica, ejemplos prácticos y ejerciciosEfrain Yungan
 
PLANTILLA DE PP PREVENCIONISTA DE RIESGOS LABORALES (1).pptx.pdf
PLANTILLA DE PP PREVENCIONISTA DE RIESGOS LABORALES (1).pptx.pdfPLANTILLA DE PP PREVENCIONISTA DE RIESGOS LABORALES (1).pptx.pdf
PLANTILLA DE PP PREVENCIONISTA DE RIESGOS LABORALES (1).pptx.pdfmcamposa87
 
La Evolución Industrial en el Ecuador.pdf
La Evolución Industrial en el Ecuador.pdfLa Evolución Industrial en el Ecuador.pdf
La Evolución Industrial en el Ecuador.pdfAnthony Gualpa
 
Introduccion-a-los-tipos-de-cemento (1).pdf
Introduccion-a-los-tipos-de-cemento (1).pdfIntroduccion-a-los-tipos-de-cemento (1).pdf
Introduccion-a-los-tipos-de-cemento (1).pdfjhorbycoralsanchez
 
Capacitación Anexo 6 D.s. 023 seguridad y salud ocupacional
Capacitación Anexo 6 D.s. 023 seguridad y salud ocupacionalCapacitación Anexo 6 D.s. 023 seguridad y salud ocupacional
Capacitación Anexo 6 D.s. 023 seguridad y salud ocupacionalamador030809
 
PRESENTACION Y PROGRAMAS PRE-REQUISITOS DEL SISTEMA HACCP BPM Y PHS 2023.pptx
PRESENTACION Y PROGRAMAS PRE-REQUISITOS DEL SISTEMA HACCP BPM Y PHS 2023.pptxPRESENTACION Y PROGRAMAS PRE-REQUISITOS DEL SISTEMA HACCP BPM Y PHS 2023.pptx
PRESENTACION Y PROGRAMAS PRE-REQUISITOS DEL SISTEMA HACCP BPM Y PHS 2023.pptxciteagrohuallaga07
 
PPT - MODIFICACIONES PRESUPUESTARIAS - Anexo II VF.pdf
PPT - MODIFICACIONES PRESUPUESTARIAS - Anexo II VF.pdfPPT - MODIFICACIONES PRESUPUESTARIAS - Anexo II VF.pdf
PPT - MODIFICACIONES PRESUPUESTARIAS - Anexo II VF.pdfDarwinJPaulino
 
PRESENTACIÓN ANALISIS ESTRUCTURAL II.pptx
PRESENTACIÓN ANALISIS ESTRUCTURAL II.pptxPRESENTACIÓN ANALISIS ESTRUCTURAL II.pptx
PRESENTACIÓN ANALISIS ESTRUCTURAL II.pptxStibeCr
 
209530529 Licuacion-de-Suelos-en-Arequipa.pdf
209530529 Licuacion-de-Suelos-en-Arequipa.pdf209530529 Licuacion-de-Suelos-en-Arequipa.pdf
209530529 Licuacion-de-Suelos-en-Arequipa.pdfnurix_15
 
La mineralogia y minerales, clasificacion
La mineralogia y minerales, clasificacionLa mineralogia y minerales, clasificacion
La mineralogia y minerales, clasificacionnewspotify528
 

Último (20)

SESION 2- 2 ATOMO Y ESTRUCTURA ATÓMICA.pdf
SESION 2- 2 ATOMO Y ESTRUCTURA ATÓMICA.pdfSESION 2- 2 ATOMO Y ESTRUCTURA ATÓMICA.pdf
SESION 2- 2 ATOMO Y ESTRUCTURA ATÓMICA.pdf
 
30-Planos-de-Casas-para-construir en.pdf
30-Planos-de-Casas-para-construir en.pdf30-Planos-de-Casas-para-construir en.pdf
30-Planos-de-Casas-para-construir en.pdf
 
Sales Básicas Quimica, conocer como se forman las sales basicas
Sales Básicas Quimica, conocer como se forman las sales basicasSales Básicas Quimica, conocer como se forman las sales basicas
Sales Básicas Quimica, conocer como se forman las sales basicas
 
FOTOCELDAS Y LOS DIFERENTES TIPOS QUE EXISTEN.pdf
FOTOCELDAS Y LOS DIFERENTES TIPOS QUE EXISTEN.pdfFOTOCELDAS Y LOS DIFERENTES TIPOS QUE EXISTEN.pdf
FOTOCELDAS Y LOS DIFERENTES TIPOS QUE EXISTEN.pdf
 
Sistema Séptico Domiciliario para viviendas rurales
Sistema Séptico Domiciliario para viviendas ruralesSistema Séptico Domiciliario para viviendas rurales
Sistema Séptico Domiciliario para viviendas rurales
 
ENSAYO DE PENETRACIÓN ESTÁTICA CTP ULTRADEFINITIVO.pptx
ENSAYO DE PENETRACIÓN ESTÁTICA CTP ULTRADEFINITIVO.pptxENSAYO DE PENETRACIÓN ESTÁTICA CTP ULTRADEFINITIVO.pptx
ENSAYO DE PENETRACIÓN ESTÁTICA CTP ULTRADEFINITIVO.pptx
 
Sanidad en alpacas, enfermedades infecciosas y parasitarias
Sanidad en alpacas, enfermedades infecciosas y parasitariasSanidad en alpacas, enfermedades infecciosas y parasitarias
Sanidad en alpacas, enfermedades infecciosas y parasitarias
 
INSTRUCTIVO_NNNNNNNNNNNNNNSART2 iess.pdf
INSTRUCTIVO_NNNNNNNNNNNNNNSART2 iess.pdfINSTRUCTIVO_NNNNNNNNNNNNNNSART2 iess.pdf
INSTRUCTIVO_NNNNNNNNNNNNNNSART2 iess.pdf
 
EJERCICIOS DE -LEY-DE-OHM aplicaciones prácticas
EJERCICIOS DE -LEY-DE-OHM aplicaciones prácticasEJERCICIOS DE -LEY-DE-OHM aplicaciones prácticas
EJERCICIOS DE -LEY-DE-OHM aplicaciones prácticas
 
Guía para la identificación de materiales peligrosos
Guía para la identificación de materiales peligrososGuía para la identificación de materiales peligrosos
Guía para la identificación de materiales peligrosos
 
electricidad básica, ejemplos prácticos y ejercicios
electricidad básica, ejemplos prácticos y ejercicioselectricidad básica, ejemplos prácticos y ejercicios
electricidad básica, ejemplos prácticos y ejercicios
 
PLANTILLA DE PP PREVENCIONISTA DE RIESGOS LABORALES (1).pptx.pdf
PLANTILLA DE PP PREVENCIONISTA DE RIESGOS LABORALES (1).pptx.pdfPLANTILLA DE PP PREVENCIONISTA DE RIESGOS LABORALES (1).pptx.pdf
PLANTILLA DE PP PREVENCIONISTA DE RIESGOS LABORALES (1).pptx.pdf
 
La Evolución Industrial en el Ecuador.pdf
La Evolución Industrial en el Ecuador.pdfLa Evolución Industrial en el Ecuador.pdf
La Evolución Industrial en el Ecuador.pdf
 
Introduccion-a-los-tipos-de-cemento (1).pdf
Introduccion-a-los-tipos-de-cemento (1).pdfIntroduccion-a-los-tipos-de-cemento (1).pdf
Introduccion-a-los-tipos-de-cemento (1).pdf
 
Capacitación Anexo 6 D.s. 023 seguridad y salud ocupacional
Capacitación Anexo 6 D.s. 023 seguridad y salud ocupacionalCapacitación Anexo 6 D.s. 023 seguridad y salud ocupacional
Capacitación Anexo 6 D.s. 023 seguridad y salud ocupacional
 
PRESENTACION Y PROGRAMAS PRE-REQUISITOS DEL SISTEMA HACCP BPM Y PHS 2023.pptx
PRESENTACION Y PROGRAMAS PRE-REQUISITOS DEL SISTEMA HACCP BPM Y PHS 2023.pptxPRESENTACION Y PROGRAMAS PRE-REQUISITOS DEL SISTEMA HACCP BPM Y PHS 2023.pptx
PRESENTACION Y PROGRAMAS PRE-REQUISITOS DEL SISTEMA HACCP BPM Y PHS 2023.pptx
 
PPT - MODIFICACIONES PRESUPUESTARIAS - Anexo II VF.pdf
PPT - MODIFICACIONES PRESUPUESTARIAS - Anexo II VF.pdfPPT - MODIFICACIONES PRESUPUESTARIAS - Anexo II VF.pdf
PPT - MODIFICACIONES PRESUPUESTARIAS - Anexo II VF.pdf
 
PRESENTACIÓN ANALISIS ESTRUCTURAL II.pptx
PRESENTACIÓN ANALISIS ESTRUCTURAL II.pptxPRESENTACIÓN ANALISIS ESTRUCTURAL II.pptx
PRESENTACIÓN ANALISIS ESTRUCTURAL II.pptx
 
209530529 Licuacion-de-Suelos-en-Arequipa.pdf
209530529 Licuacion-de-Suelos-en-Arequipa.pdf209530529 Licuacion-de-Suelos-en-Arequipa.pdf
209530529 Licuacion-de-Suelos-en-Arequipa.pdf
 
La mineralogia y minerales, clasificacion
La mineralogia y minerales, clasificacionLa mineralogia y minerales, clasificacion
La mineralogia y minerales, clasificacion
 

Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014

  • 1. AlgoritmosAlgoritmos yy Estructuras de DatosEstructuras de Datos Cursada 2014 Prof. Catalina Mostaccio Prof. Alejandra Schiavoni Facultad de Informática - UNLP
  • 3. Algoritmos y Estructuras de Datos 3 Agenda - Grafos • Caminos de costo mínimo • Árbol de expansión mínimo
  • 4. Algoritmos y Estructuras de Datos 4 Agenda - Grafos • Caminos de costo mínimo • Árbol de expansión mínimo
  • 5. Algoritmos y Estructuras de Datos 5 Agenda – Grafos  Caminos de costo mínimoCaminos de costo mínimo  DefiniciónDefinición  Algoritmos para el cálculo del camino mínimo desde un origenAlgoritmos para el cálculo del camino mínimo desde un origen en:en:  Grafos sin pesoGrafos sin peso  Grafos con pesos positivosGrafos con pesos positivos • Algortimo de Dijkstra: dos implementacionesAlgortimo de Dijkstra: dos implementaciones  Grafos con pesos positivos y negativosGrafos con pesos positivos y negativos  Grafos acíclicosGrafos acíclicos  Algoritmo para el cálculo de los caminos mínimos entre todos losAlgoritmo para el cálculo de los caminos mínimos entre todos los pares de vérticespares de vértices
  • 6. Algoritmos y Estructuras de Datos 6 Camino de costo mínimo Definición Sea G=(V,A) un grafo dirigido y pesado, el costo c(i,j) está asociado a la arista v(i,j). Dado un camino: v1, v2, v3,…….vN El costo del camino es: Este valor también se llama longitud del camino pesado. La longitud del camino no pesado es la cantidad de aristas ∑ − = += 1 1 )1,( N i iicC
  • 7. Algoritmos y Estructuras de Datos 7 Camino de costo mínimo Definición (cont.) El camino de costo mínimo desde un vértice vi a otro vértice vj es aquel en que la suma de los costos de las aristas es mínima. Esto significa que: es mínima∑ − = += 1 1 )1,( N i iicC
  • 8. Algoritmos y Estructuras de Datos 8 Camino de costo mínimo Definición (cont.) Ejemplo: 1 2 50 1 3 30 2 5 1 3 30 2 20 4 50 1 4 100 2 20 1 5 10 2 20 4 10 50 35 100 120 40
  • 9. Algoritmos y Estructuras de Datos 9 Algoritmos de Caminos mínimos  Grafos sin peso  Grafos con pesos positivos  Grafos con pesos positivos y negativos  Grafos dirigidos acíclicos
  • 10. Algoritmos y Estructuras de Datos 10 Algoritmos de Caminos mínimos Los algoritmos calculan los caminos mínimos desde un vértice origen s a todos los restantes vértices del grafo
  • 11. Algoritmos y Estructuras de Datos 11 Algoritmos de Caminos mínimos Grafos sin peso  Estrategia: Recorrido en amplitud (BFS) Pasos:  Avanzar por niveles a partir del origen, asignando distancias según se avanza (se utiliza una cola)  Inicialmente, es Dw=∞. Al inspeccionar w se reduce al valor correcto Dw=Dv+1  Desde cada v, visitamos a todos los nodos adyacentes a v
  • 12. Algoritmos y Estructuras de Datos 12 Algoritmos de Caminos mínimos Grafos sin peso (cont.)
  • 13. 1313 Vi Dv Pv Conoc V0 ∞ 0 0 V1 ∞ 0 0 V2 0 0 0 V3 ∞ 0 0 V4 ∞ 0 0 V5 ∞ 0 0 V6 ∞ 0 0 Valores iniciales de la tabla Algoritmos de Caminos mínimos Grafos sin peso (cont.) ∞ ∞ ∞ ∞ ∞ ∞
  • 14. 1414 Algoritmo Caminos mínimos basado en BFS Camino_min_GrafoNoPesadoG,s) { (1) para cada vértice v Є V hacer (2) Dv = ∞; Pv = 0; Conocv= 0; (3) fin para (4) Ds = 0; Encolar (Q,s); Conocv= 1; (5) Mientras (not esVacio(Q)) hacer (6) Desencolar (Q,u); (7) Marcar u como conocido; (8) para c/vértice w Є V adyacente a u hacer (9) si w no es conocido entonces (10) Dw = Du + 1; (11) Pw = u; (12) Encolar(Q,w); Conocv= 1; (13) fin si (14) fin para (15) fin mientras }
  • 15. 1515 Algoritmo Caminos mínimos basado en BFS Camino_min_GrafoNoPesadoG,s) { (1) para cada vértice v Є V hacer (2) Dv = ∞; Pv = 0; Conocv= 0; (3) fin para (4) Ds = 0; Encolar (Q,s); Conocv= 1; (5) Mientras (not esVacio(Q)) hacer (6) Desencolar (Q,u); (7) Marcar u como conocido; (8) para c/vértice w Є V adyacente a u hacer (9) si w no es conocido entonces (10) Dw = Du + 1; (11) Pw = u; (12) Encolar(Q,w); Conocw= 1; (13) fin si (14) fin para (15) fin mientras }
  • 16. 1616 Vi Dv Pv Conoc V0 ∞ 0 0 V1 ∞ 0 0 V2 0 0 0 V3 ∞ 0 0 V4 ∞ 0 0 V5 ∞ 0 0 V6 ∞ 0 0 Valores iniciales de la tabla Algoritmos de Caminos mínimos Grafos sin peso (cont.)
  • 17. 1717 Vi Dv Pv V0 ∞ 0 V1 ∞ 0 V2 0 0 V3 ∞ 0 V4 ∞ 0 V5 ∞ 0 V6 ∞ 0 Valores iniciales de la tabla Programación 3 Algoritmos de Caminos mínimos Grafos sin peso (cont.) ∞ ∞ ∞ ∞ ∞ ∞
  • 18. 1818 Algoritmo Caminos mínimos basado en BFS Camino_min_GrafoNoPesadoG,s) { (1) para cada vértice v Є V hacer (2) Dv = ∞; Pv = 0; (3) fin para (4) Ds = 0; Encolar (Q,s); (5) Mientras (not esVacio(Q)) hacer (6) Desencolar(Q,u); (7) para c/vértice w Є V adyacente a u hacer (8) si Dw = ∞ entonces (9) Dw = Du + 1; (10) Pw = u; (11) Encolar(Q,w); (12) fin si (13) fin para (14) fin mientras }
  • 19. Algoritmos y Estructuras de Datos 19 Algoritmos de Caminos mínimos Grafos con pesos positivos – Algoritmo de Dijkstra  Estrategia: Algoritmo de Dijkstra Pasos:  Dado un vértice origen s, elegir el vértice v que esté a la menor distancia de s, dentro de los vértices no procesados  Marcar v como procesado  Actualizar la distancia de w adyacente a v
  • 20. Algoritmos y Estructuras de Datos 20 Algoritmo de Dijkstra (cont.)  Para cada vértice v mantiene la siguiente información:  Dv : distancia mínima desde el origen (inicialmente ∞ para todos lo vértices excepto el origen con valor 0)  Pv : vértice por donde paso para llegar  Conocido : dato booleano que me indica si está procesado (inicialmente todos en 0)
  • 21. Algoritmos y Estructuras de Datos 21 Algoritmo de Dijkstra (cont.)  La actualización de la distancia de los adyacentes w se realiza con el siguiente criterio:  Se compara Dw con Dv + c(v,w)  Se actualiza si Dw > Dv + c(v,w) Distancia de s a w (sin pasar por v) Distancia de s a w, pasando por v
  • 22. Algoritmos y Estructuras de Datos 22 Algoritmo de Dijkstra Ejemplo V Dv Pv Conoc. 1 0 0 0 2 ∞ 0 0 3 ∞ 0 0 4 ∞ 0 0 5 ∞ 0 0 6 ∞ 0 0 s Valores iniciales de la tabla
  • 23. Algoritmos y Estructuras de Datos 23 Algoritmo de Dijkstra Ejemplo (cont.) V Dv Pv Conoc. 1 0 0 1 2 ∞ 0 0 3 40 1 0 4 ∞ 0 0 5 10 1 0 6 5 1 0 •Valores al seleccionar el vértice 1 •Actualiza la distancia de 3, 5 y 6 s
  • 24. Algoritmos y Estructuras de Datos 24 Algoritmo de Dijkstra Ejemplo (cont.) V Dv Pv Conoc. 1 0 0 1 2 ∞ 0 0 3 40 1 0 4 ∞ 0 0 5 10 1 0 6 5 1 0 s
  • 25. Algoritmos y Estructuras de Datos 25 Algoritmo de Dijkstra Ejemplo (cont.) V Dv Pv Conoc. 1 0 0 1 2 25 6 0 3 40 1 0 4 ∞ 0 0 5 10 1 0 6 5 1 1 s •Valores al seleccionar el vértice 6 •Actualiza la distancia de 2
  • 26. 2626 Algoritmo de Dijkstra Ejemplo (cont.) V Dv Pv Conoc. 1 0 0 1 2 25 6 0 3 40 1 0 4 ∞ 0 0 5 10 1 0 6 5 1 1 s
  • 27. Algoritmos y Estructuras de Datos 27 Algoritmo de Dijkstra Ejemplo (cont.) V Dv Pv Conoc. 1 0 0 1 2 25 6 0 3 40 1 0 4 30 5 0 5 10 1 1 6 5 1 1 s •Valores al seleccionar el vértice 5 •Actualiza la distancia de 4
  • 28. Algoritmos y Estructuras de Datos 28 Algoritmo de Dijkstra Ejemplo (cont.)  Los próximos vértices a elegir son: 2, 4 y 3 en ese orden. V Dv Pv Conoc. 1 0 0 1 2 25 6 1 3 35 4 1 4 30 5 1 5 10 1 1 6 5 1 1 El resultado final es:
  • 29. Algoritmos y Estructuras de Datos 29 Algoritmo de Dijkstra Dijkstra(G,w, s){ (1) para cada vértice v Є V hacer (2) Dv = ∞; Pv = 0; (3) fin para (4) Ds = 0; (5) para cada vértice v Є V hacer (6) u = vérticeDesconocidoMenor Dist; (7) Marcar u como conocido; (8) para cada vértice w Є V adyacente a u hacer (9) si w no está conocido entonces (10) si Dw > Du + c(u,w) entonces (11) Dw = Du + c(u,w); (12) Pw = u; (13) fin si (14) fin si (15) fin para (16) fin para }
  • 30. Algoritmos y Estructuras de Datos 30 Algoritmo de Dijkstra Tiempo de ejecución (I)  El bucle para de la línea (5) se ejecuta para todos los vértices  |V| iteraciones  La operación vérticeDesconocidoMenorDist es O(|V|) y dado que se realiza |V| veces  el costo total de vérticeDesconocidoMenorDist es O(|V|2 )  El bucle para de la línea (8) se ejecuta para los vértices adyacentes de cada vértice. El número total de iteraciones será la cantidad de aristas del grafo.  |E| iteraciones  El costo total del algoritmo es (|V|2 + |E| ) es O(|V|2 )
  • 31. Algoritmos y Estructuras de Datos 31 Algoritmo de Dijkstra Tiempo de ejecución (II) Optimización: la operación vérticeDesconocidoMenorDist es más eficiente si almacenamos las distancias en una heap.  La operación vérticeDesconocidoMenorDist es O(log|V|) y dado que se realiza |V| veces  el costo total de vérticeDesconocidoMenorDist es O(|V| log |V|)  El bucle para de la línea (8) supone modificar la prioridad (distancia) y reorganizar la heap. Cada iteración es O(log|V|)  realiza|E| iteraciones, O(|E| log|V|)  El costo total del algoritmo es (|V| log|V|+ |E| log|V|) es O(|E| log|V|)
  • 32. Algoritmos y Estructuras de Datos 32 Algoritmo de Dijkstra Tiempo de ejecución (III) Variante: usando heap la actualización de la línea (11) se puede resolver insertando w y su nuevo valor Dw cada vez que éste se modifica.  El tamaño de la heap puede crecer hasta |E|. Dado que |E| ≤ |V|2 , log |E| ≤ 2 log |V|, el costo total del algoritmo no varía  El costo total del algoritmo es O(|E| log|V|)
  • 33. Algoritmos y Estructuras de Datos 33 Algoritmos de Caminos mínimos Grafos con pesos positivos y negativos  Estrategia: Encolar los vértices Si el grafo tiene aristas negativas, el algoritmo de Dijkstra puede dar un resultado erróneo. s uv -5 -10 2 V Dv Pv Conoc. s 0 0 1 u -5 s 1 v 2 s 1 Error !! La distancia mínima de s a u es -8
  • 34. Algoritmos y Estructuras de Datos 34 Algoritmos de Caminos mínimos Grafos con pesos positivos y negativos (cont.) Pasos:  Encolar el vértice origen s.  Procesar la cola:  Desencolar un vértice.  Actualizar la distancia de los adyacentes Dw siguiendo el mismo criterio de Dijkstra.  Si w no está en la cola, encolarlo. El costo total del algoritmo es O(|V| |E|)
  • 35. Algoritmos y Estructuras de Datos 35 Algoritmos de Caminos mínimos Grafos acíclicos  Estrategia: Orden Topológico  Optimización del algoritmo de Dijkstra  La selección de cada vértice se realiza siguiendo el orden topológico  Esta estrategia funciona correctamente, dado que al seleccionar un vértice v, no se va a encontrar una distancia dv menor, porque ya se procesaron todos los caminos que llegan a él El costo total del algoritmo es O(|V| + |E|)
  • 36. Algoritmos y Estructuras de Datos 36 Algoritmos de Caminos mínimos Grafos acíclicos Camino_min_GrafoDirigidoAcíclico(G,s) Ordenar topológicamente los vértices de G; Inicializar Tabla de Distancias(G, s); para c/vértice u del orden topológico hacer para c/vértice w Є V adyacente a u hacer si Dw > Du + c(u,w) entonces Dw = Du + c(u,w); Pw = u;
  • 37. Algoritmos y Estructuras de Datos 37 Algoritmos de Caminos mínimos Grafos acíclicos Camino_min_GrafoDirigidoAcíclico(G,s) { Calcular el grado_in de todos los vértices Encolar en Q los vértices con grado_in = 0 para cada vértice v Є V hacer Dv = ∞; Pv = 0; fin para Ds = 0; Mientras (!esVacio(Q)) hacer Desencolar(Q,u); para c/vértice w Є V adyacente a u hacer Decrementar grado de entrada de w si grado_in[w] = 0 entonces Encolar(Q,w); si Du != ∞ entonces si Dw > Du + c(u,w) entonces Dw = Du + c(u,w); Pw = u; fin si fin para fin mientras
  • 38. Algoritmos y Estructuras de Datos 38 Caminos mínimos entre todos los pares de vértices  Estrategia: Algoritmo de Floyd  Lleva dos matrices D y P, ambas de |V| x |V| Matriz de costos Matriz de vértices mínimos intermedios El costo total del algoritmo es O(|V|3 )
  • 39. Algoritmos y Estructuras de Datos 39 Algoritmo de Floyd para k=1 hasta cant_Vértices(G) hacer para i=1 hasta cant_Vértices(G) hacer para j=1 hasta cant_Vértices(G) hacer si D[i,j] > D[i,k] + D[k,j] entonces D[i,j] = D[i,k] + D[k,j]; P[i,j] = k; fin si fin para fin para fin para Toma cada vértice como intermedio, para calcular los caminos Distancia entre los vértices i y j, pasando por k
  • 40. Algoritmos y Estructuras de Datos 40 Agenda - Grafos • Caminos de costo mínimo • Árbol de expansión mínimo
  • 41. Algoritmos y Estructuras de Datos 41 Agenda – Grafos  Árbol de expansión mínimo  Definición  Algoritmo de Prim  Algoritmo de Kruskal
  • 42. Algoritmos y Estructuras de Datos 42 Árbol de expansión mínima Definición Dado un grafo G=(V , E) no dirigido y conexo El árbol de expansión mínima es un árbol formado por las aristas de G que conectan todos los vértices con un costo total mínimo.
  • 43. Algoritmos y Estructuras de Datos 43 Árbol de expansión mínima Algoritmo de Prim  Construye el árbol haciéndolo crecer por etapas  En cada etapa: - elige un vértice como raíz - le agrega al árbol una arista y un vértice asociado  Selecciona la arista (u,v) de mínimo costo que cumpla: u ∈ árbol y v ∉ árbol
  • 44. Algoritmos y Estructuras de Datos 44 Árbol de expansión mínima Algoritmo de Prim (cont.)  Construye el árbol haciéndolo crecer por etapas Ejemplo: Nodo raíz Se agrega la arista (1,3) y el vértice 3 1° Paso
  • 45. Algoritmos y Estructuras de Datos 45 Árbol de expansión mínima Algoritmo de Prim (cont.) Se agrega la arista (3,6) y el vértice 6 2° Paso 3° Paso Se agrega la arista (6,4) y el vértice 4 4° y 5° Pasos - Se agrega la arista (3,2) y el vértice 2 - Se agrega la arista (2,5) y el vértice 5
  • 46. Algoritmos y Estructuras de Datos 46 Algoritmo de Prim Implementación  La implementación es muy similar al algoritmo de Dijkstra  Se modifica la forma de actualizar la distancia de los adyacentes:  Se compara Dw con c(v,w)  Se actualiza si Dw > c(v,w) Distancia mínima a w (sin tener en cuenta v) Distancia de v a w
  • 47. Algoritmos y Estructuras de Datos 47 Algoritmo de Prim Tiempo de Ejecución  Se hacen las mismas consideraciones que para el algoritmo de Dijkstra  Si se implementa con una tabla secuencial:  El costo total del algoritmo es O(|V|2 )  Si se implementa con heap:  El costo total del algoritmo es O(|E| log|V|)
  • 48. Algoritmos y Estructuras de Datos 48 Árbol de expansión mínima Algoritmo de Kruskal  Selecciona las aristas en orden creciente según su peso y las acepta si no originan un ciclo  El invariante que usa me indica que en cada punto del proceso, dos vértices pertenecen al mismo conjunto si y sólo sí están conectados  Si dos vértices u y v están en el mismo conjunto, la arista (u,v) es rechazada porque al aceptarla forma un ciclo
  • 49. Algoritmos y Estructuras de Datos 49 Árbol de expansión mínima Algoritmo de Kruskal (cont.)  Inicialmente cada vértice pertenece a su propio conjunto  |V| conjuntos con un único elemento  Al aceptar una arista se realiza la Unión de dos conjuntos  Las aristas se organizan en una heap, para ir recuperando la de mínimo costo en cada paso
  • 50. Algoritmos y Estructuras de Datos 50 Árbol de expansión mínima Algoritmo de Kruskal (cont.) Ejemplo:
  • 51. Algoritmos y Estructuras de Datos 51 Árbol de expansión mínima Algoritmo de Kruskal (cont.) Inicialmente cada vértice está en su propio conjunto Se agrega la arista (1,2) Se agrega la arista (3,6) Se agrega la arista (4,6)
  • 52. Algoritmos y Estructuras de Datos 52 Árbol de expansión mínima Algoritmo de Kruskal (cont.) Se agrega la arista (2,6) Se agrega la arista (3,5)
  • 53. Algoritmos y Estructuras de Datos 53 Algoritmo de Kruskal Tiempo de Ejecución  Se organizan las aristas en una heap, para optimizar la recuperación de la arista de mínimo costo  El tamaño de la heap es |E|, y extraer cada arista lleva O(log |E|)  El tiempo de ejecución es O(|E |log|E|)  Dado que |E| ≤ |V|2 , log |E| ≤ 2 log |V|,  el costo total del algoritmo es O(|E |log|V|)