迪杰斯特拉算法的作用:
计算图中某个顶点到其他顶点的最短路径,边的权值不能为负数
迪杰斯特拉算法的基本思想及代码介绍:
https://www.cnblogs.com/skywang12345/p/3711512.html
迪杰斯特拉算法的正确性证明:
数学上的证明:https://www.zhihu.com/question/20630094
扣鼎之歌的回答 清晰地证明了dist[j] = min{dist[j], dist[i] + matrix[i][j]}
贪心算法的最优子结构性质:https://zhidao.baidu.com/question/489320921946816252.html
整体最优必定局部最优,但并不是所有局部最优解都被整体最优解包含
根据上述资料可以了解到,每当确定了一个顶点(初始顶点也算在内)的最短路径,并对所有已找到最短路径的顶点的邻居顶点进行调整后,下一个顶点的最短路径也就确定了
例子如下:
初始状态:
在flag=0的顶点中比较dist,选择顶点c(可以看到c是a的邻居顶点),令c的flag=1,改变其他顶点的dist,如下:
选择顶点d(d也是a,c的邻居顶点),操作同上:
选择顶点e(e是a,c,d的邻居顶点),操作同上:
选择顶点f(f是a,c,d,e的邻居顶点),操作同上:
选择顶点b,这时所有的顶点找到了最短路径,结束