Dijkstra 的算法使用优先级队列,该队列按距起点的距离排序,但是在算法过程中顶点的距离会发生变化。我不确定优先级队列何时重新排序,但如果我有以下比较器:
struct compareByDistance
{
bool operator()(Vertex const &a, Vertex const &b)
{
return( getDistance(a) < getDistance(b) );
}
};
在算法过程中,我们只从队列中删除值,所以我无法想象它会完全重新排序。因此,如果距离值发生变化,则队列不会按距离顺序排列。
您如何与此类似地实现它?