SlideShare una empresa de Scribd logo
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

Ensamblador y lenguaje c
Ensamblador y lenguaje cEnsamblador y lenguaje c
Ensamblador y lenguaje c
Anthonys Ordoñez
 
Estructura de datos : Cola
Estructura de datos : ColaEstructura de datos : Cola
Estructura de datos : Cola
Emerson Garay
 
Fractional Knapsack Problem
Fractional Knapsack ProblemFractional Knapsack Problem
Fractional Knapsack Problem
harsh kothari
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamiento
José Antonio Sandoval Acosta
 
Búsqueda secuencial y binaria
Búsqueda secuencial y binariaBúsqueda secuencial y binaria
Búsqueda secuencial y binaria
Alvaro Enrique Ruano
 
Tipos de listas en estructura de datos
Tipos de listas en estructura de datosTipos de listas en estructura de datos
Tipos de listas en estructura de datos
Carlos Alberto Cuervo Cardenas
 
Estructura de datos - Unidad 3 Estructuras Lineales (POO)
Estructura de datos - Unidad 3 Estructuras Lineales (POO)Estructura de datos - Unidad 3 Estructuras Lineales (POO)
Estructura de datos - Unidad 3 Estructuras Lineales (POO)
José Antonio Sandoval Acosta
 
ANALYSIS-AND-DESIGN-OF-ALGORITHM.ppt
ANALYSIS-AND-DESIGN-OF-ALGORITHM.pptANALYSIS-AND-DESIGN-OF-ALGORITHM.ppt
ANALYSIS-AND-DESIGN-OF-ALGORITHM.ppt
DaveCalapis3
 
Iterative deepening search
Iterative deepening searchIterative deepening search
Iterative deepening search
Ashis Kumar Chanda
 
Protección y Seguridad de los Sistemas Operativos
Protección y Seguridad de los Sistemas OperativosProtección y Seguridad de los Sistemas Operativos
Protección y Seguridad de los Sistemas Operativos
Richard J. Nuñez
 
Compiladores java a_tope
Compiladores java a_topeCompiladores java a_tope
Compiladores java a_tope
Emmanuel Lara
 
LibreríAs De Java
LibreríAs De JavaLibreríAs De Java
LibreríAs De Java
Universidad Veracruzana
 
Búsqueda Primero el Mejor
Búsqueda Primero el MejorBúsqueda Primero el Mejor
Búsqueda Primero el Mejor
Tutor4uDev
 
Graph traversals in Data Structures
Graph traversals in Data StructuresGraph traversals in Data Structures
Graph traversals in Data Structures
Anandhasilambarasan D
 
An overview of gradient descent optimization algorithms
An overview of gradient descent optimization algorithms An overview of gradient descent optimization algorithms
An overview of gradient descent optimization algorithms
Hakky St
 
Función Hash: metodos de división y de medio Cuadrado.
Función Hash: metodos de división y de medio Cuadrado.Función Hash: metodos de división y de medio Cuadrado.
Función Hash: metodos de división y de medio Cuadrado.
Ana Castro
 
Best,worst,average case .17581556 045
Best,worst,average case .17581556 045Best,worst,average case .17581556 045
Best,worst,average case .17581556 045
university of Gujrat, pakistan
 
Tablas Hash
Tablas HashTablas Hash
Tablas Hash
César Torres Soto
 
Graph coloring using backtracking
Graph coloring using backtrackingGraph coloring using backtracking
Graph coloring using backtracking
shashidharPapishetty
 
Ejercicios prolog
Ejercicios prologEjercicios prolog
Ejercicios prolog
Simar Leaño Prieto
 

La actualidad más candente (20)

Ensamblador y lenguaje c
Ensamblador y lenguaje cEnsamblador y lenguaje c
Ensamblador y lenguaje c
 
Estructura de datos : Cola
Estructura de datos : ColaEstructura de datos : Cola
Estructura de datos : Cola
 
Fractional Knapsack Problem
Fractional Knapsack ProblemFractional Knapsack Problem
Fractional Knapsack Problem
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamiento
 
Búsqueda secuencial y binaria
Búsqueda secuencial y binariaBúsqueda secuencial y binaria
Búsqueda secuencial y binaria
 
