Angenommen, ich habe eine Prioritätswarteschlange von N Elementen mit Prioritäten, wobei N in den Tausenden liegt, die eine Prioritätswarteschlange verwenden, die mit einem Binärhaufen implementiert ist. Ich verstehe die EXTRACT-MIN
und INSERT
Primitiven (siehe Cormen, Leiserson, Rivest, die -MAX
anstelle von -MIN
verwenden).
Aber DELETE
und DECREASE-KEY
scheinen beide zu erfordern, dass die Prioritätswarteschlange in der Lage ist, den Index eines Elements im Haufen anhand des Elements selbst zu finden (alternativ muss dieser Index von den Verbrauchern der Prioritätswarteschlange gegeben werden, aber das scheint wie ein Verstoß gegen die Abstraktion).... was wie ein Versäumnis aussieht. Gibt es eine Möglichkeit, dies effizient zu tun, ohne eine Hashtabelle oben auf den Haufen hinzufügen zu müssen?