La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Alberi di copertura minimi. Dato un grafo pesato G = (V,E), si richiede di trovare un albero T = (V,E’), E’  E, tale che la somma dei pesi associati.

Presentazioni simili


Presentazione sul tema: "Alberi di copertura minimi. Dato un grafo pesato G = (V,E), si richiede di trovare un albero T = (V,E’), E’  E, tale che la somma dei pesi associati."— Transcript della presentazione:

1 Alberi di copertura minimi

2 Dato un grafo pesato G = (V,E), si richiede di trovare un albero T = (V,E’), E’  E, tale che la somma dei pesi associati agli archi di T sia minima. L’albero T è detto albero di copertura minimo (minimum spanning tree, MST) di G.

3 MST: esempio e d h b a h c i f 87 12 9 10 14 4 8 11 7 2 6 4

4 MST: esempio e d h b a h c i f 87 12 9 10 14 4 8 11 7 2 6 4

5 MST - Algoritmo di Kruskal MST-Kruskal(G,w) A =  foreach vertice v  V[G] do Make-Set(v) ordina gli archi di E[G] per pesi non decrescenti foreach (u,v)  E[G] in ordine di peso non decr. do if Find-Set(u)  Find-Set(v) thenA = A  {(u,v)} Union(u,v) return A Make-Set(v): crea un insieme con unico membro v Find-Set(v): restituisce il rappresentante dell’insieme contenenete v Union(u,v): unisce i due insiemi che contengono u e v

6 Kruskal: esempio e d h b a h c i f 87 12 9 10 14 4 8 11 7 2 6 4

7 Kruskal: esempio e d h b a h c i f 87 12 9 10 14 4 8 11 7 2 6 4

8 Kruskal: esempio e d h b a h c i f 87 12 9 10 14 4 8 11 7 2 6 4

9 Kruskal: esempio e d h b a h c i f 87 12 9 10 14 4 8 11 7 2 6 4

10 Kruskal: esempio e d h b a h c i f 87 12 9 10 14 4 8 11 7 2 6 4

11 Kruskal: esempio e d h b a h c i f 87 12 9 10 14 4 8 11 7 2 6 4

12 Kruskal: esempio e d h b a h c i f 87 12 9 10 14 4 8 11 7 2 6 4

13 Kruskal: esempio e d h b a h c i f 87 12 9 10 14 4 8 11 7 2 6 4

14 Kruskal: esempio e d h b a h c i f 87 12 9 10 14 4 8 11 7 2 6 4

15 Kruskal: esempio e d h b a h c i f 87 12 9 10 14 4 8 11 7 2 6 4

16 Kruskal: esempio e d h b a h c i f 87 12 9 10 14 4 8 11 7 2 6 4

17 Kruskal: esempio e d h b a h c i f 87 12 9 10 14 4 8 11 7 2 6 4

18 Kruskal: esempio e d h b a h c i f 87 12 9 10 14 4 8 11 7 2 6 4

19 Kruskal: esempio e d h b a h c i f 87 12 9 10 14 4 8 11 7 2 6 4

20 Kruskal: esempio e d h b a h c i f 87 12 9 10 14 4 8 11 7 2 6 4

21 Kruskal: esempio e d h b a h c i f 87 12 9 10 14 4 8 11 7 2 6 4

22 Kruskal: correttezza Teorema Siano G(V,E) il grafo dato in input G’(V,E’) sottografo di qualche MST di G, contenente tutti i vertici e alcuni archi di G G 1 (V 1,E 1 )  G 2 (V 2,E 2 ) partizione di G’ in due componenti non connesse e  Earco di peso minimo che connette G 1 e G 2 Allora anche G’(V,E’  {e}) è un sottografo di qualche MST

23 Kruskal: correttezza G1G1 G2G2 e e’ Sia T’ un albero di copertura contenente e’, con w(e’)  (e). Se si sostituisce e’ con e si ottiene un altro albero di copertura T con w(T’)  w(T). Quindi T è un albero di copertura di costo inferiore a T’.

24 Kruskal: complessità T(V,E) = O(V) + O(E log E) + O(E log  E) = O(E log E) Inizializzazione: O(V) Ordinamento archi: O(E lg E) Operazioni nella foresta di insiemi disgiunti: O(E) Tempo complessivmante richiesto: O(E  (E,V)) = O(E lg* E)

25 MST: algoritmo di Prim MST-Prim(G, w, r) Q = V[G] foreach u  Q do key[u] =  key[r] = 0  [r] = nil while Q   do u = Extract-Min(Q) foreach v  Adj(u) do if v  Q and w(u,v) < key[v] then  [v] = u key[v] = w(u,v) Nell’algoritmo di Prim gli archi dell’insieme in costruzione formano sempre un unico albero

26 Prim: esempio e d h b a h c i f 87 12 9 10 14 4 8 11 7 2 6 4

27 Prim: esempio e d h b a h c i f 87 12 9 10 14 4 8 11 7 2 6 4

28 Prim: esempio e d h b a h c i f 87 12 9 10 14 4 8 11 7 2 6 4

29 Prim: esempio e d h b a h c i f 87 12 9 10 14 4 8 11 7 2 6 4

30 Prim: esempio e d h b a h c i f 87 12 9 10 14 4 8 11 7 2 6 4

31 Prim: esempio e d h b a h c i f 87 12 9 10 14 4 8 11 7 2 6 4

32 Prim: esempio e d h b a h c i f 87 12 9 10 14 4 8 11 7 2 6 4

33 Prim: esempio e d h b a h c i f 87 12 9 10 14 4 8 11 7 2 6 4

34 Prim: esempio e d h b a h c i f 87 12 9 10 14 4 8 11 7 2 6 4

35 Prim: esempio e d h b a h c i f 87 12 9 10 14 4 8 11 7 2 6 4

36 Prim: complessità T(V,E) = O(V) + O(V log V) + O(E) = O(E + V log V)


Scaricare ppt "Alberi di copertura minimi. Dato un grafo pesato G = (V,E), si richiede di trovare un albero T = (V,E’), E’  E, tale che la somma dei pesi associati."

Presentazioni simili


Annunci Google