grafi: alberi di copertura minimicorsiadistanza.polito.it/corsi/pdf/09eipn/pdf/2004/09-...

32
Algoritmi e Programmazione Avanzata 05EIP © Politecnico di Torino Pagina 1 di 32 Data ultima revisione 20/10/2003 Autore : CORNO & SONZA REORDA Politecnico di Torino CeTeM Grafi: alberi di copertura minimi Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino A.A. 2001/2002 APA - Grafi 2 2 Sommario Introduzione Algoritmo generico Algoritmo di Kruskal Algoritmo di Prim.

Upload: others

Post on 23-Jun-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Grafi: alberi di copertura minimicorsiadistanza.polito.it/corsi/pdf/09EIPN/pdf/2004/09- grafi2.pdf · un albero di copertura minimo produce ancora un sottoinsieme di un albero di

Algoritmi e Programmazione Avanzata

05EIP

© Politecnico di Torino Pagina 1 di 32 Data ultima revisione 20/10/2003 Autore : CORNO & SONZA REORDA

Politecnico di Torino CeTeM

Grafi:alberi di copertura minimi

Fulvio CORNO - Matteo SONZA REORDADip. Automatica e Informatica

Politecnico di Torino

A.A. 2001/2002 APA - Grafi 2 2

Sommario

IntroduzioneAlgoritmo genericoAlgoritmo di KruskalAlgoritmo di Prim.

Page 2: Grafi: alberi di copertura minimicorsiadistanza.polito.it/corsi/pdf/09EIPN/pdf/2004/09- grafi2.pdf · un albero di copertura minimo produce ancora un sottoinsieme di un albero di

Algoritmi e Programmazione Avanzata

05EIP

© Politecnico di Torino Pagina 2 di 32 Data ultima revisione 20/10/2003 Autore : CORNO & SONZA REORDA

Politecnico di Torino CeTeM

A.A. 2001/2002 APA - Grafi 2 3

Sommario

IntroduzioneAlgoritmo genericoAlgoritmo di KruskalAlgoritmo di Prim.

A.A. 2001/2002 APA - Grafi 2 4

IntroduzioneSi consideri un grafo non orientato, pesato e connesso G=(V,E), con una funzione peso w: E→R.Il grafo G' avente le seguenti caratteristiche:

è composto dastessi vertici di Gun sottoinsieme T degli archi E (T⊆E)

è aciclicominimizza la quantità

w(T)=Σ w(u,v)è detto albero di copertura minimo (o Minimum Spanning Tree, MST).

Page 3: Grafi: alberi di copertura minimicorsiadistanza.polito.it/corsi/pdf/09EIPN/pdf/2004/09- grafi2.pdf · un albero di copertura minimo produce ancora un sottoinsieme di un albero di

Algoritmi e Programmazione Avanzata

05EIP

© Politecnico di Torino Pagina 3 di 32 Data ultima revisione 20/10/2003 Autore : CORNO & SONZA REORDA

Politecnico di Torino CeTeM

A.A. 2001/2002 APA - Grafi 2 5

Esempio

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

A.A. 2001/2002 APA - Grafi 2 6

Esempio

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

Albero di copertura minimo

Peso totale = 37

Page 4: Grafi: alberi di copertura minimicorsiadistanza.polito.it/corsi/pdf/09EIPN/pdf/2004/09- grafi2.pdf · un albero di copertura minimo produce ancora un sottoinsieme di un albero di

Algoritmi e Programmazione Avanzata

05EIP

© Politecnico di Torino Pagina 4 di 32 Data ultima revisione 20/10/2003 Autore : CORNO & SONZA REORDA

Politecnico di Torino CeTeM

A.A. 2001/2002 APA - Grafi 2 7

Nota

L'albero di copertura minimo per un grafo in generale non è unico.

A.A. 2001/2002 APA - Grafi 2 8

Esempio di applicazione

Si supponga di dover realizzare l'impianto di distribuzione dell'energia elettrica di una zona, nella quale esistono un certo numero di abitazioni che devono essere servite.Di ogni abitazione si conosce la posizione, nonché la distanza da tutte le altre.L'albero di copertura minimo rappresenta la soluzione che consente la minimizzazione della lunghezza dei collegamenti da realizzare.

