Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi

Slides:



Advertisements
Presentazioni simili
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 17/04/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Advertisements

Ordinamento in tempo lineare Il limite inferiore Ω(n log n) vale per tutti gli algoritmi di ordinamento generali, ossia per algoritmi che non fanno alcuna.
Prof.ssa Rossella Petreschi Lezione del 29/10/2012 del Corso di Algoritmi e Strutture Dati Riferimenti: Capitolo 19 del testo Cormen, Leiserson, Rivest,
Prof.ssa Rossella Petreschi Lezione del 29 /10/2014 del Corso di Algoritmica Lezione n°8.
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi Somme prefisse Lezione n°2.
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi
Alberi autoaggiustanti
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Lezione n°10 Prof.ssa Rossella Petreschi
Progettare algoritmi veloci usando strutture dati efficienti
Inserzione e Cancellazione
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Branch and Bound Lezione n°14 Prof.ssa Rossella Petreschi
Progettare algoritmi veloci usando strutture dati efficienti
Alberi di ricerca di altezza logaritmica
Analisi di sequenze di operazioni Union-Find
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
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
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
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
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 e Strutture dati a.a.2010/2011 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
Algoritmi e Strutture Dati
UNION FIND Lezione n°8 Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Rappresentazione di alberi
Lezione n°6 Prof.ssa Rossella Petreschi
Branch and Bound Lezione n°18 Prof.ssa Rossella Petreschi
Analisi ammortizzata Lezione n°3
Gestione dinamica di tabelle
Alberi n-ary Lezioni di C.
Backtracking Lezione n°13 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Progettare algoritmi veloci usando strutture dati efficienti
Estensione di strutture dati e
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi e Strutture Dati
Backtracking Lezione n°17 Prof.ssa Rossella Petreschi
Alberi e parentesi Lezione n°9
Esercizio Dato un albero binario, definiamo altezza minimale di un nodo v la minima distanza di v da una delle foglie del suo sottoalbero, definiamo invece.
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Grafi e problem solving
Lezione n°7 Splay-Trees e Heaps Prof.ssa Rossella Petreschi
concetti ed applicazioni
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
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
Transcript della presentazione:

Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi Rappresentazione di alberi binari Lezione n°6 Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi ASD a.a.2010/2011- Lezione n°6

Numeri di Catalano Il numero di alberi binari distinti con n nodi è pari al numero di Catalano di dimensione n: Cn = (2n su n)/(n+1), risultato dell’equazione ricorsiva Cn = ∑ Cs Cn-s-1, con 0 ≤ s ≤ n-1 e C0= C1=1 C2= 2 C3= 5 C4= 14 C5= 42 …………. ASD a.a.2010/2011- Lezione n°6 2

Quanti bit per un albero binario? Per rappresentare un qualunque albero binario con n nodi occorrono un numero di bit pari a log Cn= log[(2n su n)/ (n+1)] > > log[(22n)/ (2n(n+1))] per la (*) = 2n - O(logn) (*) (2n su n) = (2n)!/n!xn! = (2n/2n) x [(2n)!)/(nxnx(n-1)x(n-1)x…x1)] = = (1/2n)x[(2nx2n)/(nxn)]x[(2n-1)x(2n-2)/(n-1)x(n-1)]… [3x2] > > (1/2n)x[(2nx2n)/(nxn)]x[(2n-2)x(2n-2)/(n-1)x(n-1)]… [2x2] = = (1/2n) x [22n2/n2] x[22(n-1)2 /(n-1)2]… [22/12] = = (1/2n) x (22n) ASD a.a.2010/2011- Lezione n°6 3

Rappresentazione di un albero binario Rappresentazione implicita: mantiene le relazioni fra i nodi di un albero binario tramite una semplice regola matematica senza uso di memoria aggiuntiva (a parte quella necessaria ai dati). Esempio: rappresentazione dell’heap Utilizzabile solo per alcune classi di alberi binari Oltre all’array dei nodi usa un numero costante di celle aggiuntive Rappresentazione succinta:rappresentazione che impega una quantità di memoria pari al minimo necessario, a parte termini additivi di ordine inferiore Applicabile ad alberi binari qualunque Oltre all’array dei nodi usa strutture dati che richiedono 2n+o(n)bit aggiuntivi ASD a.a.2010/2011- Lezione n°6 4

Rappresentazione succinta per ampiezza b a b c d e f 1 1 1 0 1 0 0 1 1 0 0 0 0 nodo[0,…,n-1] pieno[0,…,2n] c d e f Se un nodo occupa la posizione i nell’array nodo, allora i bit corrispondenti ai suoi due figli occupano le posizioni 2i+1 e 2i+2 nell’array pieno Se un nodo occupa la posizione i nell’array nodo, allora pieno[2i+1]=1(pieno[ 2i+2]=1) iff il riferimento al fs (fd) non è null ASD a.a.2010/2011- Lezione n°6 5

Come navigare: Rank,Select a b c d e f 1 1 1 0 1 0 0 1 1 0 0 0 0 nodo[0,…,n-1] b[0,…,m-1] = pieno[0,…,2n]; a b c d Rank(b,i): numero di 1 presenti nel segmento b[0,i], per 0 ≤ i ≤ m-1; Select(b,i): posizione dell’(i+1)-esimo 1 in b, per 0 ≤ i ≤ Rank(b, m-1) e f Identificazione in nodo[] del fs(nodo[i]): f = 2i+1:posizione del fs di i in pieno[]; Rank(pieno,f): numero di 1 presenti nel segmento b[0,f]; nodo[Rank(pieno,f) -1]:fs[nodo(i)]. Identificazione in nodo[] del p(nodo[i]): p = Select (pieno,i): bit 1 corrispondente a nodo[i] in pieno[]; nodo[(p-1)/2]: p[nodo(i)]. ASD a.a.2010/2011- Lezione n°6 6

Implementazione di Rank spazio mlogm bit; tempo O(1) (es. 256bit ovvero 32interi di 8 bit ciascuno) b(i) 1 1 1 0 10 0 1 10 0 0 0 0 0 0 0 0 0 0 0……0 i 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20……32 ---------------------------------------------------------------------------------------- Rank 1 2 3 3 4 4 4 5 6 6 6 6 6 6 6 6 6 6 6 6 ……… 6 _____________________________________________________ spazio 2m=(2m/logm)/logm bit tempo O(1) per i campionati e per gli altri??? Rank’ 3 5 6 6 6 m/k = 2m/logm j 1 2 3 4 5 b(i) 1 1 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0…… k=1/2 logm bit i 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20…… Rank 1 2 3 3 4 4 4 5 6 6 6 6 6 6 6 6 6 6 6 6 6… per gli altri….. Rank(b,6) = Rank’[1] + #1nei primi 3 elementi di b[4,7] = 3 +1 =4 ASD a.a.2010/2011- Lezione n°6 7