单源最短路径-迪杰斯特拉算法
例题
求顶点一到各个顶点的最短路径
简单概括:
每次选取离1最近该顶点作为源点,然后计算不断更新最短距离,更新的方法就是,计算前驱节点的最短路径+前驱节点到本节点的距离与本节点原来的距离大小判断是否更新
步骤分析:
1、建立三个数组
distance[]:存放1到各个顶点的最短路径
pre[]记录从1到这个顶点的路径中该顶点的前驱节点
true[],判断该顶点是否找到前去路径
2、初始化
distance:0,7,11,0,0,0,0
pre:0,1,1,0,0,0,0
true:1,0,0,0,0,0
3、第一轮迭代
dis数组最小且true=0表示离1最近而且没有找到最短路径的点·=2
更新:
dis:0,7,11,16(以2为前驱点,4的路径是2
的路径加上2到四的路径),0,0,0
pre:0,1,1,2(4的前驱点)
true:1,1,0,0,0,
4、二轮迭代
选择3