Floyd-Warshall算法正确性证明
2021-02-05 21:14
标签:扩展 line mat for 基于 ++ 并且 其他 部分 以下所有讨论,都是基于有向无负权回路的图上的。因为这一性质,任何最短路径都不会含有环,所以也不讨论路径中包含环的情形!并且为避免混淆,将“最短路径”称为权值最小的路径,将路径经过的点数-1称为路径的长度。 Floyd-Warshall算法正确性证明 标签:扩展 line mat for 基于 ++ 并且 其他 部分 原文地址:https://www.cnblogs.com/crazyfz/p/12785136.html先列出算法的c语言代码实现,后面将用这段代码来辅助证明。
int n;//从1..n共n个点
int dis[maxn][maxn];//权值邻接矩阵
init();//初始化数据
for(int k=1;k
先用比较形象的语言来简单叙述一遍。
下面是比较符号化的严谨证明。
这样,\(R\)中就包含了:起点与终点之间(不包含起点、终点),仅含点1的所有路径。因为没有负权回路,所以后续更新的多次经过点1的路径都不影响最小权值性质,并且也可以被R中去除路径中回路部分的路径替代(不影响其连接作用且权值更小,以下将不再讨论有回路的路径情况)。
在做作业的时候遇到这个算法,想起来好像一直在用但并不理解它的正确性,所以尝试证明了一下。正好也作为我写博客的一个开头吧。
文章标题:Floyd-Warshall算法正确性证明
文章链接:http://soscw.com/index.php/essay/51496.html