Dizionari alberi bilanciati.

Slides:



Advertisements
Presentazioni simili
Andrea Zandatutoraggio strutture dati STRUTTURE DATI e LABORATORIO II ESERCITAZIONE N°14 albero di ricerca binario.
Advertisements

Ordinamento ottimo Ricerca
Alberi binari Definizione Sottoalberi Padre, figli
Algoritmi e Strutture Dati
Lez. 91 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Alberi di ricerca.
RB-alberi (Red-Black trees)
Code a priorità (Heap) Definizione
Alberi binari di ricerca
Code con priorità Ordinamento
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti ottimi.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati.
Capitolo 6 Alberi di ricerca Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Stesso approccio.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Esercizi su alberi binari
Alberi binari Definizione della struttura dati: struct tree { };
Algoritmi e strutture Dati - Lezione 7
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Interrogazioni.
Il problema del dizionario
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Il problema.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Il problema.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Alberi AVL (Adelson-Velskii.
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.
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 4 Ordinamento Algoritmi e Strutture Dati.
CORSO DI PROGRAMMAZIONE II Operazioni su alberi ordinati e non
Algoritmi e Strutture Dati Alberi Binari di Ricerca.
Algoritmi e Strutture Dati (Mod. A)
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati IV. Heap e Code di Priorità
tipo astratto, implementazione, algoritmi
Algoritmi e Strutture Dati 20 aprile 2001
Algoritmi e Strutture Dati
Modello dati ALBERO Albero: Albero: insieme di punti chiamati NODI e linee chiamate EDGES EDGE: linea che unisce due nodi distinti Radice (root): in una.
Modello dati ALBERO Albero: Albero: insieme di punti chiamati NODI e linee chiamate EDGES EDGE: linea che unisce due nodi distinti Radice (root): in una.
Esercizi su alberi binari
Alberi di ricerca binari
Anche la RB-Delete ha due fasi: Nella prima viene tolto un nodo y avente uno dei sottoalberi vuoto sostituendolo con la radice dellaltro sottoalbero. Per.
RB-insert(T, z) // z.left = z.right = T.nil Insert(T, z) z.color = RED // z è rosso. Lunica violazione // possibile delle proprietà degli alberi // rosso-neri.
Dizionari alberi bilanciati. maggio 2002ASD Alberi bilanciati2 dizionari ADT che supportano le seguenti operazioni membership anche detta search.
Heap Ordinamento e code di priorità Ugo de Liguoro.
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
B trees.
Alberi binari Definizione della struttura dati: struct tree { };
alberi completamente sbilanciati
Algoritmi e Strutture Dati
Heap concetti ed applicazioni. maggio 2002ASD - Heap2 heap heap = catasta condizione di heap 1.albero binario perfettamente bilanciato 2.tutte le foglie.
Capitolo 6 Alberi di ricerca Algoritmi e Strutture Dati.
Alberi Alberi radicati : alberi liberi in cui un vertice è stato scelto come radice. Alberi liberi : grafi non orientati connessi e senza cicli. Alberi.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Rotazioni.
Capitolo 8 Code con priorità Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Alberi rosso-neri Le operazioni sugli alberi binari di ricerca hanno complessità proporzionale all’altezza h dell’albero. Gli alberi rosso-neri sono alberi.
Prog2 a.a. 2001/ Albero binario di ricerca Un albero binario di ricerca é un albero binario in cui ogni nodo ha un’etichetta.
Algoritmi e strutture Dati - Lezione 7 1 Algoritmi di ordinamento ottimali L’algoritmo Merge-Sort ha complessità O(n log(n))  Algoritmo di ordinamento.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Soluzione esercizio.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Soluzione esercizio.
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Il problema.
Algoritmi e Strutture Dati HeapSort. Select Sort: intuizioni L’algoritmo Select-Sort  scandisce tutti gli elementi dell’array a partire dall’ultimo elemento.
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 Algoritmica B-alberi Lezione n°5.
Dizionari alberi bilanciati.
Dizionari alberi bilanciati.
Transcript della presentazione:

dizionari alberi bilanciati

ASD2002 - Alberi bilanciati dizionari ADT che supportano le seguenti operazioni membership anche detta search insert delete o remove le liste e i BST sono dizionari maggio 2002 ASD2002 - Alberi bilanciati

ASD2002 - Alberi bilanciati dizionari/2 tutte le implementazioni finora considerate hanno almeno un’operazione di costo lineare w.c.t. (worst case time, tempo nel caso peggiore) in molti casi un costo lineare è giudicato inaccettabile strutture più efficienti? alberi bilanciati tavole hash maggio 2002 ASD2002 - Alberi bilanciati

introduzione al bilanciamento nozione intuitiva di bilanciamento tutti i rami di un albero hanno approssimativamente la stessa lunghezza ciascun nodo interno ha “molti” figli caso ideale per un albero k-ario ciascun nodo ha 0 o k figli la lunghezza di due rami qualsiasi differisce di al più una unità maggio 2002 ASD2002 - Alberi bilanciati

bilanciamento perfetto 34 un albero binario perfettamente bilanciato di n nodi ha altezza 21 63 16 30 43 72 6 18 28 32 37 52 se ogni nodo ha 0 o 2 figli nf = ni +1 nf = # foglie ni = # nodi interni n = nf + ni le foglie sono circa il 50% dei nodi -1 foglia + 1 nodo interno +2 foglie maggio 2002 ASD2002 - Alberi bilanciati

bilanciamento perfetto/2 facilmente generalizzabile ad alberi di arità k costo di ricerca/inserimento/eliminazione O(log n) ripetuti inserimenti/eliminazioni possono distruggere il bilanciamento degrado delle prestazioni maggio 2002 ASD2002 - Alberi bilanciati

bilanciamento in altezza un albero è bilanciato in altezza se le altezze dei sottoalberi sinistro e destro di ogni nodo differiscono di al più un’unità gli alberi bilanciati in altezza sono detti alberi AVL da Adel’son-Vel’skii & Landis, primi proponenti maggio 2002 ASD2002 - Alberi bilanciati

fattore di bilanciamento 34 -1 +1 fattore di bilanciamento (FDB): altezza sottoalbero dx – altezza sottoalbero sx 21 63 16 30 43 72 6 18 28 28 32 37 52 78 3 29 57 in un albero bilanciato in altezza |FDB|  1, per ogni nodo maggio 2002 ASD2002 - Alberi bilanciati

ASD2002 - Alberi bilanciati alberi AVL? maggio 2002 ASD2002 - Alberi bilanciati

ASD2002 - Alberi bilanciati alberi di Fibonacci alberi AVL col minimo numero di nodi (fissata l’altezza) h Fh AVLh 1 2 3 4 7 5 12 6 8 20 13 33 2 4 1 7 12 maggio 2002 ASD2002 - Alberi bilanciati

ASD2002 - Alberi bilanciati alberi di Fibonacci/2 alberi di Fibonacci alberi bilanciati di altezza i col minimo numero di nodi Relazioni AVLi +2 = AVLi + AVLi +1 + 1 Fi +2 = Fi + Fi +1 AVLi = Fi +2 – 1 AVLi +2 AVLi +1 AVLi maggio 2002 ASD2002 - Alberi bilanciati

ASD2002 - Alberi bilanciati alberi di Fibonacci/3 un albero di Fibonacci ha tutti i fattori di bilanciamento dei nodi interni pari a ± 1 è l’albero bilanciato più vicino alla condizione di non bilanciamento un albero di Fibonacci con n nodi ha altezza < 1.44 lg(n +2) – 0.328 dimostrato da Adel’son-Vel’skii & Landis  un AVL di n nodi ha altezza (lg n) maggio 2002 ASD2002 - Alberi bilanciati

ASD2002 - Alberi bilanciati inserimento in AVL inserire nuovo nodo come in un BST “classico” il nuovo nodo diviene una foglia ricalcolare i fattori di bilanciamento che sono mutati in seguito all’inserimento solo nel ramo interessato all’inserimento (gli altri fattori non possono mutare), dal basso verso l’alto se nel ramo appare un fattore di bilanciamento pari a ±2 occorre ribilanciare tramite “rotazioni” maggio 2002 ASD2002 - Alberi bilanciati

ASD2002 - Alberi bilanciati rotazioni negli AVL casi possibili DD: inserimento nel sottoalbero destro di un figlio destro (del nodo che si sbilancia) SD: inserimento nel sottoalbero sinistro di un figlio destro (del nodo che si sbilancia) DS: inserimento nel sottoalbero destro di un figlio sinistro (del nodo che si sbilancia) SS: inserimento nel sottoalbero sinistro di un figlio sinistro (del nodo che si sbilancia) maggio 2002 ASD2002 - Alberi bilanciati

rotazione semplice (caso DD) gli antenati di P non sono interessati all’inserimento perché in seguito alla rotazione recuperano il loro fattore di bilanciamento precedente maggio 2002 ASD2002 - Alberi bilanciati

rotazione doppia (caso SD) h +1 P Q h h+1 +2 -1 P Q h h-1 +2 -1 P Q +1 h h-1 +2 P R Q Q h h-1 -1 R P gli antenati di P non sono interessati all’inserimento maggio 2002 ASD2002 - Alberi bilanciati

rappresentazione nodo class AvlNode { Comparable element; AvlNode left; AvlNode right; int height; AvlNode(Comparable el) { this(el, null, null); } AvlNode(Comparable el, AvlNode lt,AvlNode rt) { element = el; left = lt; right = rt; height = 0; maggio 2002 ASD2002 - Alberi bilanciati

algoritmo inserimento /1 AvlNode insert(Comparable x, AvlNode t) { if(t == null) t = new AvlNode(x, null, null); else if(x.compareTo(t.element) < 0) { t.left = insert(x, t.left); if(height(t.left) - height(t.right) == 2) if(x.compareTo(t.left.element) < 0) t = rotateWithLeftChild(t); // SS else t = doubleWithLeftChild(t); // DS } else … maggio 2002 ASD2002 - Alberi bilanciati

algoritmo inserimento /2 … else if(x.compareTo(t.element) > 0) { t.right = insert(x, t.right); if(height(t.right) - height(t.left) == 2) if(x.compareTo(t.right.element) > 0) t = rotateWithRightChild(t); // DD else t = doubleWithRightChild(t); // SD } else ; // Duplicate; do nothing t.height=max(height(t.left),height(t.right))+1; return t; } restituisce la nuova radice maggio 2002 ASD2002 - Alberi bilanciati

rotazione semplice (SS) AvlNode rotateWithLeftChild(AvlNode k2) { AvlNode k1 = k2.left; k2.left = k1.right; k1.right = k2; k2.height = max(height(k2.left), height(k2.right)) + 1; k1.height = max(height(k1.left), k2.height ) + 1; return k1; } maggio 2002 ASD2002 - Alberi bilanciati

ASD2002 - Alberi bilanciati rotazione doppia (SD) AvlNode doubleWithRightChild(AvlNode k1){ k1.right=rotateWithLeftChild(k1.right); return rotateWithRightChild(k1); } maggio 2002 ASD2002 - Alberi bilanciati

inserimento negli AVL/costo passo 1: proporzionale all’altezza dell’albero (lg n) passo 2: proporzionale all’altezza dell’albero (lg n) passo 3: O(lg n) in totale: (lg n) maggio 2002 ASD2002 - Alberi bilanciati

cancellazione negli AVL cancellare nodo come in un BST “classico” ricalcolare i fattori di bilanciamento che sono mutati in seguito alla cancellazione solo nel ramo interessato all’inserimento (gli altri fattori non possono mutare), dal basso verso l’alto per ogni nodo con fattore di bilanciamento pari a ±2 occorre operare una rotazione semplice o doppia O(lg n) rotazioni nel caso peggiore maggio 2002 ASD2002 - Alberi bilanciati

ASD2002 - Alberi bilanciati rotazione semplice eliminazione foglia da sottoalbero sinistro di P il figlio destro ha FDB +1; a), b) e c) il figlio destro ha FDB 0; d), e) ed f) maggio 2002 ASD2002 - Alberi bilanciati

ASD2002 - Alberi bilanciati rotazione doppia eliminazione foglia da sottoalbero sinistro di P FDB(Q) = –1 e FDB(R)= –1; g), h) ed i) rotazione R-Q (P resta a +2, R e Q vanno a +1) e rotazione P-R maggio 2002 ASD2002 - Alberi bilanciati

ASD2002 - Alberi bilanciati rotazione doppia/2 eliminazione foglia da sottoalbero sinistro di P FDB(Q) = -1, FDB(R)=+1, j), k) ed l) rotazione R-Q (P resta a +2, R va a +2 e Q va a 0) e rotazione P-R maggio 2002 ASD2002 - Alberi bilanciati

cancellazione negli AVL/costo nel caso peggiore occorre effettuare rotazioni (semplici o doppie) lungo tutto il ramo passo 1: proporzionale all’altezza dell’albero (lg n) passo 2: proporzionale all’altezza dell’albero (lg n) passo 3: (lg n) · (1) in totale: (lg n) maggio 2002 ASD2002 - Alberi bilanciati

cancellazione negli AVL/esempio animazione tratta dal sito Web http://www.seanet.com/users/arsen/avltree.html maggio 2002 ASD2002 - Alberi bilanciati