gpt4 book ai didi

c++ - Dijkstra算法中的优先级队列如何实现

转载 作者:太空宇宙 更新时间:2023-11-04 14:09:38 24 4
gpt4 key购买 nike

Dijkstra 算法使用优先级队列,该队列按距起点的距离排序,但顶点的距离在算法过程中会发生变化。我不确定优先队列何时重新排序,但如果我有以下比较器:

struct compareByDistance
{
bool operator()(Vertex const &a, Vertex const &b)
{
return( getDistance(a) < getDistance(b) );
}
};

在算法中,我们只从队列中删除值,所以我无法想象它会完全重新排序。因此,如果距离值发生变化,队列将不会按距离顺序排列。

你如何实现与此类似的?

最佳答案

Google 最小-最大(通常是默认值)堆,它将作为优先队列工作。你总是在顶部弹出元素的地方。这将是距离最小的节点。

关于c++ - Dijkstra算法中的优先级队列如何实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15271875/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com