![]() |
1
34
嗯, Queue.PriorityQueue ?回想一下,python不是强类型的,所以您可以保存任何您喜欢的东西:只需创建一个(priority,thing)元组就可以了。 |
![]() |
2
17
我最终实现了
|
![]() |
3
8
当使用优先级队列时,reduce key对于许多算法(dijkstra的算法,a*,optics)来说是必须的操作,我想知道为什么python的内置优先级队列不支持它。其他答案都不提供支持此功能的解决方案。 还支持reduce key操作的优先级队列是 this DanielStutzbach的实现对于我使用Python3.5非常有效。
|
![]() |
4
7
我没用过,但你可以试试 PyHeap . 它是用C写的,所以希望它足够快。 你肯定HeapQ/PriorityQueue不够快吗?从一开始,也许值得和他们一起分析,看看这是否真的是你的性能瓶颈。 |
![]() |
5
6
你看了吗 "Show Source" link 在HeapQ页面上?有一个例子,在使用一个具有(int,char)元组列表的堆作为优先级队列的过程中,还不到一半。 |
![]() |
6
6
可以对非整数元素(元组)使用heapq
|
![]() |
7
2
这是有效的,适用于字符串或任何类型的输入-:)
|
![]() |
8
1
我有一个优先队列/fibonacci堆 https://pypi.python.org/pypi/fibonacci-heap-mod 不是很快(删除min时的大常数c,即o(c*logn))。但是find-min、insert、decrease和merge都是o(1)-low,这很懒惰。 如果对cpython的速度太慢,你可以尝试pypy、nuitka甚至cpython+numba:。 |
![]() |
9
0
如果您希望插入的对象按特定的规则进行优先级排序,我发现编写一个简单的
所需行为的演示 :
Python 2代码
Python 3代码
显然,打电话来
|