Page 5: Grafi: alberi di copertura minimicorsiadistanza.polito.it/corsi/pdf/09EIPN/pdf/2004/09- grafi2.pdf · un albero di copertura minimo produce ancora un sottoinsieme di un albero di

Algoritmi e Programmazione Avanzata

05EIP

© Politecnico di Torino Pagina 5 di 32 Data ultima revisione 20/10/2003 Autore : CORNO & SONZA REORDA

Politecnico di Torino CeTeM

A.A. 2001/2002 APA - Grafi 2 9

Sommario

IntroduzioneAlgoritmo genericoAlgoritmo di KruskalAlgoritmo di Prim.

A.A. 2001/2002 APA - Grafi 2 10

Algoritmo generico

Gli algoritmi per il calcolo di un albero di copertura minimo che seguono si basano sullo stesso schema elementare.Tale schema implementa un approccio di tipo greedy.

Page 6: Grafi: alberi di copertura minimicorsiadistanza.polito.it/corsi/pdf/09EIPN/pdf/2004/09- grafi2.pdf · un albero di copertura minimo produce ancora un sottoinsieme di un albero di

Algoritmi e Programmazione Avanzata

05EIP

© Politecnico di Torino Pagina 6 di 32 Data ultima revisione 20/10/2003 Autore : CORNO & SONZA REORDA

Politecnico di Torino CeTeM

A.A. 2001/2002 APA - Grafi 2 11

Algoritmi greedy

Sono una particolare categoria di algoritmi di ricerca o ottimizzazione.In molti problemi ad ogni passo l'algoritmo deve fare una scelta: seguendo la strategia greedy (ingordo), l'algoritmo fa la scelta più conveniente in quel momento.In tal modo non è in generale garantito che si ottenga la soluzione globalmente ottima.

A.A. 2001/2002 APA - Grafi 2 12

Pseudo-codice

Generic-MST(G,w)1 A←∅2 while A non forma un albero di copertura3 do trova un arco (u,v) che sia sicuro per A4 A←A∪{(u,v)}5 return A

Page 7: Grafi: alberi di copertura minimicorsiadistanza.polito.it/corsi/pdf/09EIPN/pdf/2004/09- grafi2.pdf · un albero di copertura minimo produce ancora un sottoinsieme di un albero di

Algoritmi e Programmazione Avanzata

05EIP

© Politecnico di Torino Pagina 7 di 32 Data ultima revisione 20/10/2003 Autore : CORNO & SONZA REORDA

Politecnico di Torino CeTeM

A.A. 2001/2002 APA - Grafi 2 13

Pseudo-codice

Generic-MST(G,w)1 A←∅2 while A non forma un albero di copertura3 do trova un arco (u,v) che sia sicuro per A4 A←A∪{(u,v)}5 return A Si definisce sicuro un arco che

aggiunto ad un sottoinsieme di un albero di copertura minimo

produce ancora un sottoinsieme di un albero di

copertura minimo

A.A. 2001/2002 APA - Grafi 2 14

Tagli

Dato un grafo non orientato G=(V,E), un taglio è una partizione di V in due sottoinsiemi.Un arco attraversa il taglio se uno dei suoi estremi è in una partizione, e l'altro nell'altra.Un taglio rispetta un insieme A di archi se nessun arco di A attraversa il taglio.Un arco si dice leggero se ha peso minimo tra gli archi che attraversano il taglio.

Page 8: Grafi: alberi di copertura minimicorsiadistanza.polito.it/corsi/pdf/09EIPN/pdf/2004/09- grafi2.pdf · un albero di copertura minimo produce ancora un sottoinsieme di un albero di

Algoritmi e Programmazione Avanzata

05EIP

© Politecnico di Torino Pagina 8 di 32 Data ultima revisione 20/10/2003 Autore : CORNO & SONZA REORDA

Politecnico di Torino CeTeM

A.A. 2001/2002 APA - Grafi 2 15

Esempio

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

Sottoinsieme S

Sottoinsieme V-S

Esempio di taglio

A.A. 2001/2002 APA - Grafi 2 16

Esempio

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

Sottoinsieme S

Sottoinsieme V-S

