2010-08-04 10 views
16

Gibt es Implementierungen einer rein funktionalen soft heap Datenstruktur in einer beliebigen Sprache?Rein funktionaler Soft-Heap

+0

ich letzte Nacht bekam durch ein wenig davon;: Es finden sich unter Ich habe die Zeitkomplexitäten nicht verifiziert, aber sie scheinen falsch log (1/e) zu sein, wobei e 0 nlucaroni

+0

Großartig! Log ist nur negativ für Argumente kleiner als 1, aber 1/ε ist nicht, weil 0 <ε <1, also 1 <ε⁻¹ <∞. –

+1

Oh natürlich. Ja, du hast recht. Ich war eindeutig (oder nicht ich denke), denke log (ε). Also, wenn er sagt, dass alle Operationen amortisiert sind, Kosten 0, spricht er von einem konstanten Faktor? – nlucaroni

Antwort

20

Eine schnelle Suche in der digitalen ACM-Bibliothek zeigt, dass Chazelles weiche Heap-Struktur, obwohl sie sehr interessant ist, relativ wenig studiert hat und dass persistente/funktionale weiche Haufen daher ein offenes Forschungsthema sind.

Also würde ich nein sagen, es gibt keine bekannten Ansätze für persistente weiche Haufen. Eine Beschreibung zu beschreiben, wäre ein veröffentlichbares Ergebnis (es könnte dazu führen, dass das Kopieren hinzugefügt wird, wo Sie die ursprüngliche Struktur verändern würden, und die Möglichkeiten zum Teilen identifizieren).

+3

@Jon, wenn Sie planen, dieses Problem anzugehen, und Sie haben noch nicht gelesen * Rein funktionale Datenstrukturen *, ich schlage vor, Sie tun dies. Auch wenn es sich nicht um Soft Heaps handelt, wird es Ihnen Grundprinzipien des Designs funktionaler Datenstrukturen beibringen, die bei der Lösung dieses Problems hilfreich sein können. –

+1

Es gibt eine ziemlich voll ausgestattete OCaml-Implementierung von Okasaki's Skew Binomial Heaps in meiner Oni CF-Bibliothek: http://bitbucket.org/jhw/oni –

0

Dieses Projekt hat Java-Code, der vielleicht nicht zu schrecklich ist, um ihn in Scala zu übersetzen ... und dann funktionaler zu machen.

https://github.com/lowasser/SoftSelect

Aber wie bisher rein funktionale Datenstrukturen festgestellt Haskell Codebuch hat, die Soft-Heaps, zumal das Beispiel Java-Code zu übernehmen einfacher sein kann.

https://www.cs.cmu.edu/~rwh/theses/okasaki.pdf

+0

Ich schaue mir auch dieses Papier von der ACM an, wo SoftHeaps mit binären gemacht werden Bäume: http://dl.acm.org/citation.cfm?id=1496823 – RudeDude

Verwandte Themen