1 / 36

Alberi di copertura minimi

Alberi di copertura minimi. 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 agli archi di T sia minima . L’albero T è detto albero di copertura minimo ( minimum spanning tree , MST) di G.

sonya-foley
Télécharger la présentation

Alberi di copertura minimi

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Alberi di copertura minimi

  2. 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 agli archi di T sia minima. L’albero T è detto albero di copertura minimo (minimum spanning tree, MST) di G.

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

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

  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 ifFind-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 contenente v Union(u,v): unisce i due insiemi che contengono u e v

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  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 G1(V1,E1)  G2(V2,E2) - partizione di G’ in due componenti non connesse e  E arco di peso minimo che connette G1 e G2 Allora anche G’(V,E’ {e}) è un sottografo di qualche MST

  23. Kruskal: correttezza e’ G1 G2 e Sia T’ un albero di copertura contenente e’, con w(e’)w(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à 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) T(V,E) = O(V) + O(E log E) + O(E log E) = O(E log E)

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

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

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

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

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

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

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

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

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

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

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

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

More Related