Ho sempre pensato che cumuli e code di priorità erano sinonimi - una struttura dati astratta che sostiene i insert
, findMin
e le deleteMin
operazioni.
Alcune pubblicazioni sembrano concordare con me, ad esempio Purely Functional Data Structures (capitolo 3) di Chris Okasaki.
D'altra parte, la pagina heap di Wikipedia la definisce come una struttura di dati basata su alberi e afferma che gli heap sono un'implementazione concreta di code prioritarie.
Sto facendo molta fatica a conciliare questo con il fatto che riesco a pensare a più di una implementazione heap: cumuli di sinistra, cumuli binomiali, cumuli di splay ...
Il semplice fatto che un heap possa essere implementato con diverse strutture di dati non significa, per definizione, che sia una struttura di dati astratta? E se è così, c'è una differenza reale con le code prioritarie?