Tipos de listas en estructura de datos
Tipos de listas en estructura de datosTipos de listas en estructura de datos
Tipos de listas en estructura de datos
 
Estructura de datos - Unidad 3 Estructuras Lineales (POO)
Estructura de datos - Unidad 3 Estructuras Lineales (POO)Estructura de datos - Unidad 3 Estructuras Lineales (POO)
Estructura de datos - Unidad 3 Estructuras Lineales (POO)
 
ANALYSIS-AND-DESIGN-OF-ALGORITHM.ppt
ANALYSIS-AND-DESIGN-OF-ALGORITHM.pptANALYSIS-AND-DESIGN-OF-ALGORITHM.ppt
ANALYSIS-AND-DESIGN-OF-ALGORITHM.ppt
 
Iterative deepening search
Iterative deepening searchIterative deepening search
Iterative deepening search
 
Protección y Seguridad de los Sistemas Operativos
Protección y Seguridad de los Sistemas OperativosProtección y Seguridad de los Sistemas Operativos
Protección y Seguridad de los Sistemas Operativos
 
Compiladores java a_tope
Compiladores java a_topeCompiladores java a_tope
Compiladores java a_tope
 
LibreríAs De Java
LibreríAs De JavaLibreríAs De Java
LibreríAs De Java
 
Búsqueda Primero el Mejor
Búsqueda Primero el MejorBúsqueda Primero el Mejor
Búsqueda Primero el Mejor
 
Graph traversals in Data Structures
Graph traversals in Data StructuresGraph traversals in Data Structures
Graph traversals in Data Structures
 
An overview of gradient descent optimization algorithms
An overview of gradient descent optimization algorithms An overview of gradient descent optimization algorithms
An overview of gradient descent optimization algorithms
 
Función Hash: metodos de división y de medio Cuadrado.
Función Hash: metodos de división y de medio Cuadrado.Función Hash: metodos de división y de medio Cuadrado.
Función Hash: metodos de división y de medio Cuadrado.
 
Best,worst,average case .17581556 045
Best,worst,average case .17581556 045Best,worst,average case .17581556 045
Best,worst,average case .17581556 045
 
Tablas Hash
Tablas HashTablas Hash
Tablas Hash
 
Graph coloring using backtracking
Graph coloring using backtrackingGraph coloring using backtracking
Graph coloring using backtracking
 
Ejercicios prolog
Ejercicios prologEjercicios prolog
Ejercicios prolog
 

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

Claseeeeeeeeeeeeeeeeeessssssssssse_PA.pdf
Claseeeeeeeeeeeeeeeeeessssssssssse_PA.pdfClaseeeeeeeeeeeeeeeeeessssssssssse_PA.pdf
Claseeeeeeeeeeeeeeeeeessssssssssse_PA.pdf
Abdias13
 
Grafos-2021.pdf
Grafos-2021.pdfGrafos-2021.pdf
Grafos-2021.pdf
NathanLux3
 
Rutamascorta1
Rutamascorta1Rutamascorta1
Rutamascorta1
hernandodiaz
 
Unidad 6 grafos
Unidad 6  grafosUnidad 6  grafos
Unidad 6 grafos
Miguel Guanira Erazo
 
Unidad 6 grafos
Unidad 6  grafosUnidad 6  grafos
Unidad 6 grafos
Miguel Guanira Erazo
 
Unidad 6 grafos
Unidad 6  grafosUnidad 6  grafos
Unidad 6 grafos
Miguel Guanira Erazo
 
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
José A. Alonso
 
Seminario de matlab
Seminario de matlabSeminario de matlab
Seminario de matlab
Sebastian Arbelaez
 
Trazado de lineas rectas
Trazado de lineas rectasTrazado de lineas rectas
Trazado de lineas rectas
Sam 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
 
59563233 algoritmo-bresenham
59563233 algoritmo-bresenham59563233 algoritmo-bresenham
59563233 algoritmo-bresenham
Simar Leaño Prieto
 
Proyecto pibap
Proyecto pibapProyecto 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
Universidad Católica San Pablo
 
vectores y matrices.pdf
vectores y matrices.pdfvectores y matrices.pdf
vectores y matrices.pdf
kaniaquintero2
 
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
MateoMarcosKrupiczer1
 
