Ich dachte immer, dass Haufen und Prioritäts - Warteschlangen Synonyme waren - eine abstrakte Datenstruktur , die unterstützt die insert
, findMin
und deleteMin
Operationen.
Einiges an Literatur scheint mir zuzustimmen - zum Beispiel Chris Okasakis rein funktionale Datenstrukturen (Kapitel 3).
Auf der anderen Seite definiert Wikipedia die Heap- Seite als baumbasierte Datenstruktur und gibt an, dass Heaps eine konkrete Implementierung von Prioritätswarteschlangen sind.
Ich finde es schwierig, dies mit der Tatsache in Einklang zu bringen, dass ich mir mehr als eine Heap-Implementierung vorstellen kann - linke Heaps, Binomial-Heaps, Splay-Heaps ...
Bedeutet die einfache Tatsache, dass ein Heap mit verschiedenen Datenstrukturen implementiert werden kann, per Definition nicht, dass es sich um eine abstrakte Datenstruktur handelt? Und wenn dies der Fall ist, gibt es einen tatsächlichen Unterschied zu Prioritätswarteschlangen?