沃舍尔算法_【图论】计算机科学:Floyd-Warshall算法(弗洛伊德算法)

不同于Dijkstra算法,Floyd-Warshall算法可以求出一张图中任意两点的距离。

该算法由1978年图灵奖获得者斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名。伯特·弗洛伊德先生图灵奖:作为计算机权威奖项之一,被誉为计算机界的“诺贝尔”奖。截至至2020年11月,姚期智先生是我国唯一一位获此殊荣的计算机科学家。姚期智先生

算法的核心思想:动态规划。

设置状态:d[k][i][j]的含义是,假如思考的路径包含了k号点(0->k)(注释:未必非要从K顶点走),那么最优的答案是多少呢?

现在,假设所有的之前的状态方案已经转移完成:【k-1】层次的点,那么现在对于【K】的转移:

应该考虑这个问题:(1)不走K顶点,那么就是d[k][i][j]=d[k-1][i][j];(2)走了K顶点:那么状态转移就是d[k][i][j]=d[k-1][i][k]+d[k-1][k][j];

所以最终的状态转移方程是:d[k][i][j]=min(d[k-1][i][j],d[k-1][i][k]+d[k-1][k][j]);

当k=0的时候,那么意思就是直接相连那么这个值就是cost(I,j);(路径上的花费)

现在,如果我们把i,j转化成坐标轴的x轴,y轴,把k化为z轴。

那么在三维的坐标里面。k是从下往上不会突然返回的,那么实际上可以不再考虑k的值,从而直接更新d[i][j]的值,那么就不需要三

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值