【发布时间】:2013-03-07 12:58:20
【问题描述】:
Dijkstra 的算法使用优先级队列,该队列按与起点的距离排序,但是在算法过程中顶点的距离会发生变化。我不确定优先级队列何时重新排序,但如果我有以下比较器:
struct compareByDistance
{
bool operator()(Vertex const &a, Vertex const &b)
{
return( getDistance(a) < getDistance(b) );
}
};
在算法过程中,我们只从队列中删除值,所以我无法想象它会完全重新排序。因此,如果距离值发生变化,则队列不会按照距离的顺序排列。
你如何类似地实现它?
【问题讨论】:
-
到目前为止你写了什么?这不是代码编写服务。
-
@Raedwald 当然不是,我想知道一些指导方针或任何不是完整的书面代码。维基百科说应该使用优先队列来完成,但我找不到这样做的方法。
标签: c++ queue priority-queue dijkstra