Ivan Lanese
Dipartimento di Informatica—Scienza e Ingegneria
Università di Bologna
ivan.lanese@gmail.com
http://www.cs.unibo.it/~lanese/
Minimum Spanning Trees 2
Introduzione
● Un problema di notevole importanza:
– determinare come interconnettere diversi elementi fra loro
minimizzando certi vincoli sulle connessioni
● Esempio classico:
– progettazione dei circuiti elettronici dove si vuole
minimizzare la quantità di filo elettrico per collegare fra loro i
diversi componenti
● Questo problema prende il nome di:
– albero di copertura (di peso) minimo
– albero di connessione (di peso) minimo
– minimum spanning tree
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
Minimum Spanning Trees 5
Definizione del problema
● Output: albero di copertura di peso minimo (minimum
spanning tree)
– Un albero di copertura il cui peso totale
w T = ∑ w u , v
u , v∈T
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h g
1Minimum Spanning 2
Trees f 7
Algoritmo generico
● Vediamo
– Un algoritmo greedy generico
– Due istanze di questo algoritmo: Kruskal e Prim
● L'idea è di accrescere un sottoinsieme T di archi in
modo tale che venga rispettata la seguente
condizione:
– T è un sottoinsieme di qualche albero di copertura minimo
● Un arco {u, v} è detto sicuro per T se T {u, v} è
ancora un sottoinsieme di qualche MST
● Archi blu
– sono gli archi che fanno parte del MST
● Archi rossi
– sono gli archi che non fanno parte del MST
b 8 c 7 d
4 2 9
a 11 i 4 14 e
Insieme S
8 7 6 10
h 1 g 2 f
Taglio
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
Joseph B. Kruskal: On the Shortest Spanning Subtree of a Graph and the Traveling
Salesman Problem. In: Proceedings of the American Mathematical Society, Vol 7,
No. 1 (Feb, 1956), pp. 48–50 Minimum Spanning Trees 43
Esempio
Algoritmo di Kruskal
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
● Finito! Il MST è composto dai soli archi blu
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b 8 c 7 d
4 2 9
a 11 i 4 14 e
8 7 6 10
h 1 g 2 f
b c d
∞ 8 ∞ 7 ∞
4 2 9
a ∞ 11 ∞ i 4 14 ∞ e
8 7 6 10
∞ 1 ∞ 2 ∞
h g f
b c d
∞ 8 ∞ 7 ∞
4 2 9
a 0 11 ∞ i 4 14 ∞ e
8 7 6 10
∞ 1 ∞ 2 ∞
h g f
b c d
4 8 ∞ 7 ∞
4 2 9
a 0 11 ∞ i 4 14 ∞ e
8 7 6 10
8 1 ∞ 2 ∞
h g f
b c d
4 8 ∞ 7 ∞
4 2 9
a 0 11 ∞ i 4 14 ∞ e
8 7 6 10
8 1 ∞ 2 ∞
h g f
b c d
4 8 8 7 ∞
4 2 9
a 0 11 ∞ i 4 14 ∞ e
8 7 6 10
8 1 ∞ 2 ∞
h g f
b c d
4 8 8 7 ∞
4 2 9
a 0 11 ∞ i 4 14 ∞ e
8 7 6 10
8 1 ∞ 2 ∞
h g f
b c d
4 8 8 7 ∞
4 2 9
a 0 11 7 i 4 14 ∞ e
8 7 6 10
8 1 1 2 ∞
h g f
b c d
4 8 8 7 ∞
4 2 9
a 0 11 7 i 4 14 ∞ e
8 7 6 10
8 1 1 2 ∞
h g f
b c d
4 8 8 7 ∞
4 2 9
a 0 11 6 i 4 14 ∞ e
8 7 6 10
8 1 1 2 2
h g f
b c d
4 8 8 7 ∞
4 2 9
a 0 11 6 i 4 14 ∞ e
8 7 6 10
8 1 1 2 2
h g f
b c d
4 8 4 7 14
4 2 9
a 0 11 6 i 4 14 10 e
8 7 6 10
8 1 1 2 2
h g f
b c d
4 8 4 7 14
4 2 9
a 0 11 6 i 4 14 10 e
8 7 6 10
8 1 1 2 2
h g f
b c d
4 8 4 7 7
4 2 9
a 0 11 2 i 4 14 10 e
8 7 6 10
8 1 1 2 2
h g f
b c d
4 8 4 7 7
4 2 9
a 0 11 2 i 4 14 10 e
8 7 6 10
8 1 1 2 2
h g f
b c d
4 8 4 7 7
4 2 9
a 0 11 2 i 4 14 10 e
8 7 6 10
8 1 1 2 2
h g f
b c d
4 8 4 7 7
4 2 9
a 0 11 2 i 4 14 10 e
8 7 6 10
8 1 1 2 2
h g f
b c d
4 8 4 7 7
4 2 9
a 0 11 2 i 4 14 9 e
8 7 6 10
8 1 1 2 2
h g f
b c d
4 8 4 7 7
4 2 9
a 0 11 2 i 4 14 9 e
8 7 6 10
8 1 1 2 2
h g f
b c d
4 8 4 7 7
4 2 9
a 0 11 2 i 4 14 9 e
8 7 6 10
8 1 1 2 2
h g f