Fag*_*ain 4 heap f# priority-queue
我试图使用这段代码
https://code.msdn.microsoft.com/windowsdesktop/Net-Implementation-of-a-d3ac7b9d
实现Prim算法的基于堆的实现,以解决非定向连通图中的最小生成树(MST)问题.
经过几次迭代后,我发现堆/优先级队列不再得到很好的维护.这是PriorityQueue的头部没有堆中最低的Key.
PQ 0 [-7230, 309]
...
PQ 146 [-7277, 308]
Run Code Online (Sandbox Code Playgroud)
有没有人使用此代码并遇到类似的问题?如果有人在看它,我可以在GitHub上发布一个链接
我的需求是堆数据结构,它支持删除中间的元素.看起来Fsharpx.collections没有这样的数据结构.
有人知道某处有好的实施吗?
谢谢
最近,我移植一个MaxHeap从PLINQ到F#在这里,并使其MinHeap.它基于数组,并且比任何"纯功能"替代方案都表现得更好.
然而,经过大量的基准测试后,我发现SortedDeque基于一个简单的排序循环缓冲区,在大多数用例中表现得更好,即使我需要在中间添加或删除.