2013-05-29 8 views
10

Esiste una coda heap/priorità Fibonacci disponibile per Haskell? (? O anche un uno asintoticamente meglio) ho trovato un elenco di varie implementazioni coda di priorità in this question, ma non riuscivo a trovare se qualcuno di loro soddisfa il tempo di esecuzione ammortizzato dei cumuli di Fibonacci:Esiste una coda di priorità basata su heap Fibonacci per Haskell?

  • Trova-minimo è O (1) tempo ammortizzato.
  • Le operazioni di inserimento, riduzione di chiave e unione (lavoro) sono O (1) tempo ammortizzato.
  • Le operazioni di eliminazione e cancellazione minima sono O (log n) tempo ammortizzato.

Vedere the comparison of theoretic bounds.

+1

È possibile che non esista alcun codice di produzione, poiché i fattori costanti generalmente rendono gli heap di Fibonacci più lenti degli heap binomiali per i set di dati di dimensioni ragionevoli, nonostante il vantaggio teorico asintotico. –

+0

@OliCharlesworth Interessante, potresti dare una stima approssimativa per quali dimensioni gli heap di Fibonacci diventano vantaggiosi? –

+0

TBH, questo è un po 'fuori dalla mia area; Ho letto solo di questi svantaggi (vedi per esempio [CLRS] (http://en.wikipedia.org/wiki/CLRS)). Non citatemi sopra;) –

risposta

9

Non un heap di Fibonacci, ma altrettanto buono: heaps di Edward Kmett basato sulla variante persistente Brodal/Okasaki di cumuli di Brodal.

+4

Esiste davvero qualcosa che E.Kmett non ha implementato? –

Problemi correlati