Dijsktra解决的问题
迪杰斯特拉算法主要用于求解单源最短路径问题。
实现思路
- 为每个节点设定检查标记、记录最短路径和记忆最短路径。
- 从源头节点开始到最后一个节点记录,按权重从小到大遍历每一条路,将当前节点最短路与权重之和跟路指向的节点的最短路径判断,更新路指向的节点的最短路径和记忆最短路径。
- 选定下一个节点的关键判断是,检查标记和最短路径大小。选择最短路径最小和未检查过的节点。
- 重复第2、3步骤,直至遍历完所有图节点。
代码实现
class graph{
vector<graphNode> nodes;
...
}
class route{
graphNode orgin;
graphNode dest;
int weight;
...
}
class graphNode{
string nodeName;
vector<route> routes;
...
}
void Dijkstra(const graph& G, const graphNode& orgin, const graphNode& dest)
{
//check null
if(!orgin || !dest){
....
return;
}
//1、为每个节点声明检查标记和最短路径
map
迪杰斯特拉算法详解:求解单源最短路径的C++实现

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



