Lezione n°7 Splay-Trees e Heaps Prof.ssa Rossella Petreschi

Slides:



Advertisements
Presentazioni simili
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.
Advertisements

Prof.ssa Rossella Petreschi Lezione del 3 /10/2012 del Corso di Algoritmi e Strutture Dati Riferimenti: Capitolo 18 del testo Cormen, Leiserson, Rivest.
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 5/12/2012 del Corso di Algoritmi e Strutture Dati Riferimenti: Capitolo 11 del testo Anany Levitin “The design.
Fondamenti di Informatica A - Massimo Bertozzi ALBERI E ALBERI BINARI DI RICERCA (BST)
Huffman Canonico: approfondimento. Come abbiamo visto, Huffman canonico ci permette di ottenere una decompressione più veloce e con un uso più efficiente.
Fondamenti di Informatica A - Massimo Bertozzi LE RAPPRESENTAZIONI CONCATENATE.
Prof.ssa Rossella Petreschi Lezione del 3/12/2013 del Corso di Algoritmica GRAFI e PLANARITA’ Lezione n°15.
Prof.ssa Rossella Petreschi Lezione del 29 /10/2014 del Corso di Algoritmica Lezione n°8.
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Alberi autoaggiustanti
Alberi di ricerca di altezza logaritmica
Progettare algoritmi veloci usando strutture dati efficienti
Cammini minimi in grafi:
Inserzione e Cancellazione
Branch and Bound Lezione n°19 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
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 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
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 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
Paths, tree and flowers Lezione n°14
UNION FIND Lezione n°8 Prof.ssa Rossella Petreschi
Rappresentazione di alberi
Algoritmi per il flusso nelle reti
Lezione n°6 Prof.ssa Rossella Petreschi
Gestione dinamica di tabelle
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Backtracking Lezione n°13 Prof.ssa Rossella Petreschi
Progettare algoritmi veloci usando strutture dati efficienti
Automi e stringhe Lezione n°24 Prof.ssa Rossella Petreschi
Estensione di strutture dati e
Algoritmi e Strutture Dati
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Alberi di ricerca Lezione n°4
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.
Cammini minimi in grafi:
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
concetti ed applicazioni
Algoritmi e Strutture dati a.a.2010/2011 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:

Lezione n°7 Splay-Trees e Heaps Prof.ssa Rossella Petreschi Lezione del 24/10/2012 del Corso di Algoritmi e Strutture Dati Riferimenti: Paragrafo 7.5 del testo Kingston “Algorithms and data structures” Edizioni: Addison-Wesley Capitolo 20 del testo Cormen, Leiserson, Rivest, Stein “Introduzione agli algoritmi” Edizioni: Jackson Libri

Analisi ammortizzata di un singolo passo di splay 2 ri(u) - ri-1(u) - ri(p(p(u)))-2 ≥ 0 Per = sizei-1(u) / sizei(u) > 0;  = sizei(p(p(u))) / sizei(u) >0; si ha +≤ 1 e quindi, per il lemma, log  + log  ≤ -2 Allora: log (sizei-1(u) / sizei(u)) + log (sizei(p(p(u))) / sizei(u)) ≤ -2 ri-1(u) + ri(p(p(u))) - 2ri(u) ≤ -2 ovvero 2ri(u) - ri-1(u) - ri(p(p(u))) - 2 ≥ 0 Lemma Datiereali positivi con +≤ 1, vale log  + log  ≤ -2 Prova: log  + log  = log la funzione logaritmo è monotona crescente e raggiunge il massimo, nell’intervallo dell’ipotesi, quando  è massimo ovvero quando ovvero log  + log  = -2 2

Complessità ammortizzata totale Il tempo ammortizzato di una singola operazione di splay è pari a (logm), con m numero dei nodi dell’albero in cui si effettua l’operazione, dato che: i ≤ 1 + 3 (ri(u) - ri-1(u)) = , per i= 1,…k 1 + 3 (rangofinale(u) - riniziale(u)) , rangofinale(u) ≤ log m Il tempo totale ammortizzato di una sequenza di  operazioni (di ricerca, di inserimento e di cancellazione) su uno splay-tree è data da ( logn), con n massimo numero di nodi che l’albero raggiunge durante la serie di operazioni. 3

Applicazioni Gli splay tree sono stati pensati per l'implementazione di cache dove gli algoritmi di gestione dei dati sono legati a due concetti fondamentali: località del codice: non si accede alle informazioni in modo uniforme (accesso casuale), ma ci sono parti di informazione a cui si accede più frequentementente (accesso localizzato). eliminazione dalla cache dei dati usati meno recentemente. Ad ogni accesso l'algoritmo splay sposta il nodo su cui opera alla radice,conseguentemente gli elementi a cui si accede più frequentemente si trovano sempre vicino alla radice dell'albero, rendendoli più velocemente accessibili e migliorando sensibilmente i tempi di accesso globali alla cache nelle operazioni di ricerca e cancellazione. 4

Heap La struttura dati Heap (minimo) è un albero binario di n elementi, completo o quasi completo, tale che il valore associato ad ogni nodo sia maggiore o uguale a quello associato al padre. La radice contiene il valore minimo. (in modo analogo si parla di heap massimo). L’heap è efficientemente rappresentato con un vettore e ∀i , p(i) in posizione ëi/2û, fs(i) e fd(i) in posizione 2i e 2i+1 2 5 7 7 9 8 1 2 3 4 5 6

Heap di Fibonacci:definizione Un Heap di Fibonacci è un insieme non ordinato di alberi con la seguente struttura: le radici degli alberi dell’heap, così come i figli di ogni singolo nodo, sono fra loro collegate da una lista doppiamente puntata; ogni nodo v contiene un puntatore al padre; un puntatore ad uno dei figli; il numero dei figli; un valore inferiore a quello associato ai figli (per ogni albero il valor minimo è associato alla radice); esiste un puntatore alla radice contenente il valore minimo di tutto l’heap. Infine ad ogni nodo v è associato un booleano. Il booleano Vero indica che v è marcato, dato che ha perso un figlio durante una delle operazioni sull’heap.

Heap di Fibonacci:immagine