In rosso un sottoinsieme di archi A.

Il taglio rispetta A.

Page 9: Grafi: alberi di copertura minimicorsiadistanza.polito.it/corsi/pdf/09EIPN/pdf/2004/09- grafi2.pdf · un albero di copertura minimo produce ancora un sottoinsieme di un albero di

Algoritmi e Programmazione Avanzata

05EIP

© Politecnico di Torino Pagina 9 di 32 Data ultima revisione 20/10/2003 Autore : CORNO & SONZA REORDA

Politecnico di Torino CeTeM

A.A. 2001/2002 APA - Grafi 2 17

Esempio

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

Sottoinsieme S

Sottoinsieme V-S

L'arco (c,d) è leggero rispetto al taglio.

A.A. 2001/2002 APA - Grafi 2 18

Teorema

Sia G=(V,E) un grafo non orientato e connesso con una funzione peso w a valori reali definita su E.Sia A un sottoinsieme di E contenuto in un qualche albero di copertura minimo per G.Sia (S,V-S) un qualunque taglio che rispetta A.Sia (u,v) un arco leggero che attraversa (S,V-S).

Allora l'arco (u,v) è sicuro per A.

Page 10: Grafi: alberi di copertura minimicorsiadistanza.polito.it/corsi/pdf/09EIPN/pdf/2004/09- grafi2.pdf · un albero di copertura minimo produce ancora un sottoinsieme di un albero di

Algoritmi e Programmazione Avanzata

05EIP

© Politecnico di Torino Pagina 10 di 32 Data ultima revisione 20/10/2003 Autore : CORNO & SONZA REORDA

Politecnico di Torino CeTeM

A.A. 2001/2002 APA - Grafi 2 19

Corollario

Sia G=(V,E) un grafo non orientato e connesso con una funzione peso w a valori reali definita su E.Sia A un sottoinsieme di E contenuto in un un albero di copertura minimo per G.Sia C una componente connessa (ossia un albero) nella foresta GA=(V,A).Sia (u,v) un arco leggero che connette C ad un'altra componente in GA.Allora l'arco (u,v) è sicuro per A.

A.A. 2001/2002 APA - Grafi 2 20

Sommario

IntroduzioneAlgoritmo genericoAlgoritmo di KruskalAlgoritmo di Prim.

Page 11: Grafi: alberi di copertura minimicorsiadistanza.polito.it/corsi/pdf/09EIPN/pdf/2004/09- grafi2.pdf · un albero di copertura minimo produce ancora un sottoinsieme di un albero di

Algoritmi e Programmazione Avanzata

05EIP

© Politecnico di Torino Pagina 11 di 32 Data ultima revisione 20/10/2003 Autore : CORNO & SONZA REORDA

Politecnico di Torino CeTeM

A.A. 2001/2002 APA - Grafi 2 21

Algoritmo di Kruskal

È riconducibile all'algoritmo generico, rispetto al quale utilizza un modo particolare per determinare un arco sicuro, basato sul precedente corollario.

A.A. 2001/2002 APA - Grafi 2 22

Pseudo-codice

MST-Kruskal(G,w)1 A←∅2 for ogni vertice v∈V[G]3 do Make-Set(V)4 ordina gli archi di E per peso w non decrescente5 for ogni arco (u,v)∈E, in ordine di peso non decrescente6 do if Find-Set(u)≠Find-Set(v)7 then A←A∪{(u,v)}8 Union(u,v)9 return A

Page 12: Grafi: alberi di copertura minimicorsiadistanza.polito.it/corsi/pdf/09EIPN/pdf/2004/09- grafi2.pdf · un albero di copertura minimo produce ancora un sottoinsieme di un albero di

Algoritmi e Programmazione Avanzata

05EIP

© Politecnico di Torino Pagina 12 di 32 Data ultima revisione 20/10/2003 Autore : CORNO & SONZA REORDA

Politecnico di Torino CeTeM

A.A. 2001/2002 APA - Grafi 2 23

Pseudo-codice

MST-Kruskal(G,w)1 A←∅2 for ogni vertice v∈V[G]3 do Make-Set(V)4 ordina gli archi di E per peso w non decrescente5 for ogni arco (u,v)∈E, in ordine di peso non decrescente6 do if Find-Set(u)≠Find-Set(v)7 then A←A∪{(u,v)}8 Union(u,v)9 return A

