minimum spanning tree - moreno marzolla home page · 2016-04-29 · minimum spanning trees 12...

94
Minimum Spanning Tree Minimum Spanning Tree Ivan Lanese Dipartimento di Informatica—Scienza e Ingegneria Università di Bologna [email protected] http://www.cs.unibo.it/~lanese/

Upload: others

Post on 07-Jun-2020

0 views

Category:

Documents


0 download

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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