floyd算法,求任意点间最短距离

有向图G中可能存在负边,但不存在负边灰回路,此时求G上任意两点间的最短距离,可以用Floyd算法。W[i][j]代表i到j的边权值,如果i==j,则W[i][j]=0,如果i和j之间没有边,则W[i][j]=infinite。节点记号为1->n。

构造d[k][i][j],它代表当从i到j的最短路径中所包含中间节点只能落在1->k时,所得最短路径长度。
递推式:
最终d[n][i][j]极为i到j的最短路径(因为它考虑了中间节点为1->n的所有情况)。

构造p[k][i][j],它代表当从i到j的最短路径中所包含中间节点只能落在1->k时,j的前序节点。
初始时,当i==j时,p[0][i][j]=-1;当i到j没有边时,p[0][i][j]=-1;当i到j有边时,p[0][i][j]=i。
当k>0时,递推式:

最终最短路径可以由p[n][i][j]获得。

伪代码:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值