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.

Kimvais
quelle
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.

Maayank
quelle
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.

Weltingenieur
quelle