Frage

ist es möglich, eine effiziente Prioritätswarteschlange (so effizient wie ein Heap) nur mit der Stapeldatenstruktur zu implementieren?

Der übliche Effizienz für eine Prioritätswarteschlange, die mit einem Heap implementiert ist, lautet:

    .
  • min - $ o (1) $
  • extract min - $ o (\ log n) $
  • add - $ o (\ \ \ log n) $

wäre es möglich, mit der gleichen Komplexität nur mit nur Stapeln zu tun?

Ich möchte ein * (der eine Prioritätswarteschlange zum Priorität von Knoten verwendet) als Pfadfindungsalgorithmus in Minecraft, aber Minecraft lässt keinen zufälligen Zugriff nicht auf, und die dabeiste dynamische Struktur, die darin umgesetzt werden kann, ist ein Stapel.

War es hilfreich?

Lösung

Leider ist es nicht möglich.Die Reihenfolge, die Sie aus dem Stapel extrahieren, hängt nur von der Reihenfolge ab, unabhängig von den Werten in diesen Elementen;Eine Prioritätswarteschlange benötigt Elemente, die in einer Reihenfolge entfernt werden, die vom Wert der Elemente abhängt.

Andere Tipps

Sie können eine solche perfekte Darstellung der Prioritätswarteschlangen mit (binärer) HAPPS-Datenstruktur durchführen, indem Sie mit ihm stapel und Warteschlangen einsetzen.

In Prioritätswarteschlangen ist es eine Frage der Vorliebe, kein Filo-Prinzip wie in Stapeln.

Sie finden alles in Cormmen et al., Einführung in Algorithmen, 3. Auflage.

okay, Implementierung von Prioritätswarteschlangen mithauen steht im Zusammenhang mit der Eigenschaft des Heaps, Max_HEAP oder MIN_HEAP. MIN_PRIORITY_QUEUE kann mithilfe von min_Heap implementiert werden, indem Sie die für Heaps wie Build_HEAP () verwendeten Prozeduren verwenden., Einfügung und Löschung.

Beachten Sie, dass (binärer) Heap selbst ein Array-Objekt ist, das als fast vollständiger binärer Suchbaum angezeigt werden kann ...

für die Stapelimplementierung (es gibt PSUDO-Code)

generasacodicetagpre.

Um die Warteschlange mit der Prioritätswarteschlange (Heap) gleichzeitig zu implementieren, aber die Priorität nimmt eine nacheinander ab.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit cs.stackexchange
scroll top