【发布时间】:2016-02-13 04:37:27
【问题描述】:
我正在尝试运行 Dijkstra 的算法,我需要实现 decreaseKey 函数。我很难做到。我阅读了一个解决方案here,但它通过在堆中存储哈希映射来使用大量内存。有没有办法在没有哈希映射的情况下实现 decreaseKey 并且仍然保持 O(log n) 时间?
到目前为止,我的decreaseKey 函数有两个参数:vertex 和 newDistance。当我调用decreaseKey(vertex * v, int newDistance) 时,算法必须找到存储顶点“v”的索引,然后更改其距离。我不知道如何“找到”顶点以获取其索引并将其保存在 O(log n) 时间内。
【问题讨论】:
标签: c++ algorithm heap priority-queue