Crea un insieme per ogni vertice in V

A.A. 2001/2002 APA - Grafi 2 24

Pseudo-codice

MST-Kruskal(G,w)1 A←∅2 for ogni vertice v∈V[G]3 do Make-Set(V)4 ordina gli archi di E per peso w non decrescente5 for ogni arco (u,v)∈E, in ordine di peso non decrescente6 do if Find-Set(u)≠Find-Set(v)7 then A←A∪{(u,v)}8 Union(u,v)9 return A

Ritorna l'insieme a cui appartiene il vertice u

Ritorna l'insieme a cui appartiene il vertice v

Page 13: Grafi: alberi di copertura minimicorsiadistanza.polito.it/corsi/pdf/09EIPN/pdf/2004/09- grafi2.pdf · un albero di copertura minimo produce ancora un sottoinsieme di un albero di

Algoritmi e Programmazione Avanzata

05EIP

© Politecnico di Torino Pagina 13 di 32 Data ultima revisione 20/10/2003 Autore : CORNO & SONZA REORDA

Politecnico di Torino CeTeM

A.A. 2001/2002 APA - Grafi 2 25

Pseudo-codice

MST-Kruskal(G,w)1 A←∅2 for ogni vertice v∈V[G]3 do Make-Set(V)4 ordina gli archi di E per peso w non decrescente5 for ogni arco (u,v)∈E, in ordine di peso non decrescente6 do if Find-Set(u)≠Find-Set(v)7 then A←A∪{(u,v)}8 Union(u,v)9 return A

Verifica se l'arco (u,v) collega due vertici appartenenti allo stesso albero.

Se così è, aggiungendo l'arco all'albero si introdurrebbe un ciclo.

A.A. 2001/2002 APA - Grafi 2 26

Pseudo-codice

MST-Kruskal(G,w)1 A←∅2 for ogni vertice v∈V[G]3 do Make-Set(V)4 ordina gli archi di E per peso w non decrescente5 for ogni arco (u,v)∈E, in ordine di peso non decrescente6 do if Find-Set(u)≠Find-Set(v)7 then A←A∪{(u,v)}8 Union(u,v)9 return A

Gli insiemi cui appartengono i vertici u e v vengono fusi in un

unico insieme

Page 14: Grafi: alberi di copertura minimicorsiadistanza.polito.it/corsi/pdf/09EIPN/pdf/2004/09- grafi2.pdf · un albero di copertura minimo produce ancora un sottoinsieme di un albero di

Algoritmi e Programmazione Avanzata

05EIP

© Politecnico di Torino Pagina 14 di 32 Data ultima revisione 20/10/2003 Autore : CORNO & SONZA REORDA

Politecnico di Torino CeTeM

A.A. 2001/2002 APA - Grafi 2 27

Esempio (0)

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

Inizializzazione:ogni vertice costituisce

un insieme a sé.

A.A. 2001/2002 APA - Grafi 2 28

Esempio (1)

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

Si considera l'arco (h,g).Lo si inserisce in A.

Page 15: Grafi: alberi di copertura minimicorsiadistanza.polito.it/corsi/pdf/09EIPN/pdf/2004/09- grafi2.pdf · un albero di copertura minimo produce ancora un sottoinsieme di un albero di

Algoritmi e Programmazione Avanzata

05EIP

© Politecnico di Torino Pagina 15 di 32 Data ultima revisione 20/10/2003 Autore : CORNO & SONZA REORDA

Politecnico di Torino CeTeM

A.A. 2001/2002 APA - Grafi 2 29

Esempio (2)

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

Si considera l'arco (i,c).Lo si inserisce in A.

A.A. 2001/2002 APA - Grafi 2 30

Esempio (3)

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

Si considera l'arco (g,f).Lo si inserisce in A.

Page 16: Grafi: alberi di copertura minimicorsiadistanza.polito.it/corsi/pdf/09EIPN/pdf/2004/09- grafi2.pdf · un albero di copertura minimo produce ancora un sottoinsieme di un albero di

