Pseudocode für Brodal-Warteschlange


12

Ich versuche mehr Ressourcen bezüglich Brodal Heap zu finden . Alles , was ich zu finden ist eine Haskell Implementierung von Brodal-Okasaki Haufen , aber ich denke , dass sie Skew Heaps , ist das richtig? Außerdem bin ich in Haskell Analphabet, was nicht viel hilft. Hat jemand eine Brodal-Warteschlangenimplementierung in Pseudocode, C, C ++, Python?

Bitte korrigieren Sie auch, wenn meine obigen Annahmen falsch sind.


3
Möchten Sie die Brodal-Warteschlange speziell implementieren, oder möchten Sie eine Prioritätswarteschlange effizient implementieren? Brodal erwähnte abschließend, dass sie ohne weitere Forschung auf diesem Gebiet nicht praktikabel sind. Sein Artikel wurde ausführlich zitiert, vielleicht etwas Nützliches? Die CLR-Einführung in Algorithmen enthält einen Abschnitt zu Prioritätswarteschlangen, verweist jedoch auf eine viel frühere Arbeit in Prioritätswarteschlangen.
Jay Elston

2
Die ursprüngliche Brodal-Warteschlange verwendet eine destruktive Zuweisung, sodass die Haskell-Version einige Änderungen aufweisen muss.
Fred Foo

Antworten:


2

Die Haskell-Implementierung basiert auf dem funktionalen Brodal-Okasaki-Heap, und Sie haben Recht, es handelt sich um eine Variation von Schräghaufen . Das Papier ist sehr klar geschrieben, daher wäre es eine gute Ressource.

In Bezug auf die Implementierung gibt es auch eine Implementierung in Scala als Teil der scalaz-Bibliothek.


1

Dies ist eine teilweise Antwort, da ich noch nicht herausgefunden habe, wie der Code in etwas übersetzt werden kann, das nicht Haskell ist. Der Grund, soweit ich ihnen sagen kann, dass sie Haskell benutzen müssen, ist, dass Haskell faul ist. Der Brodal-Okasaki-Haufen muss faul aus der Zeitung implimentiert werden. Was Sie also brauchen, ist eine Möglichkeit, diese Funktionalität zusammen mit anderen Anforderungen (wie beispielsweise rein funktionalen Datenstrukturen), die der BO-Heap möglicherweise benötigt, für eine andere Sprache bereitzustellen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.