So löschen Sie in einer heap-Datenstruktur?

Verstehe ich, wie das löschen der root-Knoten aus einem max-heap-aber ist das Verfahren zum löschen eines Knotens aus der Mitte zu entfernen und ersetzen die Wurzel wiederholt, bis der gewünschte Knoten gelöscht wird?

  1. Ist O(log n) - die optimale Komplexität für dieses Verfahren?
  2. Auswirkungen hat dies auf the big O Komplexität, da die anderen Knoten müssen gelöscht werden, um zu löschen, die einen bestimmten Knoten?
warum würden Sie wollen, um einen node zu löschen, die in der Mitte in einen max-heap?
Eine sehr Reale Nutzung eines solchen was ist ein heap-Repräsentation der priority queue der eingeplanten jobs, und jemand bricht ein die jobs.
Ich habe vor kurzem realisiert die LPA* pathfinding Algorithmus, eine Neuplanung Algorithmus basiert auf Einer*. Es benötigt die Fähigkeit, Sie zu entfernen aus der Mitte der priority-queue.
Im Allgemeinen, Sie wollen post eine neue Frage gestellt, anstatt neue Fragen hinzufügen, um einen vier Jahre alten post. Aber um Ihre Fragen zu beantworten: 1) In einem standard-Binär-heap O(log n) ist der optimale Komplexität. 2) Löschen aus der Mitte des Haufens wird nie teurer sein, als das löschen der root-Knoten, und dass die operation bereits bewiesen, in O(log n). O(log n) ist die worst-case die Komplexität für das löschen eines Knoten irgendwo in den heap. Beachten Sie jedoch, dass das, was ich bereits in meiner ursprünglichen Antwort bleibt immer noch wahr: es dauert O(n) den Knoten zu löschen.
mathcs.emory.edu/~cheung/Kurse/171/Lehrplan/9-BinTree = /...

InformationsquelleAutor tesfa koli | 2012-01-02

Schreibe einen Kommentar