Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Clase 06 - Minimum Spanning Trees
Clase 06 - Minimum Spanning Trees
Semestre 02/2022
23/08/2022
9 8
1 3 3
4 7
2
• ¿Cómo conectamos todos los nodos de manera que el costo sea mínimo?
• ¿Entre qué casas instalamos cables?
Minimum spanning trees: motivación
Red eléctrica:
- Nodos: casas
- Aristas: posibilidad de instalar un cable entre dos casas
- Costo de arista: costo de instalar el cable
Costo = 22
No conecta todas las casas
5
9 8
1 3 3
4 7
2
• ¿Cómo conectamos todos los nodos de manera que el costo sea mínimo?
• ¿Entre qué casas instalamos cables?
Minimum spanning trees: motivación
Red eléctrica:
- Nodos: casas
- Aristas: posibilidad de instalar un cable entre dos casas
- Costo de arista: costo de instalar el cable
Costo = 37
Sí conecta todas las casas
5
9 8
1 3 3
4 7
2
• ¿Cómo conectamos todos los nodos de manera que el costo sea mínimo?
• ¿Entre qué casas instalamos cables?
Minimum spanning trees: motivación
Red eléctrica:
- Nodos: casas
- Aristas: posibilidad de instalar un cable entre dos casas
- Costo de arista: costo de instalar el cable
Costo = 20
Sí conecta todas las casas
5
9 8
1 3 3
4 7
2
• ¿Cómo conectamos todos los nodos de manera que el costo sea mínimo?
• ¿Entre qué casas instalamos cables?
Minimum spanning trees: motivación
Red eléctrica:
- Nodos: casas
- Aristas: posibilidad de instalar un cable entre dos casas
- Costo de arista: costo de instalar el cable
Costo = 17
Sí conecta todas las casas
5
9 8
1 3 3
4 7
2
• ¿Cómo conectamos todos los nodos de manera que el costo sea mínimo?
• ¿Entre qué casas instalamos cables?
Minimum spanning trees: de niciones
• T es un subgrafo de G
• T es un árbol
• T contiene todos los nodos de G
Observaciones:
• El peso de un spanning tree es la suma de los pesos de sus aristas
• Un grafo que no es conexo no puede tener un spanning tree
(pero cada una de sus componentes conexas sí)
fi
Minimum spanning trees: propiedades
• Propiedad de Corte:
Para cualquier corte del grafo (separación de los nodos en dos partes),
si e es una arista con menor peso que todas las otras en el corte,
entonces e es parte de todos los minimum spanning trees
(en caso de unicidad, e es parte del único minimum spanning tree)
En caso de empate, es decir, si e tiene peso mínimo entre las aristas del corte,
pero hay otra artista con igual peso en el corte,
tenemos que e es parte de algún minimum spanning tree (no necesariamente todos)
Minimum spanning trees: algoritmos
Algoritmos clásicos:
5
B D
9 8
A 1 3 3 F
4 7
C E
2
Algoritmo de Prim
T
5
B D
9 8
A 1 3 3 F
4 7
C E
2
Algoritmo de Prim
T
5
B D
9 8
A 1 3 3 F
4 7
C E
2
Algoritmo de Prim
Ejemplo:
Aristas de corte de T = { {A,B}, {B,C}, {C,E}, {D,F}, {E,F} }
T
5
B D
9 8
A 1 3 3 F
4 7
C E
2
Algoritmo de Prim
Solución parcial
Aristas de corte
5
B D
9 8
A 1 3 3 F
4 7
C E
2
Algoritmo de Prim: ejemplos
Solución parcial
Aristas de corte
5
B D
9 8
A 1 3 3 F
4 7
C E
2
Algoritmo de Prim: ejemplos
Solución parcial
Aristas de corte
5
B D
9 8
A 1 3 3 F
4 7
C E
2
Algoritmo de Prim: ejemplos
Solución parcial
Aristas de corte
5
B D
9 8
A 1 3 3 F
4 7
C E
2
Algoritmo de Prim: ejemplos
Solución parcial
Aristas de corte
5
B D
9 8
A 1 3 3 F
4 7
C E
2
Algoritmo de Prim: ejemplos
Solución parcial
Aristas de corte
5
B D
9 8
A 1 3 3 F
4 7
C E
2
fi
Algoritmo de Prim: ejemplos
Solución parcial
Aristas de corte
5
B D
9 8
A 1 3 3 F
4 7
C E
2
Algoritmo de Prim: ejemplos
Solución parcial
Aristas de corte
5
B D
9 8
A 1 3 3 F
4 7
C E
2
Algoritmo de Prim: ejemplos
Solución parcial
Aristas de corte
5
B D
9 8
A 1 3 3 F
4 7
C E
2
Algoritmo de Prim: ejemplos
Solución parcial
Aristas de corte
5
B D
9 8
A 1 3 3 F
4 7
C E
2
Algoritmo de Prim: ejemplos
Solución parcial
Aristas de corte
5
B D
9 8
A 1 3 3 F
4 7
C E
2
Algoritmo de Prim: ejemplos
Solución parcial
Aristas de corte
5
B D
9 8
A 1 3 3 F
4 7
C E
2
fi
Algoritmo de Prim: observaciones nales
- En cada iteración, utilizamos la cola para obtener la artista de corte con peso mínimo
fi
Algoritmo de Kruskal
5
B D
9 8
A 1 3 3 F
4 7
C E
2
Algoritmo de Kruskal: ejemplo
5
B D
9 8
A 1 3 3 F
4 7
C E
2
Algoritmo de Kruskal: ejemplo
5
B D
9 8
A 1 3 3 F
4 7
C E
2
Algoritmo de Kruskal: ejemplo
5
B D
9 8
A 1 3 3 F
4 7
C E
2
Algoritmo de Kruskal: ejemplo
5
B D
9 8
A 1 3 3 F
4 7
C E
2
Algoritmo de Kruskal: ejemplo
5
B D
9 8
A 1 3 3 F
4 7
C E
2
Algoritmo de Kruskal: ejemplo
5
B D
9 8
A 1 3 3 F
4 7
C E
2
Algoritmo de Kruskal: ejemplo
{D,F}, {A,B}
5
B D
9 8
A 1 3 3 F
4 7
C E
2
Algoritmo de Kruskal: ejemplo
{A,B}
5
B D
9 8
A 1 3 3 F
4 7
C E
2
Algoritmo de Kruskal: ejemplo
5
B D
9 8
A 1 3 3 F
4 7
C E
2
Algoritmo de Kruskal: ejemplo
5
B D
9 8
A 1 3 3 F
4 7
C E
2
fi
Algoritmo de Kruskal: observaciones nales
fi
Prim vs Kruskal
En teoría:
• Prim es O(m + n log n) usando Fibonacci heaps y O(m log n) usando binary heaps
En la práctica:
• Los dos son utilizados ampliamente
• Prim puede funcionar mejor cuando el grafo tiene una gran cantidad
de aristas, por ejemplo, cuando m = O(n 2)
• Kruskal puede funcionar mejor cuando hay pocas aristas (m = O(n)),
o cuando las aristas ya están ordenadas. Las estructuras de datos utilizadas
en Kruskal son en general más simples que las de Prim (Fibonacci heaps)