minimum spanning tree - moreno marzolla home page · 2016-04-29 · minimum spanning trees 12...
TRANSCRIPT
![Page 1: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/1.jpg)
Minimum Spanning TreeMinimum Spanning Tree
Ivan LaneseDipartimento di Informatica—Scienza e IngegneriaUniversità di Bologna
[email protected]://www.cs.unibo.it/~lanese/
![Page 2: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/2.jpg)
Minimum Spanning Trees 2
![Page 3: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/3.jpg)
Minimum Spanning Trees 3
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
![Page 4: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/4.jpg)
Minimum Spanning Trees 4
Definizione del problema
● Input:– G = (V, E) un grafo non orientato e connesso – w: V V → R una funzione peso
● se {u, v} E, allora w(u, v) è il peso dell'arco {u, v}● se {u, v} E, allora w(u, v) =
– Poiché G non è orientato, w(u, v) = w(v, u)
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 5: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/5.jpg)
Minimum Spanning Trees 5
Definizione del problema
● Albero di copertura (spanning tree)– Dato un grafo G = (V, E) non orientato e connesso, un
albero di copertura di G è un sottografo T = (V, ET) tale che
● T è un albero● E
T E
● T contiene tutti i nodi di G
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 6: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/6.jpg)
Minimum Spanning Trees 6
Definizione del problema
● Output: albero di copertura di peso minimo (minimum spanning tree)– Un albero di copertura il cui peso totale
sia minimo, tra tutti i possibili alberi di copertura T
w T = ∑u , v∈T
w u , v
![Page 7: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/7.jpg)
Minimum Spanning Trees 7
Osservazione● Il MST non è necessariamente unico
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 8: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/8.jpg)
Minimum Spanning Trees 8
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
![Page 9: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/9.jpg)
Minimum Spanning Trees 9
Algoritmo generico
Tree Generic-MST(Grafo G=(V,E,w))Tree T ← Albero vuotowhile T non forma un albero di copertura do
trova un arco sicuro {u, v}T ← T {u, v}
endwhilereturn T
● Archi blu– sono gli archi che fanno parte del MST
● Archi rossi– sono gli archi che non fanno parte del MST
![Page 10: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/10.jpg)
Minimum Spanning Trees 10
Definizioni
● Per caratterizzare gli archi sicuri dobbiamo introdurre alcune definizioni:– Un taglio (S, V - S) di un grafo non orientato G = (V, E) è una
partizione di V in due sottoinsiemi disgiunti– Un arco {u, v} attraversa il taglio se u S e v V - S– Un taglio rispetta un insieme di archi T se nessun arco di T
attraversa il taglio– Un arco che attraversa un taglio è leggero se il suo peso è
minimo fra i pesi degli archi che attraversano un taglio
![Page 11: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/11.jpg)
Minimum Spanning Trees 11
Esempio
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2Taglio
Insieme T: archi blu (il taglio rispetta T)
Insieme S
Insieme V - S
Arco leggero che attraversa il taglio
![Page 12: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/12.jpg)
Minimum Spanning Trees 12
Regole del ciclo e del taglio
● Regola del ciclo– Scegli un ciclo semplice in G che non contenga archi rossi.
Tra tutti gli archi non colorati del ciclo, seleziona un arco di costo massimo e coloralo di rosso
● Regola del taglio– Scegli un taglio in G che non contenga archi blu. Tra tutti gli
archi non colorati che attraversano il taglio seleziona un arco di costo minimo e coloralo di blu
● Metodo greedy– Costruisce un MST applicando, ad ogni passo, una delle due
regole precedenti (una qualunque, purché si possa usare)
![Page 13: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/13.jpg)
Minimum Spanning Trees 13
Esempio
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 14: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/14.jpg)
Minimum Spanning Trees 14
Esempio
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 15: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/15.jpg)
Minimum Spanning Trees 15
Esempio
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 16: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/16.jpg)
Minimum Spanning Trees 16
Esempio
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 17: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/17.jpg)
Minimum Spanning Trees 17
Esempio
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 18: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/18.jpg)
Minimum Spanning Trees 18
Esempio
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 19: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/19.jpg)
Minimum Spanning Trees 19
Esempio
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 20: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/20.jpg)
Minimum Spanning Trees 20
Esempio
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 21: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/21.jpg)
Minimum Spanning Trees 21
Esempio
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 22: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/22.jpg)
Minimum Spanning Trees 22
Esempio
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 23: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/23.jpg)
Minimum Spanning Trees 23
Esempio
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 24: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/24.jpg)
Minimum Spanning Trees 24
Esempio
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 25: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/25.jpg)
Minimum Spanning Trees 25
Esempio
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 26: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/26.jpg)
Minimum Spanning Trees 26
Esempio
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 27: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/27.jpg)
Minimum Spanning Trees 27
Esempio
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 28: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/28.jpg)
Minimum Spanning Trees 28
Esempio
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 29: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/29.jpg)
Minimum Spanning Trees 29
Esempio
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 30: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/30.jpg)
Minimum Spanning Trees 30
Esempio
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 31: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/31.jpg)
Minimum Spanning Trees 31
Esempio
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 32: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/32.jpg)
Minimum Spanning Trees 32
Esempio
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 33: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/33.jpg)
Minimum Spanning Trees 33
Esempio
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 34: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/34.jpg)
Minimum Spanning Trees 34
Esempio
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 35: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/35.jpg)
Minimum Spanning Trees 35
Esempio
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 36: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/36.jpg)
Minimum Spanning Trees 36
Esempio
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 37: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/37.jpg)
Minimum Spanning Trees 37
Esempio
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 38: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/38.jpg)
Minimum Spanning Trees 38
Esempio
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 39: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/39.jpg)
Minimum Spanning Trees 39
Esempio
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 40: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/40.jpg)
Minimum Spanning Trees 40
Esempio
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 41: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/41.jpg)
Minimum Spanning Trees 41
Esempio
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 42: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/42.jpg)
Minimum Spanning Trees 42
Finito!
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 43: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/43.jpg)
Minimum Spanning Trees 43
Algoritmo di Kruskal
● Idea– Ingrandire sottoinsiemi disgiunti di un albero di copertura
minimo connettendoli fra di loro fino ad avere l’albero finale● Inizialmente la foresta di copertura è composta da n alberi, uno per
ciascun nodo, e nessun arco– Si considerano gli archi in ordine non decrescente di peso
● Se l'arco e = {u, v} connette due alberi blu distinti, lo si colora di blu. Altrimenti lo si colora di rosso
– L’algoritmo è greedy perché ad ogni passo si aggiunge alla foresta un arco con il peso minimo
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
![Page 44: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/44.jpg)
Minimum Spanning Trees 44
EsempioAlgoritmo di Kruskal
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 45: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/45.jpg)
Minimum Spanning Trees 45
EsempioAlgoritmo di Kruskal
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 46: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/46.jpg)
Minimum Spanning Trees 46
EsempioAlgoritmo di Kruskal
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 47: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/47.jpg)
Minimum Spanning Trees 47
EsempioAlgoritmo di Kruskal
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 48: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/48.jpg)
Minimum Spanning Trees 48
EsempioAlgoritmo di Kruskal
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 49: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/49.jpg)
Minimum Spanning Trees 49
EsempioAlgoritmo di Kruskal
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 50: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/50.jpg)
Minimum Spanning Trees 50
EsempioAlgoritmo di Kruskal
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 51: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/51.jpg)
Minimum Spanning Trees 51
EsempioAlgoritmo di Kruskal
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 52: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/52.jpg)
Minimum Spanning Trees 52
EsempioAlgoritmo di Kruskal
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 53: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/53.jpg)
Minimum Spanning Trees 53
EsempioAlgoritmo di Kruskal
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 54: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/54.jpg)
Minimum Spanning Trees 54
EsempioAlgoritmo di Kruskal
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 55: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/55.jpg)
Minimum Spanning Trees 55
EsempioAlgoritmo di Kruskal
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 56: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/56.jpg)
Minimum Spanning Trees 56
EsempioAlgoritmo di Kruskal
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 57: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/57.jpg)
Minimum Spanning Trees 57
EsempioAlgoritmo di Kruskal
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 58: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/58.jpg)
Minimum Spanning Trees 58
EsempioAlgoritmo di Kruskal
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
● Finito! Il MST è composto dai soli archi blu
![Page 59: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/59.jpg)
Minimum Spanning Trees 59
Implementazione
● Ordinare gli archi in ordine non decrescente di peso– Sappiamo come fare
● Determinare se gli estremi di un arco appartengono allo stesso albero oppure no– Anche qui, sappiamo come fare...– ...usando le strutture merge-find!
![Page 60: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/60.jpg)
Minimum Spanning Trees 60
Algoritmo di Kruskal
Tree Kruskal-MST(Grafo G=(V,E,w))Tree T ← albero vuotoMergeFind MF ← new mfset( G.numNodi() );// ordina gli archi di E per peso w crescentesort(E, w)for each {u,v} in E do
Tu ← MF.find(u)Tv ← MF.find(v)if (Tu ≠ Tv) then // evita i cicli
T ← T U {u, v} // aggiungi arcoMF.merge(Tu, Tv) // unisci componenti
endifendforreturn T
![Page 61: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/61.jpg)
Minimum Spanning Trees 61
Analisi
● L'ordinamento richiede O(m log m) = O(m log n2) = O(m log n)
dove m è il numero di archi e n il numero di nodi● Il tempo di esecuzione dipende dalla realizzazione
della struttura dati per insiemi disgiunti– Vengono effettuate 2m find e (n - 1) merge, oltre alla
creazione della struttura merge-find● Se usiamo quickUnion con euristica sul rango, la
sequenza di operazioni costa in tutto O((m + n) log n)● Totale: O(2m log n + n log n) = O(m log n)
![Page 62: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/62.jpg)
Minimum Spanning Trees 62
Algoritmo di Prim
● L’algoritmo di Prim procede mantenendo in un singolo albero T che viene fatto via via “crescere”– L’albero parte da un nodo arbitrario r (la radice) e cresce fino
a quando ricopre tutti i vertici– Ad ogni passo viene aggiunto l'arco di peso minimo che
collega un nodo già raggiunto dell'albero con uno non ancora raggiunto
R. C. Prim: Shortest connection networks and some generalizations. In: Bell System Technical Journal, 36 (1957), pp. 1389–1401
![Page 63: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/63.jpg)
Minimum Spanning Trees 63
EsempioAlgoritmo di Prim
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 64: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/64.jpg)
Minimum Spanning Trees 64
EsempioAlgoritmo di Prim
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 65: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/65.jpg)
Minimum Spanning Trees 65
EsempioAlgoritmo di Prim
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 66: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/66.jpg)
Minimum Spanning Trees 66
EsempioAlgoritmo di Prim
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 67: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/67.jpg)
Minimum Spanning Trees 67
EsempioAlgoritmo di Prim
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 68: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/68.jpg)
Minimum Spanning Trees 68
EsempioAlgoritmo di Prim
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 69: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/69.jpg)
Minimum Spanning Trees 69
EsempioAlgoritmo di Prim
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 70: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/70.jpg)
Minimum Spanning Trees 70
EsempioAlgoritmo di Prim
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 71: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/71.jpg)
Minimum Spanning Trees 71
EsempioAlgoritmo di Prim
a
b
h
i
c
g
d
f
e
4
8
11
8
1
7 6
24
7
149
10
2
![Page 72: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/72.jpg)
Minimum Spanning Trees 72
Implementazione
● Una struttura dati per i nodi non ancora nell'albero– i nodi non ancora nel MST si trovano in una coda con
priorità Q ordinata in base ad un valore d[v]– d[v] è il peso minimo di un arco che collega il nodo v, che
non appartiene all'albero, ad un nodo già nell'albero ● + se tale arco non esiste
● Come mantenere l'albero– Mediante il vettore padri p[v]
● Terminazione: quando l'insieme Q è vuoto– Tutti i nodi tranne la radice conoscono il proprio padre
![Page 73: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/73.jpg)
Minimum Spanning Trees 73
Algoritmo di Priminteger[] Prim-MST(Grafo G=(V,E,w), nodo s)
double d[1..n];integer p[1..n];for v ← 1 to n do
d[v] ← ;p[v] ← -1;
endford[s] ← 0;CodaPriorita<integer, double> Q; Q.insert(s, 0);while (not Q.isEmpty()) do
u ← Q.find(); Q.deleteMin();for each v adiacente a u do
if (d[v] == ) thend[v] ← w(u,v);Q.insert(v, d[v]);p[v] ← u;
elseif (w(u,v) < d[v]) thend[v] ← w(u,v);Q.decreaseKey(v, d[v]);p[v] ← u;
endifendfor
endwhilereturn p;
![Page 74: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/74.jpg)
Minimum Spanning Trees 74
Esempio di esecuzione
∞
∞
∞
∞
∞
∞
∞
∞
∞
4
8
11
8
1
7 6
24
7
149
10
2
a
b c d
e
fgh
i
Q = { }
![Page 75: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/75.jpg)
Minimum Spanning Trees 75
Esempio di esecuzione
0
∞
∞
∞
∞
∞
∞
∞
∞
4
8
11
8
1
7 6
24
7
149
10
2
a
b c d
e
fgh
i
Q = { (a,0) }
![Page 76: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/76.jpg)
Minimum Spanning Trees 76
Esempio di esecuzione
0
4
8
∞
∞
∞
∞
∞
∞
4
8
11
8
1
7 6
24
7
149
10
2
a
b c d
e
fgh
i
Q = { (b,4), (h,8) }
![Page 77: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/77.jpg)
Minimum Spanning Trees 77
Esempio di esecuzione
0
4
8
∞
∞
∞
∞
∞
∞
4
8
11
8
1
7 6
24
7
149
10
2
a
b c d
e
fgh
i
Q = { (b,4), (h,8) }
![Page 78: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/78.jpg)
Minimum Spanning Trees 78
Esempio di esecuzione
0
4
8
∞
8
∞
∞
∞
∞
4
8
11
8
1
7 6
24
7
149
10
2
a
b c d
e
fgh
i
Q = { (h,8), (c,8) }
![Page 79: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/79.jpg)
Minimum Spanning Trees 79
Esempio di esecuzione
0
4
8
∞
8
∞
∞
∞
∞
4
8
11
8
1
7 6
24
7
149
10
2
a
b c d
e
fgh
i
Q = { (h,8), (c,8) }
![Page 80: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/80.jpg)
Minimum Spanning Trees 80
Esempio di esecuzione
0
4
8
7
8
1
∞
∞
∞
4
8
11
8
1
7 6
24
7
149
10
2
a
b c d
e
fgh
i
Q = { (g,1), (i,7), (c,8) }
![Page 81: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/81.jpg)
Minimum Spanning Trees 81
Esempio di esecuzione
0
4
8
7
8
1
∞
∞
∞
4
8
11
8
1
7 6
24
7
149
10
2
a
b c d
e
fgh
i
Q = { (g,1), (i,7), (c,8) }
![Page 82: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/82.jpg)
Minimum Spanning Trees 82
Esempio di esecuzione
0
4
8
6
8
1
∞
2
∞
4
8
11
8
1
7 6
24
7
149
10
2
a
b c d
e
fgh
i
Q = { (f,2), (i,6), (c,8) }
![Page 83: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/83.jpg)
Minimum Spanning Trees 83
Esempio di esecuzione
0
4
8
6
8
1
∞
2
∞
4
8
11
8
1
7 6
24
7
149
10
2
a
b c d
e
fgh
i
Q = { (f,2), (i,6), (c,8) }
![Page 84: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/84.jpg)
Minimum Spanning Trees 84
Esempio di esecuzione
0
4
8
6
4
1
14
2
10
4
8
11
8
1
7 6
24
7
149
10
2
a
b c d
e
fgh
i
Q = { (c,4), (i,6), (e,10), (d,14) }
![Page 85: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/85.jpg)
Minimum Spanning Trees 85
Esempio di esecuzione
0
4
8
6
4
1
14
2
10
4
8
11
8
1
7 6
24
7
149
10
2
a
b c d
e
fgh
i
Q = { (c,4), (i,6), (e,10), (d,14) }
![Page 86: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/86.jpg)
Minimum Spanning Trees 86
Esempio di esecuzione
0
4
8
2
4
1
7
2
10
4
8
11
8
1
7 6
24
7
149
10
2
a
b c d
e
fgh
i
Q = { (i,2), (d,7), (e,10) }
![Page 87: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/87.jpg)
Minimum Spanning Trees 87
Esempio di esecuzione
0
4
8
2
4
1
7
2
10
4
8
11
8
1
7 6
24
7
149
10
2
a
b c d
e
fgh
i
Q = { (i,2), (d,7), (e,10) }
![Page 88: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/88.jpg)
Minimum Spanning Trees 88
Esempio di esecuzione
0
4
8
2
4
1
7
2
10
4
8
11
8
1
7 6
24
7
149
10
2
a
b c d
e
fgh
i
Q = { (d,7), (e,10) }
![Page 89: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/89.jpg)
Minimum Spanning Trees 89
Esempio di esecuzione
0
4
8
2
4
1
7
2
10
4
8
11
8
1
7 6
24
7
149
10
2
a
b c d
e
fgh
i
Q = { (d,7), (e,10) }
![Page 90: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/90.jpg)
Minimum Spanning Trees 90
Esempio di esecuzione
0
4
8
2
4
1
7
2
9
4
8
11
8
1
7 6
24
7
149
10
2
a
b c d
e
fgh
i
Q = { (e,9) }
![Page 91: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/91.jpg)
Minimum Spanning Trees 91
Esempio di esecuzione
0
4
8
2
4
1
7
2
9
4
8
11
8
1
7 6
24
7
149
10
2
a
b c d
e
fgh
i
Q = { (e,9) }
![Page 92: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/92.jpg)
Minimum Spanning Trees 92
Esempio di esecuzione
0
4
8
2
4
1
7
2
9
4
8
11
8
1
7 6
24
7
149
10
2
a
b c d
e
fgh
i
Q = { }
![Page 93: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/93.jpg)
Minimum Spanning Trees 93
integer[] Prim-MST(Grafo G=(V,E,w), nodo s)double d[1..n];integer p[1..n];for v ← 1 to n do
d[v] ← ;p[v] ← -1;
endford[s] ← 0;CodaPriorita<integer, double> Q; Q.insert(s, 0);while (not Q.isEmpty()) do
u ← Q.find(); Q.deleteMin();for each v adiacente a u do
if (d[v] == ) thend[v] ← w(u,v);Q.insert(v, d[v]);p[v] ← u;
elseif (w(u,v) < d[v]) thend[v] ← w(u,v);Q.decreaseKey(v, d[v]);p[v] ← u;
endifendfor
endwhilereturn p;
Algoritmo di Prim
n deleteMin()
n insert()(inclusa Q.insert(s,0) )
O(m) decreaseKey()
![Page 94: Minimum Spanning Tree - Moreno Marzolla Home Page · 2016-04-29 · Minimum Spanning Trees 12 Regole del ciclo e del taglio Regola del ciclo – Scegli un ciclo semplice in G che](https://reader035.vdocuments.us/reader035/viewer/2022070804/5f0366fe7e708231d40908f3/html5/thumbnails/94.jpg)
Minimum Spanning Trees 94
Algoritmo di PrimCosto computazionale
● Utilizzando una coda di priorità basata su min-heap binario– n deleteMin() costano O(n log n)– n insert() costano O(n log n)– O(m) decreaseKey() costano O(m log n)
● Totale– O(n log n + n log n + m log n) =
O(m log n + n log n) =O(m log n) (se il grafo è connesso)
In un grafo connesso si ha sempre m ≥ n - 1