Pseudocodice per coda Brodal


12

Sto cercando di trovare più risorse per quanto riguarda l'heap di Brodal . Tutto quello che ho trovato è un'implementazione haskell dell'heap Brodal-Okasaki , ma penso che siano cumuli obliqui , è corretto? Inoltre, sono analfabeta in Haskell, quindi non aiuta molto. Qualcuno ha (o conosce) un'implementazione della coda Brodal in pseudocodice, C, C ++, Python?

Inoltre, correggi se le mie ipotesi sopra sono sbagliate.


3
Stai cercando di implementare specificamente la coda Brodal o stai cercando un'implementazione efficiente di una coda prioritaria? Brodal ha menzionato nella conclusione del suo articolo che non sono pratici senza ulteriori ricerche nell'area. Il suo articolo è stato ampiamente citato, forse qualcosa di utile? Il CLR Introduzione agli algoritmi ha una sezione sulle code prioritarie, ma fa riferimento a un lavoro molto precedente nelle code prioritarie.
Jay Elston,

2
La coda originale di Brodal usa assegnazioni distruttive, quindi la versione di Haskell deve avere alcune modifiche.
Fred Foo,

Risposte:


2

L'implementazione di Haskell si basa sull'heap funzionale Brodal-Okasaki e hai ragione, è una variazione di cumuli obliqui. Il documento è scritto in modo molto chiaro, quindi sarebbe una buona risorsa.

Per quanto riguarda l'implementazione, c'è anche un'implementazione in Scala come parte della libreria scalaz.


1

Questa è una risposta parziale poiché non ho ancora capito come tradurre il codice in qualcosa che non è Haskell. La ragione per cui posso dire per loro che devono usare Haskell è che Haskell è pigro. Il mucchio di Brodal-Okasaki deve essere impiantato in modo pigro dalla carta. Quindi ciò di cui avresti bisogno è un modo per fornire quella funzionalità in un'altra lingua insieme ad altri requisiti (come strutture di dati puramente funzionali) di cui potrebbe essere necessario l'heap BO.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.