Skip to content
heap

File:Max-Heap-new.svg · Wikimedia Commons · See Wikimedia Commons

EntityQ274089· pop 43· linked from 223 articles

Also known as heap data structure

struttura dati interna utilizzata in informatica

Wikidata facts

Subclass of
tree
Show 5 more facts
Commons category
Heap data structures
different from
priority queue
maintained by WikiProject
WikiProject Mathematics
Sources (4)

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

Gallery (2)