La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Vediamo cos’è di preciso l’Heap (in italiano Pila) di Fibonacci.

Presentazioni simili


Presentazione sul tema: "Vediamo cos’è di preciso l’Heap (in italiano Pila) di Fibonacci."— Transcript della presentazione:

1 Vediamo cos’è di preciso l’Heap (in italiano Pila) di Fibonacci.
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 un‘ottima implementazione di Heap in quanto le operazioni più costose hanno complessità ammortizzata (e sono quelle che prevedono l'eliminazione di un elemento dall’heap) 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 l’Heap (in italiano Pila) di Fibonacci. Davide Valeriani

2 1 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. Davide Valeriani

3 attributo descrizione attributo descrizione
2 Lo Heap di Fibonacci possiede i seguenti attributi: attributo descrizione ptesta puntatore alla prima radice della lista pmin puntatore alla radice con chiave minima nnodi numero complessivo di nodi nalberi numero complessivo di alberi Ogni nodo dello Heap possiede i seguenti attributi: attributo descrizione ppadre puntatore al padre pfigli puntatore alla lista dei figli pdestro puntatore al fratello destro psinistro puntatore al fratello sinistro grado numero di figli chiave valore del nodo marcato indica se il nodo è marcato o no Davide Valeriani

4 Creazione di un nuovo heap di Fibonacci
3 Creazione di un nuovo heap di Fibonacci La creazione di un nuovo heap di Fibonacci consisterà semplicemente nell’assegnare agli attributi i seguenti valori: attributo valore ptesta NULL pmin nnodi nalberi 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 Inserimento di un nuovo nodo
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 Inserimento di un nuovo nodo
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 dell’heap, è sufficiente stampare il contenuto del nodo con chiave minima, puntato da ogni nodo grazie al puntatore pmin. Davide Valeriani

7 La spirale di Fibonacci
13 Curiosità su Leonardo Pisano Fibonacci (1170 – 1250) Triangolo di Pascal La spirale di Fibonacci Cercando su google la parola fibonacci, si trovano circa pagine web! 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 c’era 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 "Vediamo cos’è di preciso l’Heap (in italiano Pila) di Fibonacci."

Presentazioni simili


Annunci Google