相关疑难解决方法(0)

Python:从堆中删除元素

Python具有heapq实现堆数据结构的模块,它支持一些基本操作(push,pop).

如何从O(log n)中的堆中删除第i个元素?是否可以使用heapq或者我必须使用其他模块?

请注意,文档底部有一个示例:http: //docs.python.org/library/heapq.html ,它提出了一种可能的方法 - 这不是我想要的.我想要删除元素,而不仅仅是标记为删除.

python heap

38
推荐指数
2
解决办法
3万
查看次数

26
推荐指数
3
解决办法
3万
查看次数

更改优先级队列中项目的优先级

使用Scala 2.9实现一种Dijkstra算法(伪代码)

val queue = new PriorityQueue
queue.insert(...)
while (!queue.isEmpty) {
  val u = queue.extractMin
  queue.foreach { v =>
    if (condition(u, v))
      queue.decreaseKey(v, newPriority)
  }
}
Run Code Online (Sandbox Code Playgroud)

我想改变Scala中项目的优先级collection.mutable.PriorityQueue.

因此试图

  • 除去项目
  • 改变优先权
  • 重新插入队列.

但是我找不到一种方法来更新优先级或删除特定项目(不一定是头元素),就像从优先级队列java.util.PriorityQueue#remove(Object)删除项目一样.

  • 如何完成此任务scala.collection.mutable.PriorityQueue 或者我必须使用java.util.PriorityQueue

  • 有没有人知道这种方法是否缺乏设计,并且建议在更改某些项目的优先级后重建队列(可能需要查看有关优先级队列与动态项目优先级的讨论)?

algorithm heap scala priority-queue data-structures

15
推荐指数
1
解决办法
1万
查看次数