Algoritmi e Programmazione Avanzata

05EIP

© Politecnico di Torino Pagina 16 di 32 Data ultima revisione 20/10/2003 Autore : CORNO & SONZA REORDA

Politecnico di Torino CeTeM

A.A. 2001/2002 APA - Grafi 2 31

Esempio (4)

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

Si considera l'arco (a,b).Lo si inserisce in A.

A.A. 2001/2002 APA - Grafi 2 32

Esempio (5)

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

Si considera l'arco (c,f).Lo si inserisce in A.

Page 17: Grafi: alberi di copertura minimicorsiadistanza.polito.it/corsi/pdf/09EIPN/pdf/2004/09- grafi2.pdf · un albero di copertura minimo produce ancora un sottoinsieme di un albero di

Algoritmi e Programmazione Avanzata

05EIP

© Politecnico di Torino Pagina 17 di 32 Data ultima revisione 20/10/2003 Autore : CORNO & SONZA REORDA

Politecnico di Torino CeTeM

A.A. 2001/2002 APA - Grafi 2 33

Esempio (6)

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

Si considera l'arco (i,g).Non lo si inserisce in A.

A.A. 2001/2002 APA - Grafi 2 34

Esempio (7)

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

Si considera l'arco (c,d).Lo si inserisce in A.

Page 18: Grafi: alberi di copertura minimicorsiadistanza.polito.it/corsi/pdf/09EIPN/pdf/2004/09- grafi2.pdf · un albero di copertura minimo produce ancora un sottoinsieme di un albero di

Algoritmi e Programmazione Avanzata

05EIP

© Politecnico di Torino Pagina 18 di 32 Data ultima revisione 20/10/2003 Autore : CORNO & SONZA REORDA

Politecnico di Torino CeTeM

A.A. 2001/2002 APA - Grafi 2 35

Esempio (8)

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

Si considera l'arco (i,h).Non lo si inserisce in A.

A.A. 2001/2002 APA - Grafi 2 36

Esempio (9)

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

Si considera l'arco (b,c).Lo si inserisce in A.

Page 19: Grafi: alberi di copertura minimicorsiadistanza.polito.it/corsi/pdf/09EIPN/pdf/2004/09- grafi2.pdf · un albero di copertura minimo produce ancora un sottoinsieme di un albero di

Algoritmi e Programmazione Avanzata

05EIP

© Politecnico di Torino Pagina 19 di 32 Data ultima revisione 20/10/2003 Autore : CORNO & SONZA REORDA

Politecnico di Torino CeTeM

A.A. 2001/2002 APA - Grafi 2 37

Esempio (10)

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

Si considera l'arco (a,h).Non lo si inserisce in A.

A.A. 2001/2002 APA - Grafi 2 38

Esempio (11)

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

Si considera l'arco (d,e).Lo si inserisce in A.

Page 20: Grafi: alberi di copertura minimicorsiadistanza.polito.it/corsi/pdf/09EIPN/pdf/2004/09- grafi2.pdf · un albero di copertura minimo produce ancora un sottoinsieme di un albero di

Algoritmi e Programmazione Avanzata

05EIP

© Politecnico di Torino Pagina 20 di 32 Data ultima revisione 20/10/2003 Autore : CORNO & SONZA REORDA

Politecnico di Torino CeTeM

A.A. 2001/2002 APA - Grafi 2 39

Esempio (12)

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

Si considera l'arco (e,f).Non lo si inserisce in A.

A.A. 2001/2002 APA - Grafi 2 40

Esempio (13)

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

Si considera l'arco (b,h).Non lo si inserisce in A.

Page 21: Grafi: alberi di copertura minimicorsiadistanza.polito.it/corsi/pdf/09EIPN/pdf/2004/09- grafi2.pdf · un albero di copertura minimo produce ancora un sottoinsieme di un albero di

Algoritmi e Programmazione Avanzata

05EIP

© Politecnico di Torino Pagina 21 di 32 Data ultima revisione 20/10/2003 Autore : CORNO & SONZA REORDA

Politecnico di Torino CeTeM

A.A. 2001/2002 APA - Grafi 2 41

Esempio (14)

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

Si considera l'arco (d,f).Non lo si inserisce in A.

