alberi di copertura minimi. dato un grafo pesato g = (v,e), si richiede di trovare un albero t =...
TRANSCRIPT
![Page 1: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070313/5542eb72497959361e8d91ce/html5/thumbnails/1.jpg)
Alberi di copertura
minimi
![Page 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](https://reader036.vdocuments.pub/reader036/viewer/2022070313/5542eb72497959361e8d91ce/html5/thumbnails/2.jpg)
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.
![Page 3: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070313/5542eb72497959361e8d91ce/html5/thumbnails/3.jpg)
MST: esempio
e
d
h
b
a
h
c
i
f
8 7
1 2
9
10
14
4
8
117
2
64
![Page 4: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070313/5542eb72497959361e8d91ce/html5/thumbnails/4.jpg)
MST: esempio
e
d
h
b
a
h
c
i
f
8 7
1 2
9
10
14
4
8
117
2
64
![Page 5: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070313/5542eb72497959361e8d91ce/html5/thumbnails/5.jpg)
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 decrescentiforeach (u,v) E[G] in ordine di peso non decr. do
if Find-Set(u) Find-Set(v) then A = A {(u,v)}
Union(u,v)return A
Make-Set(v): crea un insieme con unico membro vFind-Set(v): restituisce il rappresentante dell’insieme contenenete
v Union(u,v): unisce i due insiemi che contengono u e v
![Page 6: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070313/5542eb72497959361e8d91ce/html5/thumbnails/6.jpg)
Kruskal: esempio
e
d
h
b
a
h
c
i
f
8 7
1 2
9
10
14
4
8
117
2
64
![Page 7: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070313/5542eb72497959361e8d91ce/html5/thumbnails/7.jpg)
Kruskal: esempio
e
d
h
b
a
h
c
i
f
8 7
1 2
9
10
14
4
8
117
2
64
![Page 8: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070313/5542eb72497959361e8d91ce/html5/thumbnails/8.jpg)
Kruskal: esempio
e
d
h
b
a
h
c
i
f
8 7
1 2
9
10
14
4
8
117
2
64
![Page 9: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070313/5542eb72497959361e8d91ce/html5/thumbnails/9.jpg)
Kruskal: esempio
e
d
h
b
a
h
c
i
f
8 7
1 2
9
10
14
4
8
117
2
64
![Page 10: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070313/5542eb72497959361e8d91ce/html5/thumbnails/10.jpg)
Kruskal: esempio
e
d
h
b
a
h
c
i
f
8 7
1 2
9
10
14
4
8
117
2
64
![Page 11: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070313/5542eb72497959361e8d91ce/html5/thumbnails/11.jpg)
Kruskal: esempio
e
d
h
b
a
h
c
i
f
8 7
1 2
9
10
14
4
8
117
2
64
![Page 12: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070313/5542eb72497959361e8d91ce/html5/thumbnails/12.jpg)
Kruskal: esempio
e
d
h
b
a
h
c
i
f
8 7
1 2
9
10
14
4
8
117
2
64
![Page 13: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070313/5542eb72497959361e8d91ce/html5/thumbnails/13.jpg)
Kruskal: esempio
e
d
h
b
a
h
c
i
f
8 7
1 2
9
10
14
4
8
117
2
64
![Page 14: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070313/5542eb72497959361e8d91ce/html5/thumbnails/14.jpg)
Kruskal: esempio
e
d
h
b
a
h
c
i
f
8 7
1 2
9
10
14
4
8
117
2
64
![Page 15: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070313/5542eb72497959361e8d91ce/html5/thumbnails/15.jpg)
Kruskal: esempio
e
d
h
b
a
h
c
i
f
8 7
1 2
9
10
14
4
8
117
2
64
![Page 16: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070313/5542eb72497959361e8d91ce/html5/thumbnails/16.jpg)
Kruskal: esempio
e
d
h
b
a
h
c
i
f
8 7
1 2
9
10
14
4
8
117
2
64
![Page 17: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070313/5542eb72497959361e8d91ce/html5/thumbnails/17.jpg)
Kruskal: esempio
e
d
h
b
a
h
c
i
f
8 7
1 2
9
10
14
4
8
117
2
64
![Page 18: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070313/5542eb72497959361e8d91ce/html5/thumbnails/18.jpg)
Kruskal: esempio
e
d
h
b
a
h
c
i
f
8 7
1 2
9
10
14
4
8
117
2
64
![Page 19: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070313/5542eb72497959361e8d91ce/html5/thumbnails/19.jpg)
Kruskal: esempio
e
d
h
b
a
h
c
i
f
8 7
1 2
9
10
14
4
8
117
2
64
![Page 20: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070313/5542eb72497959361e8d91ce/html5/thumbnails/20.jpg)
Kruskal: esempio
e
d
h
b
a
h
c
i
f
8 7
1 2
9
10
14
4
8
117
2
64
![Page 21: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070313/5542eb72497959361e8d91ce/html5/thumbnails/21.jpg)
Kruskal: esempio
e
d
h
b
a
h
c
i
f
8 7
1 2
9
10
14
4
8
117
2
64
![Page 22: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070313/5542eb72497959361e8d91ce/html5/thumbnails/22.jpg)
Kruskal: correttezzaTeoremaSianoG(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
![Page 23: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070313/5542eb72497959361e8d91ce/html5/thumbnails/23.jpg)
Kruskal: correttezza
G1 G2
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’.
![Page 24: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070313/5542eb72497959361e8d91ce/html5/thumbnails/24.jpg)
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)
![Page 25: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070313/5542eb72497959361e8d91ce/html5/thumbnails/25.jpg)
MST: algoritmo di Prim
MST-Prim(G, w, r)Q = V[G]foreach u Q do key[u] = key[r] = 0[r] = nilwhile 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
![Page 26: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070313/5542eb72497959361e8d91ce/html5/thumbnails/26.jpg)
Prim: esempio
e
d
h
b
a
h
c
i
f
8 7
1 2
9
10
14
4
8
117
2
64
![Page 27: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070313/5542eb72497959361e8d91ce/html5/thumbnails/27.jpg)
Prim: esempio
e
d
h
b
a
h
c
i
f
8 7
1 2
9
10
14
4
8
117
2
64
![Page 28: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070313/5542eb72497959361e8d91ce/html5/thumbnails/28.jpg)
Prim: esempio
e
d
h
b
a
h
c
i
f
8 7
1 2
9
10
14
4
8
117
2
64
![Page 29: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070313/5542eb72497959361e8d91ce/html5/thumbnails/29.jpg)
Prim: esempio
e
d
h
b
a
h
c
i
f
8 7
1 2
9
10
14
4
8
117
2
64
![Page 30: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070313/5542eb72497959361e8d91ce/html5/thumbnails/30.jpg)
Prim: esempio
e
d
h
b
a
h
c
i
f
8 7
1 2
9
10
14
4
8
117
2
64
![Page 31: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070313/5542eb72497959361e8d91ce/html5/thumbnails/31.jpg)
Prim: esempio
e
d
h
b
a
h
c
i
f
8 7
1 2
9
10
14
4
8
117
2
64
![Page 32: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070313/5542eb72497959361e8d91ce/html5/thumbnails/32.jpg)
Prim: esempio
e
d
h
b
a
h
c
i
f
8 7
1 2
9
10
14
4
8
117
2
64
![Page 33: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070313/5542eb72497959361e8d91ce/html5/thumbnails/33.jpg)
Prim: esempio
e
d
h
b
a
h
c
i
f
8 7
1 2
9
10
14
4
8
117
2
64
![Page 34: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070313/5542eb72497959361e8d91ce/html5/thumbnails/34.jpg)
Prim: esempio
e
d
h
b
a
h
c
i
f
8 7
1 2
9
10
14
4
8
117
2
64
![Page 35: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070313/5542eb72497959361e8d91ce/html5/thumbnails/35.jpg)
Prim: esempio
e
d
h
b
a
h
c
i
f
8 7
1 2
9
10
14
4
8
117
2
64
![Page 36: 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](https://reader036.vdocuments.pub/reader036/viewer/2022070313/5542eb72497959361e8d91ce/html5/thumbnails/36.jpg)
Prim: complessità
T(V,E) = O(V) + O(V log V) + O(E) = O(E + V log V)