标签: data-structures functional-programming priority-queue dijkstra
当我们将节点重新插入优先级队列时,Dijkstra的最短路径算法为O(E log V)。但是,如果我们使用常量时间decrease_key,并且为此公布了Fibonacci堆,则算法为O(V log V),因为没有为每个边输入主循环,仅针对每个顶点。这是纯粹的功能设置吗?以及如何 - 搜索减少密钥的节点已经O(log n)?我在互联网上发现2-3个手指树可用于实现摊销O(1) decrease_key,Haskell或OCaml的实现是否支持它?
O(E log V)
decrease_key
O(V log V)
O(log n)
O(1)