A.A. 2001/2002 APA - Grafi 2 42

Complessità

MST-Kruskal(G,w)1 A←∅2 for ogni vertice v∈V[G]3 do Make-Set(V)4 ordina gli archi di E per peso w non decrescente5 for ogni arco (u,v)∈E, in ordine di peso non decrescente6 do if Find-Set(u)≠Find-Set(v)7 then A←A∪{(u,v)}8 Union(u,v)9 return A

Righe 1,2,3 (inizializzazione):O(V)

Righe 5-8: il ciclo è ripetuto

E volte

Ogni operazione sugli insiemi ha

costo O(lg E)

Riga 4 (ordinamento):

O(E lg E)

Page 22: Grafi: alberi di copertura minimicorsiadistanza.polito.it/corsi/pdf/09EIPN/pdf/2004/09- grafi2.pdf · un albero di copertura minimo produce ancora un sottoinsieme di un albero di

Algoritmi e Programmazione Avanzata

05EIP

© Politecnico di Torino Pagina 22 di 32 Data ultima revisione 20/10/2003 Autore : CORNO & SONZA REORDA

Politecnico di Torino CeTeM

A.A. 2001/2002 APA - Grafi 2 43

Complessità

Il tempo di esecuzione dell'algoritmo di Kruskal è O(E lg E).

A.A. 2001/2002 APA - Grafi 2 44

Sommario

IntroduzioneAlgoritmo genericoAlgoritmo di KruskalAlgoritmo di Prim.

Page 23: Grafi: alberi di copertura minimicorsiadistanza.polito.it/corsi/pdf/09EIPN/pdf/2004/09- grafi2.pdf · un albero di copertura minimo produce ancora un sottoinsieme di un albero di

Algoritmi e Programmazione Avanzata

05EIP

© Politecnico di Torino Pagina 23 di 32 Data ultima revisione 20/10/2003 Autore : CORNO & SONZA REORDA

Politecnico di Torino CeTeM

A.A. 2001/2002 APA - Grafi 2 45

Algoritmo di PrimAnche l'algoritmo di Prim segue lo schema proposto dall'algoritmo generico, utilizzando un meccanismo per la scelta degli archi basato sul teorema introdotto in precedenza.L'algoritmo parte da un nodo radice r ed espande ad ogni passo l'albero di copertura minimo A, sino a che questo non copre tutti i vertici.Ad ogni passo viene aggiunto all'albero un arco leggero che collega un vertice in A ad un vertice in V-A.Per la scelta dell'arco leggero si usa una coda prioritaria.

A.A. 2001/2002 APA - Grafi 2 46

Coda prioritaria

Ad ogni istante contiene tutti i vertici non appartenenti all'albero A.La posizione di ciascun vertice v nella coda dipende dal valore di un campo chiave key[v], corrispondente al minimo tra i pesi degli archi che collegano v ad un qualunque vertice in A. Se v non è collegato a nessun vertice in A, allora key[v]=∞.

Page 24: Grafi: alberi di copertura minimicorsiadistanza.polito.it/corsi/pdf/09EIPN/pdf/2004/09- grafi2.pdf · un albero di copertura minimo produce ancora un sottoinsieme di un albero di

Algoritmi e Programmazione Avanzata

05EIP

© Politecnico di Torino Pagina 24 di 32 Data ultima revisione 20/10/2003 Autore : CORNO & SONZA REORDA

Politecnico di Torino CeTeM

A.A. 2001/2002 APA - Grafi 2 47

Pseudo-codiceMST-Prim(G,w,r)

1 Q←V[G]2 for ogni u∈Q3 do key[u]←∞4 key[r]←05 π[r]←NIL6 while Q≠∅7 do u←Extract-Min(Q)8 for ogni v∈Adj[u]9 do if v∈ Q e w(u,v)<key[v]10 then π[v]←u11 key[v]←w(u,v)

A.A. 2001/2002 APA - Grafi 2 48

Pseudo-codiceMST-Prim(G,w,r)

1 Q←V[G]2 for ogni u∈Q3 do key[u]←∞4 key[r]←05 π[r]←NIL6 while Q≠∅7 do u←Extract-Min(Q)8 for ogni v∈Adj[u]9 do if v∈ Q e w(u,v)<key[v]10 then π[v]←u11 key[v]←w(u,v)