Computacion
ComputacionComputacion
Computacion
norbeyvito
 
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
margothingrithllanca
 
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
margothingrithllanca
 
Int_Octave_II_2021.pptx
Int_Octave_II_2021.pptxInt_Octave_II_2021.pptx
Int_Octave_II_2021.pptx
ItaloFernandoYupanAr
 
Grafos Digrafos
Grafos DigrafosGrafos Digrafos
Grafos Digrafos
carlosdpargas
 

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

9 Lección perro.pptxcvBWRFWBCCCCCCCCCCCCCCTEN
9 Lección perro.pptxcvBWRFWBCCCCCCCCCCCCCCTEN9 Lección perro.pptxcvBWRFWBCCCCCCCCCCCCCCTEN
9 Lección perro.pptxcvBWRFWBCCCCCCCCCCCCCCTEN
KarinToledo2
 
PRES 3. METROLOGÍA DE GASES Y RADIACIONES IONIZANTES.pptx
PRES 3. METROLOGÍA DE GASES Y RADIACIONES IONIZANTES.pptxPRES 3. METROLOGÍA DE GASES Y RADIACIONES IONIZANTES.pptx
PRES 3. METROLOGÍA DE GASES Y RADIACIONES IONIZANTES.pptx
brandonsinael
 
Dosificacion de hormigon NCH 170 actualizada
Dosificacion de hormigon NCH 170 actualizadaDosificacion de hormigon NCH 170 actualizada
Dosificacion de hormigon NCH 170 actualizada
pipex55
 
S09 PBM-HEMORRAGIAS 2021-I Grabada 1.pptx
S09 PBM-HEMORRAGIAS 2021-I Grabada 1.pptxS09 PBM-HEMORRAGIAS 2021-I Grabada 1.pptx
S09 PBM-HEMORRAGIAS 2021-I Grabada 1.pptx
yamilbailonw
 
Focos SSO Fin de Semana del 31 MAYO A al 02 de JUNIO de 2024.pdf
Focos SSO Fin de Semana del 31 MAYO A  al 02 de JUNIO  de 2024.pdfFocos SSO Fin de Semana del 31 MAYO A  al 02 de JUNIO  de 2024.pdf
Focos SSO Fin de Semana del 31 MAYO A al 02 de JUNIO de 2024.pdf
PatoLokooGuevara
 
Infografía de operaciones básicas....pdf
Infografía de operaciones básicas....pdfInfografía de operaciones básicas....pdf
Infografía de operaciones básicas....pdf
jahirrtorresa
 
EXPOSICIÓN NTP IEC 60364-1 - Orlando Chávez Chacaltana.pdf
EXPOSICIÓN NTP IEC 60364-1 - Orlando Chávez Chacaltana.pdfEXPOSICIÓN NTP IEC 60364-1 - Orlando Chávez Chacaltana.pdf
EXPOSICIÓN NTP IEC 60364-1 - Orlando Chávez Chacaltana.pdf
hugodennis88
 
PRACTICA 2 EDAFOLOGÍA TEXTURA DEL SUELO.pptx
PRACTICA 2 EDAFOLOGÍA TEXTURA DEL SUELO.pptxPRACTICA 2 EDAFOLOGÍA TEXTURA DEL SUELO.pptx
PRACTICA 2 EDAFOLOGÍA TEXTURA DEL SUELO.pptx
ANGELJOELSILVAPINZN
 
Las operaciones básicas en la construcción.
Las operaciones básicas en la construcción.Las operaciones básicas en la construcción.
Las operaciones básicas en la construcción.
MaraManuelaUrribarri
 
Calculo-de-Camaras-Frigorificas.pdf para trabajos
Calculo-de-Camaras-Frigorificas.pdf para trabajosCalculo-de-Camaras-Frigorificas.pdf para trabajos
Calculo-de-Camaras-Frigorificas.pdf para trabajos
JuanCarlos695207
 
Infografia de operaciones basicas de la construccion.pdf
Infografia de operaciones basicas de la construccion.pdfInfografia de operaciones basicas de la construccion.pdf
Infografia de operaciones basicas de la construccion.pdf
DanielMelndez19
 
