Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a Fibonacci heap based priority queue for Haskell?

Is there a Fibonacci heap/priority queue available for Haskell? (Or even an asymptotically better one?) I found a list of various priority queue implementations in this question, but I couldn't find if any of them satisfies the amortized running time of Fibonacci heaps:

  • Find-minimum is O(1) amortized time.
  • Operations insert, decrease key, and merge (union) work are O(1) amortized time.
  • Operations delete and delete minimum are O(log n) amortized time.

See the comparison of theoretic bounds.

like image 683
Petr Avatar asked May 29 '13 09:05

Petr


People also ask

Is Fibonacci heap a priority queue?

In computer science, a Fibonacci heap is a data structure for priority queue operations, consisting of a collection of heap-ordered trees. It has a better amortized running time than many other priority queue data structures including the binary heap and binomial heap.

Are Fibonacci heaps used in practice?

To the best of my knowledge, there are no major applications that actually use Fibonacci heaps or Brodal queues. Fibonacci heaps were initially designed to satisfy a theoretical rather than a practical need: to speed up Dijkstra's shortest paths algorithm asymptotically.

Why is Fibonacci heap called Fibonacci heap?

The fibonacci heap is called a fibonacci heap because the trees are constructed in a way such that a tree of order n has at least Fn+2 nodes in it, where Fn+2 is the (n + 2)th Fibonacci number.


1 Answers

Not a Fibonacci Heap, but just as good: heaps by Edward Kmett based on the Brodal/Okasaki persistent variant of Brodal heaps.

like image 87
Philip JF Avatar answered Oct 12 '22 02:10

Philip JF