从最短路径角度证明floyd算法正确性

       floyd最短路径算法是用于求图中任意两点之间最短路径的经典算法,但是关于其正确性的证明书上以及网上并没有很好的解释。一年前自己从最短路径结果本身出发想出了证明办法,但是一直没有发表,今天和朋友又聊起了这个话题,就整理了思路,写出来,与大家分享。

       我们这里从有N个节点的无向图入手进行证明。若图中两个节点不连通,那么经过算法计算后仍为不连通。若它们连通就必然存在一条最短路径。假设任意2节点之间存在一条最短路径,该路径上有M个节点(M<N)。floyd算法为三重循环,我们重点考虑最外层循环,我们将最外层循环此时所在的节点称为“桥点”。桥点遍历到了某一节点时,算法就会计算任意一点A到桥点的距离加上任意一点B到桥点距离的和,并将这个和与矩阵中存储的A到B的路径的距离进行比较,将短的存入矩阵中相应的位置。可以根据以下代码进行理解。


下面是证明用到的图


       为了叙述方便&#

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值