File:Max-Heap-new.svg · Wikimedia Commons · See Wikimedia Commons
heap
Sign in to saveAlso known as heap data structure
struttura dati interna utilizzata in informatica
Wikidata facts
- Instance of
- abstract data type
- Subclass of
- tree
- Has use
- priority queue
Show 5 more facts
- Commons category
- Heap data structures
- Stack Exchange tag
- cs.stackexchange.com/tags/heaps
- topic's main category
- Category:Heaps (data structures)
- different from
- priority queue
- maintained by WikiProject
- WikiProject Mathematics
via Wikidata · CC0
Article · Italiano
In informatica, un heap (lett. "mucchio") è una struttura dati basata sugli alberi che soddisfa la "proprietà di heap": se A è un genitore di B, allora la chiave (il valore) di A è ordinata rispetto alla chiave di B conformemente alla relazione d'ordine applicata all'intero heap. Di conseguenza, gli heap possono essere suddivisi in "max heap" e "min heap". In un max heap, le chiavi di ciascun nodo sono sempre maggiori o uguali di quelle dei figli, e la chiave dal valore massimo appartiene alla radice (detta anche nodo root). In un min heap, le chiavi di ciascun nodo sono sempre minori o uguali di quelle dei figli, e la chiave dal valore minimo appartiene alla radice. Quindi, dato un heap v ed un indice di posizione j, v si dice * min-heap: se * max-heap: se In particolare, da un punto di vista di array, descriviamo gli indici assunti da heap per i vari nodi: * padre = * nodo sinistro (left): * nodo destro (right) In questo modo si garantisce che compiendo un qualsiasi percorso che parte da un nodo dell'albero e scendendo nella struttura verso le foglie, si attraversano nodi con chiave sempre maggiore dell'ultima foglia visitata. La scelta di utilizzare un tipo di heap anziché l'altro è data dal tipo di impiego che se ne vuole fare. Da notare che, come si vede nel grafo a fianco, non è implicato alcun ordine specifico tra nodi fratelli o cugini, ovvero, i nodi non sono ordinati trasversalmente (come invece accade, ad esempio, nell'albero binario di ricerca). Gli heap sono essenziali negli algoritmi della teoria dei grafi (come l'algoritmo di Dijkstra) o negli algoritmi di ordinamento come l'heapsort. Un'implementazione molto comune di un heap è l'heap binario, basato su un albero binario completo (come quello in figura). L'heap è, inoltre, una delle implementazioni più efficienti di un tipo di dato astratto chiamato coda di priorità. Essi vengono inoltre utilizzati negli algoritmi di selezione o il merge per l'elemento k-esimo, prendendo gli stream di input e convertendoli ordinatamente in stream di output.
Abstract from DBpedia / Wikipedia · CC BY-SA