图-最短路径

最短路径

  • 网图:两个 顶点之间经过的边上权值之和最小的路径;

迪杰斯特拉(Dijkstra)算法

  • 按照路径长度递增的产生最短路径;
  • 不是一次性算出两个定点之间的最短距离;
  • 通过计算每个中间顶点的最短距离,最后推导出要求的顶点最短距离;
graph-matrix
graph-matrix

graph-Dijkstra_code1
graph-Dijkstra_code1
graph-Dijkstra_code2
graph-Dijkstra_code2
  1. 5~12行是初始化阶段,final一维数组值均为0,D数组记录所有顶点到v0的最短路径值,当前是{65535,1,5,65535,65535,65535,65535,65535,65535},p数组全为0,表示目前还没有找到任意一个顶点的最短路径
  2. 13行是一个主循环,每循环一次求得v0与一个顶点的最短路径,也就是让一个顶点的final值为1
  3. 16~24行的循环,先令min为65535,通过w循环,与D[w]比较,找到目前最小的min和k值。当前是:D[1]的值最小,因为在第一次初始化的时候,v0连接的就两条边,v1和v2,如果是第二次循环,那就是D[2]
  4. 25~32行,是在修正之前已经判定的v0和某个点的最短距离,例如:在初始化的时候v0到v2的最短距离是5,但是第一次循环完成之后,发现v0->v1=min=1,v1->v2=3,因此v0->v1->v2=min+G.matirx[v1][v2]=4,这个值是小于D[2]=5的
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容