相关疑难解决方法(0)

Haskell中优先级队列实现的比较

Haskell似乎有几种现成的优先级队列实现.例如,有:

两者似乎都是纯优先级队列数据结构.前者基于手指树,这是一种我不熟悉的数据结构; 后者是Data.Map的包装器.还有

它定义了纯功能堆数据结构,从中可以轻松地创建优先级队列..还有

它们都使用Brodal/Okasaki数据结构实现纯功能可融合堆,我认为这类似于非纯函数域中的二项式堆数据结构.

(哦,还有

  • Data.PriorityQueue(在hackage的priority-queue-0.2.2中)

它的功能对我来说不清楚,但它似乎与monad相关的构建优先级队列,并且无论如何似乎都建立在Data.Map之上.在这个问题中,我关注纯粹的功能优先级队列,所以我认为priority-queue-0.2.2包是无关紧要的.但如果我错了,请纠正我!)

对于我正在构建的项目,我需要一个纯函数优先级队列数据结构.我想知道是否有人可以提供任何智慧的话语,因为我决定了hackage提供的财富的尴尬.特别:

  1. 假设我想在纯函数/不可变表示中执行除传统优先级队列插入和提取最小值操作之外的功能.上面提到的包的优缺点是什么?有没有人有'愤怒'使用其中任何一个的经验?表现有哪些权衡?可靠性?其他人更广泛地使用哪种?(使用这些可能会使我的代码更容易让其他人阅读,因为他们更有可能熟悉该库.)在他们之间作出决定之前还有其他我应该知道的事情吗?
  2. 如果我也想要有效合并优先级队列,那么呢?(我不赞成这个项目,但我想添加这个,但会使SO问题对未来的读者更有用.)
  3. 我错过了还有其他优先级队列包吗?

haskell

56
推荐指数
1
解决办法
8996
查看次数

标签 统计

haskell ×1