Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoGioia D andrea Modificato 10 anni fa
1
Capitolo 9 Il problema della gestione di insiemi disgiunti (Union-find) Algoritmi e Strutture Dati
2
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 2 Il problema Union-find Mantenere una collezione di insiemi disgiunti contenenti elementi distinti (ad esempio, interi in 1…n) durante lesecuzione di una sequenza di operazioni del seguente tipo: –makeSet(x) = crea il nuovo insieme x={x} –union(A,B) = unisce gli insiemi A e B in un unico insieme, di nome A, e distrugge i vecchi insiemi A e B (si suppone di accedere direttamente agli insiemi A,B) –find(x) = restituisce il nome dellinsieme contenente lelemento x (si suppone di accedere direttamente allelemento x) Applicazioni: algoritmo di Kruskal per la determinazione del minimo albero ricoprente di un grafo, ecc.
3
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 3 Esempio n = 6 Lelemento in grassetto dà il nome allinsieme D: Se ho n elementi, quante union posso fare al più? R: n-1
4
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 4 Approcci elementari basati su alberi
5
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 5 Alberi QuickFind Usiamo un foresta di alberi di altezza 1 per rappresentare gli insiemi disgiunti. In ogni albero: –Radice = nome dellinsieme –Foglie = elementi (incluso lelemento rappresentativo, il cui valore è nella radice e dà il nome allinsieme)
6
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 6 Realizzazione (1/2)
7
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 7 Realizzazione (2/2)
8
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 8 Esempio
9
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 9 Union di costo lineare Se eseguiamo n makeSet, n-1 union come sopra, ed m find (in qualsiasi ordine), il tempo richiesto dallintera sequenza di operazioni è O(n+1+2+…+(n-1)+m) = O(m+n 2 ) find e makeSet richiedono solo tempo O(1), ma particolari sequenze di union possono essere molto inefficienti: 1 operazione 2 operazioni 3 operazioni : n-2 operazioni n-1 operazioni
10
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 10 Alberi QuickUnion Usiamo una foresta di alberi di altezza anche maggiore di 1 per rappresentare gli insiemi disgiunti. In ogni albero: –Radice = elemento rappresentativo dellinsieme –Rimanenti nodi = altri elementi (escluso lelemento nella radice)
11
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 11 Realizzazione (1/2)
12
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 12 Realizzazione (2/2)
13
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 13 Esempio
14
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 14 Find di costo lineare Se eseguiamo n makeSet, n-1 union come sopra, seguite da m find, il tempo richiesto dallintera sequenza di operazioni è O(n+n-1+mn)=O(mn) union e makeSet richiedono solo tempo O(1), ma particolari sequenze di union possono generare un albero di altezza lineare, e quindi la find è molto inefficiente (costa n-1 nel caso peggiore)
15
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 15 (Piccolo) Approfondimento Domanda: quando è preferibile un approccio di tipo QuickFind rispetto ad un approccio di tipo QuickUnion? Risposta: Dipende dalla sequenza di operazioni, in particolare dal numero di operazioni di find. Più formalmente, i due approcci sono equivalenti quando O(m+n 2 )=O(mn), ovvero per m= (n); quindi: 1.QuickUnion è più efficiente per m=o(n), in quanto in tal caso mn=o(m+n 2 ); 2.Viceversa, QuickFind è più efficiente per m=ω(n), in quanto in tal caso m+n 2 =o(mn).
16
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 16 Euristiche di bilanciamento nelloperazione union
17
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 17 Bilanciamento in alberi QuickFind Nellunione degli insiemi A e B, attacchiamo gli elementi dellinsieme di cardinalità minore a quello di cardinalità maggiore, e se necessario modifichiamo la radice dellalbero ottenuto (cosiddetta union by size)
18
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 18 Realizzazione (1/3)
19
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 19 Realizzazione (2/3)
20
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 20 Realizzazione (3/3) T am = tempo per operazione ammortizzato sullintera sequenza di unioni (vedremo che una singola union può costare (n), ma lintera sequenza di n-1 union costa O(n log n))
21
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 21 Analisi ammortizzata (1/2) Vogliamo dimostrare che se eseguiamo m find, n makeSet, e le al più n-1 union, il tempo richiesto dallintera sequenza di operazioni è O(m + n log n) Idea della dimostrazione: È facile vedere che find e makeSet richiedono tempo Θ(m+n) Per analizzare le operazioni di union, quando creiamo un nodo gli assegniamo log n crediti in totale, assegniamo n log n crediti
22
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 22 Analisi ammortizzata (2/2) Quando eseguiamo una union, ogni nodo che cambia padre pagherà il tempo speso (pari ad O(1)) con uno dei crediti assegnati al nodo Osserviamo ora che ogni nodo può cambiare al più log n padri, poiché ogni volta che un nodo cambia padre la cardinalità dellinsieme al quale apparterrà è almeno doppia rispetto a quella dellinsieme cui apparteneva! I log n crediti assegnati al nodo sono quindi sufficienti per pagare tutti i cambiamenti di padre, e lintera sequenza di n union costa quindi O(n log n). Lintera sequenza di operazioni costa O(m+n+n log n)=O(m+n log n).
23
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 23 Bilanciamento in alberi QuickUnion Union by rank (o by height): nellunione degli insiemi A e B, rendiamo la radice dellalbero più basso figlia della radice dellalbero più alto rank(x) = altezza dellalbero di cui x è radice Il nome di questo nodo diventa A
24
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 24 Realizzazione (1/3)
25
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 25 Realizzazione (2/3)
26
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 26 Realizzazione (3/3)
27
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 27 Complessità computazionale Vogliamo dimostrare che se eseguiamo m find, n makeSet, e le al più n-1 union, il tempo richiesto dallintera sequenza di operazioni è O(n+m log n) Idea della dimostrazione: È facile vedere che union e makeSet richiedono tempo O(n) Per analizzare il costo delle operazioni di find, dimostreremo che laltezza degli alberi si mantiene logaritmica nel numero di elementi contenuti in un albero
28
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 28 Conseguenza del bilanciamento Lemma: Con la union by rank, un albero QuickUnion con radice x ha almeno 2 rank(x) nodi. –Se rank(A) > rank(B), allora: Dim: per induzione sulla lunghezza della sequenza di union che produce un albero. Passo base: albero prodotto da una sequenza di union di lunghezza 0, ovvero un albero iniziale: esso ha altezza 0, e la tesi è banalmente vero. Passo induttivo: Consideriamo un albero ottenuto eseguendo una sequenza di k operazioni di union, lultima delle quali sia union(A,B). A e B sono ottenuti con sequenze di union di lunghezza < k, e quindi per hp induttiva |A| 2 rank(A) e |B| 2 rank(B)3 –Se rank(A) < rank(B): simmetrico –Se rank(A) = rank(B):
29
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 29 Analisi (nel caso peggiore) Per la proprietà precedente, laltezza di un albero QuickUnion bilanciato è limitata superiormente da log n, con n = numero di makeSet Loperazione find richiede tempo O(log n) Lintera sequenza di operazioni costa O(n+m log n).
30
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 30 Un altro bilanciamento per QuickUnion Union by size: associamo ad ogni radice x un valore size(x) che è pari al numero di elementi contenuti nellinsieme (albero); quindi, nellunione degli insiemi A e B, rendiamo sempre la radice dellalbero con meno nodi figlia della radice dellalbero con più nodi. Stesse prestazioni di union by rank!
31
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 31 Riepilogo sul bilanciamento
32
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 32 Approfondimenti 1.Risolvere il problema union-find usando strutture dati elementari (vettori e liste lineari), e valutarne la complessità computazionale. 2.Dimostrare che in QuickUnion, la union by size fornisce le stesse prestazioni della union by rank. (Suggerimento: induzione sul fatto che laltezza di un albero è al più logaritmica nel numero di elementi contenuti). 3.Quando è preferibile un approccio di tipo QuickFind con union by size rispetto ad un approccio di tipo QuickUnion con union by rank?
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.