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

Unidad 3 estructura lineales
Unidad 3 estructura linealesUnidad 3 estructura lineales
Unidad 3 estructura linealesEnrique2194
 
Python variables and data types.pptx
Python variables and data types.pptxPython variables and data types.pptx
Python variables and data types.pptxAkshayAggarwal79
 
Relación uno a varios
Relación uno a variosRelación uno a varios
Relación uno a variosJohanVaca
 
Linguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e FunçõesLinguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e FunçõesElaine Cecília Gatto
 
Análise de desempenho de algoritmos de ordenação
Análise de desempenho de algoritmos de ordenaçãoAnálise de desempenho de algoritmos de ordenação
Análise de desempenho de algoritmos de ordenaçãoGustavo Carvalho
 
Algoritmos e lp parte 4-vetores matrizes e registros
Algoritmos e lp parte 4-vetores matrizes e registrosAlgoritmos e lp parte 4-vetores matrizes e registros
Algoritmos e lp parte 4-vetores matrizes e registrosMauro Pereira
 
COMPILADORES-Tabla de Simbolos
COMPILADORES-Tabla de SimbolosCOMPILADORES-Tabla de Simbolos
COMPILADORES-Tabla de SimbolosLilian León Meza
 
1.1 tipos de datos abstractos
1.1 tipos de datos abstractos1.1 tipos de datos abstractos
1.1 tipos de datos abstractoserwin_alexander
 
Pointers in c
Pointers in cPointers in c
Pointers in cMohd Arif
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADLeinylson Fontinele
 
Linguagem C 03 Estruturas De Decisao
Linguagem C 03 Estruturas De DecisaoLinguagem C 03 Estruturas De Decisao
Linguagem C 03 Estruturas De DecisaoRegis Magalhães
 
Estrutura de Dados - Aula 04 - Listas Estáticas
Estrutura de Dados - Aula 04 - Listas EstáticasEstrutura de Dados - Aula 04 - Listas Estáticas
Estrutura de Dados - Aula 04 - Listas EstáticasLeinylson Fontinele
 
Tipos de gramatica y arboles de derivacion
Tipos de gramatica y arboles de derivacionTipos de gramatica y arboles de derivacion
Tipos de gramatica y arboles de derivacionjorge severino
 
Programacion matlab
Programacion matlabProgramacion matlab
Programacion matlabMarc Llanos
 

La actualidad más candente (20)

Unidad 3 estructura lineales
Unidad 3 estructura linealesUnidad 3 estructura lineales
Unidad 3 estructura lineales
 
Programa de Cola Estática
Programa de Cola EstáticaPrograma de Cola Estática
Programa de Cola Estática
 
Python variables and data types.pptx
Python variables and data types.pptxPython variables and data types.pptx
Python variables and data types.pptx
 
Relación uno a varios
Relación uno a variosRelación uno a varios
Relación uno a varios
 
Sql access
Sql accessSql access
Sql access
 
Linguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e FunçõesLinguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e Funções
 
Estrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas EncadeadasEstrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas Encadeadas
 
Análise de desempenho de algoritmos de ordenação
Análise de desempenho de algoritmos de ordenaçãoAnálise de desempenho de algoritmos de ordenação
Análise de desempenho de algoritmos de ordenação
 
Linguagem C - Ponteiros
Linguagem C - PonteirosLinguagem C - Ponteiros
Linguagem C - Ponteiros
 
Algoritmos e lp parte 4-vetores matrizes e registros
Algoritmos e lp parte 4-vetores matrizes e registrosAlgoritmos e lp parte 4-vetores matrizes e registros
Algoritmos e lp parte 4-vetores matrizes e registros
 
COMPILADORES-Tabla de Simbolos
COMPILADORES-Tabla de SimbolosCOMPILADORES-Tabla de Simbolos
COMPILADORES-Tabla de Simbolos
 
1.1 tipos de datos abstractos
1.1 tipos de datos abstractos1.1 tipos de datos abstractos
1.1 tipos de datos abstractos
 
Pointers in c
Pointers in cPointers in c
Pointers in c
 
Introdução a python
Introdução a pythonIntrodução a python
Introdução a python
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
 
Linguagem C 03 Estruturas De Decisao
Linguagem C 03 Estruturas De DecisaoLinguagem C 03 Estruturas De Decisao
Linguagem C 03 Estruturas De Decisao
 
Estrutura de Dados - Aula 04 - Listas Estáticas
Estrutura de Dados - Aula 04 - Listas EstáticasEstrutura de Dados - Aula 04 - Listas Estáticas
Estrutura de Dados - Aula 04 - Listas Estáticas
 
Tipos de gramatica y arboles de derivacion
Tipos de gramatica y arboles de derivacionTipos de gramatica y arboles de derivacion
Tipos de gramatica y arboles de derivacion
 
Programacion matlab
Programacion matlabProgramacion matlab
Programacion matlab
 
TABLA DE SÍMBOLOS
TABLA DE SÍMBOLOSTABLA DE SÍMBOLOS
TABLA DE SÍMBOLOS
 

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

Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxClaudiaPerez86192
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Francisco Javier Mora Serrano
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)ssuser563c56
 
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptxguillermosantana15
 
sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7luisanthonycarrascos
 
Introducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptIntroducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptEduardoCorado
 
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptxPPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptxSergioGJimenezMorean
 
Linealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdfLinealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdfrolandolazartep
 
clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfDanielaVelasquez553560
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfAntonioGonzalezIzqui
 
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdfAnthonyTiclia
 
Seleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSeleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSaulSantiago25
 
Flujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxFlujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxEduardoSnchezHernnde5
 
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASTEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASfranzEmersonMAMANIOC
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfKEVINYOICIAQUINOSORI
 
Unidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxUnidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxEverardoRuiz8
 
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaProyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaXjoseantonio01jossed
 
Propositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicacionesPropositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicaciones025ca20
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAJAMESDIAZ55
 

Último (20)

Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptx
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
 
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
 
sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7
 
Introducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptIntroducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.ppt
 
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptxPPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
 
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdfVALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
 
Linealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdfLinealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdf
 
clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdf
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
 
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
 
Seleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSeleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusibles
 
Flujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxFlujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptx
 
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASTEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdf
 
Unidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxUnidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptx
 
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaProyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
 
Propositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicacionesPropositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicaciones
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
 

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|)