有没有一种在Haskell中实现快速优先级队列的简单方法?

Jak*_*old 4 haskell functional-programming priority-queue finger-tree data-structures

我已经google了一下,发现了一篇关于Finger Trees的文章,它可用于实现具有适当渐近复杂度的优先级队列,但它们非常复杂,但仍然是我能找到的最简单的东西.

是否有一个简单的数据结构允许在Haskell中实现快速优先级队列?简单你能解释给新手程序员.

bit*_*app 8

Hackage上堆包声称是基于Okasaki的左派堆.

来自文档:

如果需要简单的最小或最大堆(始终将最小/最大元素保持在堆的头部),请选择MinHeap或MaxHeap.

如果您希望手动注释具有优先级的值,例如使用Int使用MinPrioHeap或MaxPrioHeap的IO()操作.它们管理(prio,val)元组,以便只有优先级(而不是值)影响元素的顺序.

如果您仍然需要不同的东西,可以通过实现HeapItem的实例来定义堆元素的自定义顺序,并让维护者知道缺少什么.

  • 谢谢!这正是我所寻找的. (2认同)