Inizializzazione della coda: tutti i vertici sono inseriti.

Per ogni vertice v≠r key[v]=∞; key[r]=0.

Page 25: Grafi: alberi di copertura minimicorsiadistanza.polito.it/corsi/pdf/09EIPN/pdf/2004/09- grafi2.pdf · un albero di copertura minimo produce ancora un sottoinsieme di un albero di

Algoritmi e Programmazione Avanzata

05EIP

© Politecnico di Torino Pagina 25 di 32 Data ultima revisione 20/10/2003 Autore : CORNO & SONZA REORDA

Politecnico di Torino CeTeM

A.A. 2001/2002 APA - Grafi 2 49

Pseudo-codiceMST-Prim(G,w,r)

1 Q←V[G]2 for ogni u∈Q3 do key[u]←∞4 key[r]←05 π[r]←NIL6 while Q≠∅7 do u←Extract-Min(Q)8 for ogni v∈Adj[u]9 do if v∈ Q e w(u,v)<key[v]10 then π[v]←u11 key[v]←w(u,v)

Il vettore π contiene l'indice del vertice padre di ciascun vertice in A.

Per i vertici fuori da A, π èindefinito.

A.A. 2001/2002 APA - Grafi 2 50

Pseudo-codiceMST-Prim(G,w,r)

1 Q←V[G]2 for ogni u∈Q3 do key[u]←∞4 key[r]←05 π[r]←NIL6 while Q≠∅7 do u←Extract-Min(Q)8 for ogni v∈Adj[u]9 do if v∈ Q e w(u,v)<key[v]10 then π[v]←u11 key[v]←w(u,v)

Estrae un vertice dalla coda e lo aggiunge all'albero.

Aggiorna key e π.

Page 26: Grafi: alberi di copertura minimicorsiadistanza.polito.it/corsi/pdf/09EIPN/pdf/2004/09- grafi2.pdf · un albero di copertura minimo produce ancora un sottoinsieme di un albero di

Algoritmi e Programmazione Avanzata

05EIP

© Politecnico di Torino Pagina 26 di 32 Data ultima revisione 20/10/2003 Autore : CORNO & SONZA REORDA

Politecnico di Torino CeTeM

A.A. 2001/2002 APA - Grafi 2 51

Esempio (0)

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

Il vertice a è la radice.

A.A. 2001/2002 APA - Grafi 2 52

Esempio (1)

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

Il vertice b viene aggiunto all'albero.

Page 27: Grafi: alberi di copertura minimicorsiadistanza.polito.it/corsi/pdf/09EIPN/pdf/2004/09- grafi2.pdf · un albero di copertura minimo produce ancora un sottoinsieme di un albero di

Algoritmi e Programmazione Avanzata

05EIP

© Politecnico di Torino Pagina 27 di 32 Data ultima revisione 20/10/2003 Autore : CORNO & SONZA REORDA

Politecnico di Torino CeTeM

A.A. 2001/2002 APA - Grafi 2 53

Esempio (2)

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

Il vertice c viene aggiunto all'albero.

Anche il vertice h poteva essere scelto.

A.A. 2001/2002 APA - Grafi 2 54

Esempio (3)

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

Il vertice i viene aggiunto all'albero.

Page 28: Grafi: alberi di copertura minimicorsiadistanza.polito.it/corsi/pdf/09EIPN/pdf/2004/09- grafi2.pdf · un albero di copertura minimo produce ancora un sottoinsieme di un albero di

Algoritmi e Programmazione Avanzata

05EIP

© Politecnico di Torino Pagina 28 di 32 Data ultima revisione 20/10/2003 Autore : CORNO & SONZA REORDA

Politecnico di Torino CeTeM

A.A. 2001/2002 APA - Grafi 2 55

Esempio (4)

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

Il vertice f viene aggiunto all'albero.

A.A. 2001/2002 APA - Grafi 2 56

Esempio (5)

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

Il vertice g viene aggiunto all'albero.

