Estensione di strutture dati e

Slides:



Advertisements
Presentazioni simili
Algoritmi e Strutture Dati
Advertisements

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Interrogazioni.
Capitolo 9 Il problema della gestione di insiemi disgiunti (Union-find) Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Alberi AVL (Adelson-Velskii.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Alberi AVL (Adelson-Velskii.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Rotazioni.
Capitolo 6 Alberi di ricerca Algoritmi e Strutture Dati.
Capitolo 9 Il problema della gestione di insiemi disgiunti (Union-find) Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Rotazioni.
Capitolo 9 Union-find Algoritmi e Strutture Dati.
Capitolo 9 Il problema della gestione di insiemi disgiunti (Union-find) Algoritmi e Strutture Dati.
Capitolo 6 Alberi di ricerca Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Prof.ssa Rossella Petreschi Lezione del 15 /10/2012 del Corso di Algoritmi e Strutture Dati Riferimenti: Paragrafo 7.4 del testo Kingston “Algorithms and.
Prof.ssa Rossella Petreschi Lezione del 15 /10/2012 del Corso di Algoritmica B-alberi Lezione n°5.
Prof.ssa Rossella Petreschi Lezione del 29/10/2012 del Corso di Algoritmi e Strutture Dati Riferimenti: Capitolo 19 del testo Cormen, Leiserson, Rivest,
Prog21 Alberi binari (radicati e ordinati) Il figlio destro della radice La radice Il figlio sinistro della radice Il padre del nodo 5.
Fondamenti di Informatica A - Massimo Bertozzi ALBERI E ALBERI BINARI DI RICERCA (BST)
Union-Find Moreno Marzolla Dip. di Scienze dell'Informazione Università di Bologna
Prof.ssa Rossella Petreschi Lezione del 29 /10/2014 del Corso di Algoritmica Lezione n°8.
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Alberi autoaggiustanti
Progettare algoritmi veloci usando strutture dati efficienti
Inserzione e Cancellazione
Progettare algoritmi veloci usando strutture dati efficienti
Alberi di ricerca di altezza logaritmica
Analisi di sequenze di operazioni Union-Find
Lezione n°9 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Lezione n°7 Prof.ssa Rossella Petreschi
Alberi binari Definizione Sottoalberi Padre, figli
Rappresentazione di alberi
Correzione 1° Esonero Lezione n°13
Rappresentazione di alberi binari
B-alberi e alberi autoaggiustanti
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Complessità ammortizzata degli algoritmi Union Find
Lezione n°14 Reti di flusso Prof.ssa Rossella Petreschi
La gestione degli insiemi disgiunti
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Lezione n°4 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
K4 è planare? E K3,3 e K5 sono planari? Sì!
UNION FIND Lezione n°8 Prof.ssa Rossella Petreschi
ABBINAMENTO Lezione n°13
Algoritmi e Strutture Dati
Rappresentazione di alberi
Algoritmi e Strutture Dati
Algoritmi per il flusso nelle reti
Algoritmi e Strutture Dati
Lezione n°6 Prof.ssa Rossella Petreschi
Introduzione agli Algoritmi e alle Strutture Dati
Gestione dinamica di tabelle
Progettare algoritmi veloci usando strutture dati efficienti
Automi e stringhe Lezione n°24 Prof.ssa Rossella Petreschi
Alberi di ricerca Lezione n°4
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Lezione n°7 Splay-Trees e Heaps Prof.ssa Rossella Petreschi
Il problema del flusso nelle reti
Insiemi disgiunti.
Algoritmi e Strutture Dati
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Unione per ranghi compressi
Tabelle dinamiche Lezione n°3
Analisi ammortizzata Lezione n°2
HeapSort Stesso approccio incrementale del selectionSort Tipo di dato
Transcript della presentazione:

Estensione di strutture dati e algoritmi Union-Find Lezione n°9 Prof.ssa Rossella Petreschi Lezione del 31/10/2012 del Corso di Algoritmi e Strutture Dati Riferimenti: Capitolo 14,21 del testo Cormen, Leiserson, Rivest, Stein “Introduzione agli algoritmi” Edizioni: Jackson Libri Capitolo 9 del testo Demetrescu, Finocchi, Italiano “Algoritmi e strutture dati” Edizioni: McGraw-Hill

Estensione di una struttura dati scelta della struttura dati di base; determinazione dell’informazione aggiuntiva e verifica che la stessa possa essere mantenuta attraverso le usuali operazioni di modifica della struttura dati scelta; sviluppo delle nuove operazioni. 2

Teorema di estensione su un AR bilanciato Sia a il campo aggiuntivo che estende un AR bilanciato di n nodi. Si supponga che il valore a, per ogni nodo x, possa essere calcolato in tempo costante usando solo le info di x, fs(x) e fd(x). a può essere mantenuta su tutto AR, per ogni sequenza di operazioni senza modificare il tempo O(logn). 3

Intervalli Un intervallo i è una coppia ordinata di numeri reali con estremo sinistro, es(i)=t1 ed estremo destro ed(i)=t2 Intervallo chiuso: t1≤ t ≤ t2 e t in R Qualsiasi coppia di intervalli i,i’soddisfa la proprietà di tricotomia degli intervalli: o i ed i’ si sovrappongono; o ed(i) < es(i’) o ed(i’) < es(i) 4

Alberi di intervalli Un albero di intervalli,AI, è un albero bilanciato dove ciascun nodo i memorizza un intervallo i rappresentato come coppia ordinata (es(i), ed(i)). Su un AI si esegue: inserisci un intervallo; elimina un intervallo; ricerca, se esiste, un intervallo i nell’albero che si sovrapponga ad un dato intervallo x L’inserimento nell’albero avviene analizzando l’estremo sinistro e la visita inorder fornisce gli intervalli ordinati rispetto all’estremo sinistro. 5

Estensione di alberi bilanciati scelta della struttura dati di base: alberi bilanciati (o AVL o red/black) dove ciascun nodo i memorizza un intervallo i , [es(i), ed(i)]; determinazione dell’informazione aggiuntiva e verifica che la stessa possa essere mantenuta attraverso le usuali operazioni di modifica della struttura dati scelta: max[i]: il più grande degli estremi destri degli intervalli memorizzati nel sottoalbero radicato in i; max[i]= max[max[fs(i)], max[fd(i)], ed[i]]; sviluppo delle nuove operazioni: ricerca (AR,x): a partire dalla radice e, al limite fino ad una foglia, confronta se x si sovrappone all’ intervallo corrente. Se nessun confronto ha dato risultato positivo anche dopo l’analisi della foglia, l’output sarà non trovato. 6

Ricerca(AR,x) Ricerca(AR,x) i = radice Fintantoche inil e x non si sovrappone a int[i] ripeti se fs(i) nil e max[fs(i)] ≥ es(x) allora i = fs(i) oppure i = fd(i) ritorna i 7

Correttezza di Ricerca(AR,x) La procedura Ricerca(AR,x) lavora correttamente. Prova Bisogna garantire che se i non esiste in c, cammino (fs/fd) scelto dopo un confronto, allora i non può appartenere al cammino non scelto. Se dopo il confronto la ricerca procede a dx e fs(i) nil, ovvero max (fs(i)) < es(x),allora per ogni i’ nel sottoalbero sinistro di i vale ed(i’) ≤ max (fs(i)) < es(x) e quindi, per la tricotomia, i’ ed x non possono intersecarsi. la ricerca procede a sx, ovvero max (fs(i)) ≥ es(x). Nel sottoalbero sinistro di i  almeno un i’tale che ed(i’) = max (fs(i)) ≥ es(x). Per hip. i’ ed x non si sovrappongono e quindi per la tricotomia ed(x) < es(i’). Per la struttura di AR si ha ed(x) < es(i’) ≤ es(i’’), per ogni i’’ nel sottoalbero destro di i . 8

Union and find La gestione dinamica ed efficiente di insiemi disgiunti (problematica dello Union -Find) opera considerando una qualunque sequenza delle seguenti tre operazioni: makesetx: creare un nuovo insieme x, di nome x, contenente un nuovo elemento x; findx: dato un elemento x, restituire il nome dell’insieme che lo contiene; unionA,B: dati due insiemi di nome A e B, costruire l’insieme unione di nome A. Notare che l’output dell’operazione union distrugge i due insiemi A e B di input. ASD-A.A.2011/2012

Alberi Quickfind Un albero Quickfind è un albero di altezza 1che rappresenta un insieme i cui elementi sono le foglie dell’albero. La radice contiene il nome dell’insieme. Quindi, i costi delle tre operazioni base saranno: makesetx: O(1) perché richiede la creazione di un semplice albero con due nodi; findx: O(1) perché è sufficiente restituire il nome del nodo radice, nodo identificato dal puntatore dal nodo foglia x al nodo padre,radice; unionA,B: O(n) perché aggancia tutte le foglie di B ad A,quindi union dipende dalla cardinalità di B che può essere dell’ordine di n, numero totale di elementi in AB L’occupazione totale di memoria della struttura dati è O(n) in qualunque istante della sequenza delle operazioni. ASD-A.A.2011/2012 10

Alberi Quickunion Un albero Quickunion è un albero di altezza qualunque che rappresenta un insieme i cui elementi sono i nodi dell’albero, radice compresa. Quindi, i costi delle tre operazioni base saranno: makesetx: O(1) perché richiede la creazione di un semplice albero composto da un solo nodo contenente x, che rappresenta sia il nome del nodo che quello dell’albero; uniona,b: O(1) perché rende la radice dell’albero B (contenente il nodo b) figlia della radice dell’albero A (contenente il nodo a); findx: O(n) perché restituisce la radice dell’albero contenente x. L’occupazione totale di memoria della struttura dati è O(n) in qualunque istante della sequenza delle operazioni. ASD-A.A.2011/2012 11

Alberi Quickfind bilanciati unionA,B: aggancia le foglie dell’albero di cardinalità minore alla radice dell’albero di cardinalità maggiore. Nella radice sono memorizzati nome e cardinalità dell’albero. Siano Tp e Td i due alberi quickfind bilanciati a cui appartiene una foglia f prima e dopo una operazione di union. La cardinalità dell’albero Td è almeno il doppio della cardinalità dell’albero Tp. (size (A)+size(B) ≥ 2size(Tp)) O(m+nlogn) è il tempo totale necessario per eseguire su un albero quickfind bilanciato una sequenza di: m operazioni find, n operazioni makeset, al più (n-1)operazioni union. ASD-A.A.2011/2012 12

perché O(m+nlogn)? Un nuovo albero, x, creato in tempo O(1), ha cardinalità 1. Ogni volta che la foglia x cambia padre, la dimensione dell’albero a cui appartiene per lo meno raddoppia:2,4,8……, quindi dopo k cambi di “paternità”, x si troverà in un albero di cardinalità almeno 2k. Poiché dopo k cambi di “paternità”, al termine della sequenza di operazioni, x potrà trovarsi in un albero di cardinalità al più n (n numero di makeset), ne segue che 2k ≤ n, ovvero che una foglia può al più subire log2n cambiamenti. Riassumendo: le operazioni di find e di makeset hanno costo costante, m dell’una e n dell’altra richiedono pertanto tempo 0(m+n). Le (n-1)operazioni union richiedono che al più tutte le n foglie subiscano il massimo dei cambiamenti possibili, ovvero O(nlog2n), da cui una sequenza di m operazioni find, n operazioni makeset e (n-1) operazioni union richiederà un tempo dell’ordine O(m+n) + O(nlog2n) = O(m + nlog2n). ASD-A.A.2011/2012 13

Alberi Quickunion bilanciati unionA,B: rende la radice dell’albero più basso figlia della radice dell’albero più alto. La radice dell’albero risultante conterrà sia il nome del nuovo albero (p.e. A) che la sua altezza (rank(A)). Durante una sequenza di operazioni makeset, union e find, l’altezza di un albero QuickUnion bilanciato è limitata superiormente da log2 n dove n è il numero totale di makeset. Prova: Siano T un albero QuickUnion bilanciato di radice x e dimensione size(x) ≤ n. Poiché size(x) ≥ 2rank(x) si ha che rank(x) ≤ log2n. ASD-A.A.2011/2012 14

size(x) ≥ 2rank(x) Si dimostra per induzione analizzando le differenti operazioni effettuate. Makeset(x).: costruisce un albero di altezza 0 con rank(x) = 0 e non modifica nessun albero preesistente, quindi : 2rank(x) = 20 =1. Find(x).: non modifica nulla del preesistente. Union(A,B).: Rank(B) < Rank(A), ovvero Rank(A∪B)= Rank(A) da cui ⎜A∪B⎜ = ⎜A⎜ + ⎜B⎜ ≥ 2 Rank(A) + 2 Rank(B) > 2 Rank(A) = 2 Rank(A∪B) Rank(A) < Rank(B) , ovvero Rank(A∪B)= Rank(B) da cui ⎜A∪B⎜ = ⎜A⎜ + ⎜B⎜ ≥ 2 Rank(A) + 2 Rank(B) > 2 Rank(B) = 2 Rank(A∪B) Rank(A) = Rank(B) , ovvero Rank(A∪B)= Rank(A) + 1 da cui ⎜A∪B⎜ = ⎜A⎜ + ⎜B⎜ ≥ 2 Rank(A) + 2 Rank(B) ≥ 2.2 Rank(A) = 2 Rank(A)+1 = 2 Rank(A∪B) ASD-A.A.2011/2012 15

Tempo O(n + mlogn) O(n+mlogn) è il tempo totale necessario per eseguire su un albero quickunion bilanciato una sequenza di: m operazioni find, n operazioni makeset, al più (n-1)operazioni union. Deriva dal fatto che rank(x)≤logn ASD-A.A.2011/2012 16