La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Per Heap in generale si intende una struttura dati atta a contenere e gestire un insieme di dati ordinabili. Gli Heap di Fibonacci furono introdotti da.

Presentazioni simili


Presentazione sul tema: "Per Heap in generale si intende una struttura dati atta a contenere e gestire un insieme di dati ordinabili. Gli Heap di Fibonacci furono introdotti da."— Transcript della presentazione:

1 Per Heap in generale si intende una struttura dati atta a contenere e gestire un insieme di dati ordinabili. Gli Heap di Fibonacci furono introdotti da Fredman e Tarjan nel I Fibonacci Heaps sono unottima implementazione di Heap in quanto le operazioni più costose hanno complessità ammortizzata (e sono quelle che prevedono l'eliminazione di un elemento dallheap) mentre tutte le altre costano tempo (ammortizzato) costante. La tecnologia dei Fibonacci Heap è utilizzata anche oggi nei processori della famiglia Pentium di casa Intel. Vediamo cosè di preciso lHeap (in italiano Pila) di Fibonacci. 1 Davide Valeriani

2 Gli Heap di Fibonacci sono un insieme di alberi caratterizzati dall'ordinamento parziale dello heap; questi alberi non sono ordinati per grandezza come negli Heap Binomiali e le loro radici sono poste in una lista bidirezionale. Ogni nodo ha un puntatore al nodo precedente (padre), un puntatore al successivo (figlio), un puntatore al suo fratello destro ed uno al suo sinistro. Inoltre, ogni elemento ha un campo intero che contiene il valore del nodo (chiave), un campo intero che contiene il numero di nodi a cui punta (grado) e un'altro campo booleano che indica se tale nodo ha perso un figlio dall'ultima volta in cui è diventato figlio di un altro nodo. 1 Davide Valeriani

3 Lo Heap di Fibonacci possiede i seguenti attributi: attributodescrizione ptestapuntatore alla prima radice della lista pminpuntatore alla radice con chiave minima nnodinumero complessivo di nodi nalberinumero complessivo di alberi Ogni nodo dello Heap possiede i seguenti attributi: attributodescrizione ppadrepuntatore al padre pfiglipuntatore alla lista dei figli pdestropuntatore al fratello destro psinistropuntatore al fratello sinistro gradonumero di figli chiavevalore del nodo marcatoindica se il nodo è marcato o no 2 Davide Valeriani

4 3 Creazione di un nuovo heap di Fibonacci La creazione di un nuovo heap di Fibonacci consisterà semplicemente nellassegnare agli attributi i seguenti valori: attribut o valore ptestaNULL pminNULL nnodi0 nalberi0 La chiave di ogni nodo è minore o uguale della chiave dei figli; in questo modo è garantito che il nodo con chiave minima è una delle radici. Davide Valeriani

5 5 Inserimento di un nuovo nodo Il nuovo elemento viene inserito in testa alla lista delle radici e vengono opportunamente inizializzati tutti i suoi campi; se necessario viene aggiornato il minimo dello Heap e infine vengono incrementati i contatori del numero dei nodi e del numero di radici. Davide Valeriani

6 8 Inserimento di un nuovo nodo A differenza delle funzioni di inserimento di altri tipi di heap, questa funzione non si preoccupa di ristrutturare in nessun modo la struttura dati. In questo senso si dice che gli Heap di Fibonacci sono una struttura dati pigra' poiché tende a rinviare il lavoro; questo aspetto dimostra come il progetto degli Heap di Fibonacci sia andato di pari passo con l'analisi ammortizzata delle complessità delle sue operazioni. Ricerca del minimo Per calcolare il valore minimo dellheap, è sufficiente stampare il contenuto del nodo con chiave minima, puntato da ogni nodo grazie al puntatore pmin. Davide Valeriani

7 Triangolo di Pascal Curiosità su Leonardo Pisano Fibonacci (1170 – 1250) Cercando su google la parola fibonacci, si trovano circa pagine web! La spirale di Fibonacci 13 Davide Valeriani

8 21 Siamo arrivati alla fine di questa breve presentazione della tecnologia del Fibonacci Heap. Forse non ci avete fatto caso, ma in questa serie di slide cera un riferimento a una delle più famose scoperte del matematico italiano. Sapete dove? Esatto! I numeri delle pagine in alto a destra si susseguivano seguendo la sequenza di Fibonacci. Che numero avrà la prossima pagina? Vediamo. Davide Valeriani

9 34 Il numero è ovviamente 34. Per sapere quali sono i numeri successivi, usate la procedura ricorsiva!!! Davide Valeriani


Scaricare ppt "Per Heap in generale si intende una struttura dati atta a contenere e gestire un insieme di dati ordinabili. Gli Heap di Fibonacci furono introdotti da."

Presentazioni simili


Annunci Google