Page 29: Grafi: alberi di copertura minimicorsiadistanza.polito.it/corsi/pdf/09EIPN/pdf/2004/09- grafi2.pdf · un albero di copertura minimo produce ancora un sottoinsieme di un albero di

Algoritmi e Programmazione Avanzata

05EIP

© Politecnico di Torino Pagina 29 di 32 Data ultima revisione 20/10/2003 Autore : CORNO & SONZA REORDA

Politecnico di Torino CeTeM

A.A. 2001/2002 APA - Grafi 2 57

Esempio (6)

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

Il vertice h viene aggiunto all'albero.

A.A. 2001/2002 APA - Grafi 2 58

Esempio (7)

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

Il vertice d viene aggiunto all'albero.

Page 30: Grafi: alberi di copertura minimicorsiadistanza.polito.it/corsi/pdf/09EIPN/pdf/2004/09- grafi2.pdf · un albero di copertura minimo produce ancora un sottoinsieme di un albero di

Algoritmi e Programmazione Avanzata

05EIP

© Politecnico di Torino Pagina 30 di 32 Data ultima revisione 20/10/2003 Autore : CORNO & SONZA REORDA

Politecnico di Torino CeTeM

A.A. 2001/2002 APA - Grafi 2 59

Esempio (8)

b c d

h g f

a ei

4

8

11

7 6

1 2

2

8 7

4 14

10

9

Il vertice e viene aggiunto all'albero.

A.A. 2001/2002 APA - Grafi 2 60

ComplessitàMST-Prim(G,w,r)

1 Q←V[G]2 for ogni u∈Q3 do key[u]←∞4 key[r]←05 π[r]←NIL6 while Q≠∅7 do u←Extract-Min(Q)8 for ogni v∈Adj[u]9 do if v∈ Q e w(u,v)<key[v]10 then π[v]←u11 key[v]←w(u,v)

Se per realizzare la coda con priorità si usa uno

heap l'inizializzazione si esegue con Build-Heap:

O(V)

Page 31: Grafi: alberi di copertura minimicorsiadistanza.polito.it/corsi/pdf/09EIPN/pdf/2004/09- grafi2.pdf · un albero di copertura minimo produce ancora un sottoinsieme di un albero di

Algoritmi e Programmazione Avanzata

05EIP

© Politecnico di Torino Pagina 31 di 32 Data ultima revisione 20/10/2003 Autore : CORNO & SONZA REORDA

Politecnico di Torino CeTeM

A.A. 2001/2002 APA - Grafi 2 61

ComplessitàMST-Prim(G,w,r)

1 Q←V[G]2 for ogni u∈Q3 do key[u]←∞4 key[r]←05 π[r]←NIL6 while Q≠∅7 do u←Extract-Min(Q)8 for ogni v∈Adj[u]9 do if v∈ Q e w(u,v)<key[v]10 then π[v]←u11 key[v]←w(u,v)

Il ciclo viene ripetuto V volte.

Extract-Min ha complessitàO(lg V).

A.A. 2001/2002 APA - Grafi 2 62

ComplessitàMST-Prim(G,w,r)

1 Q←V[G]2 for ogni u∈Q3 do key[u]←∞4 key[r]←05 π[r]←NIL6 while Q≠∅7 do u←Extract-Min(Q)8 for ogni v∈Adj[u]9 do if v∈ Q e w(u,v)<key[v]10 then π[v]←u11 key[v]←w(u,v)

Il ciclo viene ripetuto O(E) volte.

Richiede un riaggiustamento dello heap, con complessità

O(lg V).

Page 32: Grafi: alberi di copertura minimicorsiadistanza.polito.it/corsi/pdf/09EIPN/pdf/2004/09- grafi2.pdf · un albero di copertura minimo produce ancora un sottoinsieme di un albero di

Algoritmi e Programmazione Avanzata

05EIP

© Politecnico di Torino Pagina 32 di 32 Data ultima revisione 20/10/2003 Autore : CORNO & SONZA REORDA

Politecnico di Torino CeTeM

A.A. 2001/2002 APA - Grafi 2 63

Complessità

Il tempo di esecuzione dell'algoritmo di Prim è O(V lg V + E lg V) = O(E lg V).Usando uno heap di Fibonacci la complessità scende a O(E + V lg V).