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.

Slides:



Advertisements
Presentazioni simili
Algoritmi e Strutture dati Mod B
Advertisements

Strutture dati per insiemi disgiunti
Master Bioinformatica 2002: Grafi Problema: cammini minimi da tutti i vertici a tutti i vertici Dato un grafo pesato G =(V,E,w), trovare un cammino minimo.
Introduzione ai grafi Grafo diretto e non diretto
Il problema del minimo albero ricoprente in un grafo non cooperativo
Cammini minimi con una sorgente
Breath-first search Visita in ampiezza di un grafo Algoritmo Esempio
Alberi binari di ricerca
Breath-first search Visita in ampiezza di un grafo Algoritmo Esempio
Heap binomiali.
Cammini minimi con sorgente singola
Insiemi disgiunti.
Il problema del minimo albero ricoprente in un grafo con archi privati.
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmi di Prim e di Borůvka Algoritmi.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 05/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 28/04/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
U V U V (a) |cfc|=2 prima e dopo (b) |cfc|=2 prima e |cfc|=1 dopo
Il problema del minimo albero ricoprente in un grafo con archi privati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmi di Prim e di Borůvka Algoritmi.
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmi di Prim e di Borůvka Algoritmi.
Algoritmi e Strutture Dati
Interrogazioni su un albero binario di ricerca Search(S,k) – dato un insieme S ed un valore chiave k restituisce un puntatore x ad un elemento in S tale.
Algoritmi e Strutture Dati Alberi Binari di Ricerca.
Algoritmi e Strutture Dati (Mod. B)
Algoritmi e Strutture Dati (Mod. A)
Algoritmi e Strutture Dati (Mod. B)
Trovare il percorso minimo da b ad ogni altro vertice
Algoritmi e Strutture Dati (Mod. B)
Algoritmo di Kruskal Parte con tutti i vertici e nessun lato (sottografo aciclico, o foresta, ricoprente) Ordina i lati per costo non decrescente.
Sottoinsiemi disgiunti
Heap binomiali Gli heap binomiali sono strutture dati su cui si possono eseguire efficientemente le operazioni: Make(H) : crea uno heap vuoto Insert(H,
Algoritmi greedy Gli algoritmi greedy in genere non sono esatti, cioè determinano soluzioni non necessariamente ottime Per il problema dell’albero ricoprente.
Fibonacci Heaps e il loro utilizzo nell’algoritmo di Prim
Prof. Cerulli – Dott.ssa Gentili
Prof. Cerulli – Dott.ssa Gentili
2. Grafi.
Componenti fortemente connesse
Cammini minimi tra tutte le coppie
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmi di Prim e di Borůvka Algoritmi.
Web Communities and their identificaton
ND-partizione (A) n   A  somma  0 M  1/2 (  a i ) for i  1 to n do S[i]  choice ({true, false}) if S[i] then somma  somma + a i if somma > M then.
Cammini minimi da un sorgente
Ordinamento topologico Cammino minimo dalla sorgente
AlgoLab - Code unificabili Code unificabili con alberi binomiali Laboratorio di Algoritmi 02/03 Prof. Ugo de’ Liguoro.
AlgoLab - MST code binomiali Algoritmi per il calcolo di MST: uso di code unificabili Laboratorio di Algoritmi 02/03 Prof. Ugo de’ Liguoro.
Alberi Alberi radicati : alberi liberi in cui un vertice è stato scelto come radice. Alberi liberi : grafi non orientati connessi e senza cicli. Alberi.
Ordinamento topologico
Olimpiadi di Informatica 2010 Giornate preparatorie
Capitolo 12 Minimo albero ricoprente: Algoritmo di Kruskal (*) Algoritmi e Strutture Dati.
Strutture dati per insiemi disgiunti Alberi di copertura minimi
Università degli Studi di Roma Tor Vergata
Capitolo 12 Minimo albero ricoprente Algoritmi e Strutture Dati.
algoritmi approssimati
Algoritmi elementari su grafi
Capitolo 12 Minimo albero ricoprente: Algoritmo di Kruskal Algoritmi e Strutture Dati.
Master Bioinformatica 2002: Visite di Grafi La struttura dati D è una PILA (STACK) Visita in profondità o Depth-First-Search (DFS)
Algoritmi approssimati. Algoritmi approssimati Per qualche problema NP-completo esistono algoritmi polinomiali che ritornano soluzioni “quasi ottime”.
Master Bioinformatica 2002: Visite di Grafi Algoritmi di visita Scopo: visitare tutti i vertici di un grafo per scoprirne proprietà di vario tipo. Alcune.
Grafi: rappresentazione e visita
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmo di Prim Algoritmi e Strutture.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmo di Prim Algoritmi e Strutture.
Capitolo 12 Minimo albero ricoprente: Algoritmo di Kruskal Algoritmi e Strutture Dati.
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi Albero ricoprente di costo minimo Lezione n°12.
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi Lezione n°10.
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi Lezione n°9.
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
Algoritmi Avanzati a.a.2012/2013 Prof.ssa Rossella Petreschi Albero Ricoprente Lezione n°9.
Insiemi disgiunti.
Transcript della presentazione:

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.

MST: esempio e d h b a h c i f

MST: esempio e d h b a h c i f

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

Kruskal: esempio e d h b a h c i f

Kruskal: esempio e d h b a h c i f

Kruskal: esempio e d h b a h c i f

Kruskal: esempio e d h b a h c i f

Kruskal: esempio e d h b a h c i f

Kruskal: esempio e d h b a h c i f

Kruskal: esempio e d h b a h c i f

Kruskal: esempio e d h b a h c i f

Kruskal: esempio e d h b a h c i f

Kruskal: esempio e d h b a h c i f

Kruskal: esempio e d h b a h c i f

Kruskal: esempio e d h b a h c i f

Kruskal: esempio e d h b a h c i f

Kruskal: esempio e d h b a h c i f

Kruskal: esempio e d h b a h c i f

Kruskal: esempio e d h b a h c i f

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

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’.

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)

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

Prim: esempio e d h b a h c i f

Prim: esempio e d h b a h c i f

Prim: esempio e d h b a h c i f

Prim: esempio e d h b a h c i f

Prim: esempio e d h b a h c i f

Prim: esempio e d h b a h c i f

Prim: esempio e d h b a h c i f

Prim: esempio e d h b a h c i f

Prim: esempio e d h b a h c i f

Prim: esempio e d h b a h c i f

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