Equipo 4. Mezclado de Polímeros quimica de polimeros.pptx
Equipo 4. Mezclado de Polímeros quimica de polimeros.pptxEquipo 4. Mezclado de Polímeros quimica de polimeros.pptx
Equipo 4. Mezclado de Polímeros quimica de polimeros.pptx
angiepalacios6170
 
Sistemas eléctricos de potencia y transmisión
Sistemas eléctricos de potencia y transmisiónSistemas eléctricos de potencia y transmisión
Sistemas eléctricos de potencia y transmisión
MichaelLpezOrtiz
 
AE 34 Serie de sobrecargas aisladas_240429_172040.pdf
AE  34 Serie de sobrecargas aisladas_240429_172040.pdfAE  34 Serie de sobrecargas aisladas_240429_172040.pdf
AE 34 Serie de sobrecargas aisladas_240429_172040.pdf
sebastianpech108
 
PRIMERA Y SEGUNDA LEY DE LA TERMODINÁMICA
PRIMERA Y SEGUNDA LEY DE LA TERMODINÁMICAPRIMERA Y SEGUNDA LEY DE LA TERMODINÁMICA
PRIMERA Y SEGUNDA LEY DE LA TERMODINÁMICA
carmenquintana18
 
Uso de equipos de protección personal.pptx
Uso de equipos de protección personal.pptxUso de equipos de protección personal.pptx
Uso de equipos de protección personal.pptx
OmarPadillaGarcia
 
Cargas de Cálculos Estructurales de un Puente
Cargas de Cálculos Estructurales de un PuenteCargas de Cálculos Estructurales de un Puente
Cargas de Cálculos Estructurales de un Puente
jemifermelgarejoaran1
 
METRADOS_Y_PRESUPUESTO_EN_SISTEMA_DRYWALL_24-05.pdf
METRADOS_Y_PRESUPUESTO_EN_SISTEMA_DRYWALL_24-05.pdfMETRADOS_Y_PRESUPUESTO_EN_SISTEMA_DRYWALL_24-05.pdf
METRADOS_Y_PRESUPUESTO_EN_SISTEMA_DRYWALL_24-05.pdf
Augusto César Dávila Callupe
 
COMPARACION DE PRECIOS TENIENDO COMO REFERENTE LA OSCE
COMPARACION DE PRECIOS TENIENDO COMO REFERENTE LA OSCECOMPARACION DE PRECIOS TENIENDO COMO REFERENTE LA OSCE
COMPARACION DE PRECIOS TENIENDO COMO REFERENTE LA OSCE
jhunior lopez rodriguez
 
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
DiegoAlexanderChecaG
 

Último (20)

9 Lección perro.pptxcvBWRFWBCCCCCCCCCCCCCCTEN
9 Lección perro.pptxcvBWRFWBCCCCCCCCCCCCCCTEN9 Lección perro.pptxcvBWRFWBCCCCCCCCCCCCCCTEN
9 Lección perro.pptxcvBWRFWBCCCCCCCCCCCCCCTEN
 
PRES 3. METROLOGÍA DE GASES Y RADIACIONES IONIZANTES.pptx
PRES 3. METROLOGÍA DE GASES Y RADIACIONES IONIZANTES.pptxPRES 3. METROLOGÍA DE GASES Y RADIACIONES IONIZANTES.pptx
PRES 3. METROLOGÍA DE GASES Y RADIACIONES IONIZANTES.pptx
 
Dosificacion de hormigon NCH 170 actualizada
Dosificacion de hormigon NCH 170 actualizadaDosificacion de hormigon NCH 170 actualizada
Dosificacion de hormigon NCH 170 actualizada
 
S09 PBM-HEMORRAGIAS 2021-I Grabada 1.pptx
S09 PBM-HEMORRAGIAS 2021-I Grabada 1.pptxS09 PBM-HEMORRAGIAS 2021-I Grabada 1.pptx
S09 PBM-HEMORRAGIAS 2021-I Grabada 1.pptx
 
Focos SSO Fin de Semana del 31 MAYO A al 02 de JUNIO de 2024.pdf
Focos SSO Fin de Semana del 31 MAYO A  al 02 de JUNIO  de 2024.pdfFocos SSO Fin de Semana del 31 MAYO A  al 02 de JUNIO  de 2024.pdf
Focos SSO Fin de Semana del 31 MAYO A al 02 de JUNIO de 2024.pdf
 
