迪杰斯特拉算法要求
- 1.必须给一个起点,求出起点到任何节点的最短路径,如果不可达那么距离设定为正无穷
- 2.输出一张表记录一个节点到任何节点的最短路径
- 3.dijkstra本质是一种贪心算法
要求: 不能出现权值为负的边(如果沿途路径不能构成一个环那么也可以,但最好不要有)
操作: 维护一张记录起点到任何节点的距离映射表,初始化起始点到自身距离为0,遍历该节点到其所有边可到达的最短距离并存入距离映射表,如果已存在比对存有的距离与当前距离取最小并更新距离映射表,一度完成后将该节点锁定到lockedSet中.开启下一轮,找出不存在与锁定set且距离最小的节点作为跳跃点 ...
/**
* 给定一个起点返回该起点到任何节点的最短路径
* @param start 起点
* @return 最短路径表
*/
public static HashMap<Node,Integer> dijkstra(Node start){
//距离表
HashMap<Node,Integer>
迪杰斯特拉算法详解:找到任意节点的最短路径

迪杰斯特拉算法是一种贪心算法,用于求解起点到图中任意节点的最短路径。在算法过程中,需要初始化起点到自身的距离为0,并维护一个距离映射表。每次遍历时,会更新当前节点到其相邻节点的最短距离,并锁定已处理的节点。该算法不适用于存在负权边的情况,除非路径中无法形成环。通过不断迭代,找出未锁定节点中距离最小的节点作为下一次更新的目标。
最低0.47元/天 解锁文章

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



