Ich denke, dass das erste, was zu berücksichtigen ist, was eine unterstützte Operation ist?
Entspricht "Einfügen eines Wertes mit einem bestimmten festen Schlüssel" (z. B. für Schlüssel aus dem Integer-Bereich, Einfügen mit Schlüssel = 3) einer unterstützten Operation für den Min-Heap?
Nein, da diese Operation mit allgemeineren unterstützten Operationen einfach implementiert werden kann. Ebenso können mit der bestehenden insert
Operation 2 Elemente gleichzeitig eingefügt werden.
Andererseits kann die insert
Operation nur definiert werden, indem Implementierungsdetails offengelegt werden. Mit heapify
Ausnahme der auf der Wikipedia-Seite aufgelisteten Vorgänge , die wahrscheinlich durch eine Sequenz von implementiert werden könnten, ist dies im Großen und Ganzen dasselbe insert
.
Mit anderen Worten, es gibt elementare Operationen auf dem Typ, die eng an die Implementierungsdetails gebunden sind, damit sie gut funktionieren, und es gibt andere Operationen, die diese Regel nicht einhalten und daher als Kombinationen implementiert werden können der kanonischen.
Glauben Sie angesichts dieser Definition, dass die Erhöhungstaste ausschließlich mit anderen unterstützten Operationen implementiert werden kann, ohne dass Leistungseinbußen auftreten? In diesem Fall handelt es sich nicht um eine unterstützte Operation gemäß der obigen Definition. Andernfalls haben Sie möglicherweise recht.
Die Definition einer unterstützten Operation, die ich zur Verfügung stelle, ist meines Wissens nach meine. Es ist nicht formal und daher Gegenstand von Diskussionen (obwohl es mir ziemlich klar erscheint). Ich würde mich jedoch freuen, wenn jemand eine Quelle bereitstellen könnte, die klar und eindeutig definiert, was eine unterstützte Operation für Datentypen ist, oder zumindest besser definiert als meine (ist diese Definition in der CLR angegeben? Ich habe keine Kopie ).
Mein zweiter Punkt wird sein, wie wir eine Prioritätswarteschlange definieren (was die Existenzberechtigung von Binärhaufen ist). Ist die increase_key
Operation für diesen Datentyp erforderlich, dh für die ordnungsgemäße Verwendung?
Wie Sie sehen, dreht sich in meinem Blickwinkel alles um Definitionen. Ich kann Ihre Fragen nicht wirklich beantworten, nur einige Hinweise, daher sind Verbesserungen willkommen.