Dijistra算法
最短路径问题
算法步骤:
(1)初始两个集合S={V0},T={其余顶点},V0为原点。
(2)判断T中各顶点到原点V0的直达距离<V0,Vi>是否存在,若存在,将其对应的权值存放在辅助数组D[i]中,否则将∞存入。
(3)找出D[i]中最短距离Dj(Dj=min{D[i]}),将Dj对应的顶点Vj存入S中,重新判断V0到各顶点的距离是否因Vj的加入而变得更小,若变得更短,则修改此距离值,重复上述步骤,直到S=V为止,(V=S+T)。
图截自https://www.bilibili.com/video/BV1Ut41197ae/?spm_id_from=trigger_reload视频文件