Infografía de operaciones básicas....pdf
Infografía de operaciones básicas....pdfInfografía de operaciones básicas....pdf
Infografía de operaciones básicas....pdf
 
EXPOSICIÓN NTP IEC 60364-1 - Orlando Chávez Chacaltana.pdf
EXPOSICIÓN NTP IEC 60364-1 - Orlando Chávez Chacaltana.pdfEXPOSICIÓN NTP IEC 60364-1 - Orlando Chávez Chacaltana.pdf
EXPOSICIÓN NTP IEC 60364-1 - Orlando Chávez Chacaltana.pdf
 
PRACTICA 2 EDAFOLOGÍA TEXTURA DEL SUELO.pptx
PRACTICA 2 EDAFOLOGÍA TEXTURA DEL SUELO.pptxPRACTICA 2 EDAFOLOGÍA TEXTURA DEL SUELO.pptx
PRACTICA 2 EDAFOLOGÍA TEXTURA DEL SUELO.pptx
 
Las operaciones básicas en la construcción.
Las operaciones básicas en la construcción.Las operaciones básicas en la construcción.
Las operaciones básicas en la construcción.
 
Calculo-de-Camaras-Frigorificas.pdf para trabajos
Calculo-de-Camaras-Frigorificas.pdf para trabajosCalculo-de-Camaras-Frigorificas.pdf para trabajos
Calculo-de-Camaras-Frigorificas.pdf para trabajos
 
Infografia de operaciones basicas de la construccion.pdf
Infografia de operaciones basicas de la construccion.pdfInfografia de operaciones basicas de la construccion.pdf
Infografia de operaciones basicas de la construccion.pdf
 
Equipo 4. Mezclado de Polímeros quimica de polimeros.pptx
Equipo 4. Mezclado de Polímeros quimica de polimeros.pptxEquipo 4. Mezclado de Polímeros quimica de polimeros.pptx
Equipo 4. Mezclado de Polímeros quimica de polimeros.pptx
 
Sistemas eléctricos de potencia y transmisión
Sistemas eléctricos de potencia y transmisiónSistemas eléctricos de potencia y transmisión
Sistemas eléctricos de potencia y transmisión
 
AE 34 Serie de sobrecargas aisladas_240429_172040.pdf
AE  34 Serie de sobrecargas aisladas_240429_172040.pdfAE  34 Serie de sobrecargas aisladas_240429_172040.pdf
AE 34 Serie de sobrecargas aisladas_240429_172040.pdf
 
PRIMERA Y SEGUNDA LEY DE LA TERMODINÁMICA
PRIMERA Y SEGUNDA LEY DE LA TERMODINÁMICAPRIMERA Y SEGUNDA LEY DE LA TERMODINÁMICA
PRIMERA Y SEGUNDA LEY DE LA TERMODINÁMICA
 
Uso de equipos de protección personal.pptx
Uso de equipos de protección personal.pptxUso de equipos de protección personal.pptx
Uso de equipos de protección personal.pptx
 
Cargas de Cálculos Estructurales de un Puente
Cargas de Cálculos Estructurales de un PuenteCargas de Cálculos Estructurales de un Puente
Cargas de Cálculos Estructurales de un Puente
 
METRADOS_Y_PRESUPUESTO_EN_SISTEMA_DRYWALL_24-05.pdf
METRADOS_Y_PRESUPUESTO_EN_SISTEMA_DRYWALL_24-05.pdfMETRADOS_Y_PRESUPUESTO_EN_SISTEMA_DRYWALL_24-05.pdf
METRADOS_Y_PRESUPUESTO_EN_SISTEMA_DRYWALL_24-05.pdf
 
COMPARACION DE PRECIOS TENIENDO COMO REFERENTE LA OSCE
COMPARACION DE PRECIOS TENIENDO COMO REFERENTE LA OSCECOMPARACION DE PRECIOS TENIENDO COMO REFERENTE LA OSCE
COMPARACION DE PRECIOS TENIENDO COMO REFERENTE LA OSCE
 
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
 

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