输入可能是边以及权值,将其保存在邻接表之后转为使用邻接矩阵来进行存储。然后需要一个数组来存放从起点到所有点的距离的数组dist,需要一个visited数组来表示是否以访问。
算法流程:
- 首先初始化起点到各点的初始距离
- 选择其中最短的一个距离对应的顶点,并且要求该点未被访问。这个时候选到的点为起点到该点的最短距离,可以使用反证法证明:如果此时选到的点不是最短的距离,那么肯定有另外一个点,起点到达该点之后再到达选中的点的距离更短。但是由于迪杰斯特拉算法解决的是权值非负的图,因此在此基础上再加多边只会更大。因此此时选到的点就是起点到选中点的最短距离。
- 然后将该点标记为已访问,然后从该点往其他未访问过的点前进,因为已访问过的点已经是最短距离了,无需再访问,此过程如果发现新的路径更短,那么更新dist数组。
- 重复2,3直至访问玩所有顶点。
标签:选到,迪杰,访问,算法,该点,斯特拉,起点 From: https://www.cnblogs.com/hailanben/p/17374226.html