从floyd算法学习动态规划

本文深入探讨了Floyd算法的原理和实现,通过三个嵌套循环完成寻找最短路径的过程。通过动态规划的角度,引入了Ak(i,j)的概念,解释了如何通过递归公式推导最短路径,并讨论了初始状态的设定。Floyd算法展示了动态规划在解决最短路径问题上的创造性应用。" 106498721,8599412,Map数据结构详解与实现类,"['数据结构', 'Java', '接口', '集合', '排序', '线程安全']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    floyd的相关概念看这里

    floyd的代码实现其实很简单:

     

    这里我一直好奇的是这三个漂亮的循环是怎么完成最终正确的结果的,如何证明它们是正确的。直到看了这里的解析,才算弄懂了。

    floyd算法是一个经典的动态规划算法。用通俗的语言来描述的话,首先我们的目标是寻找从点i到点j的最短路径。从动态规划的角度看问题,我们需要为这个目标重新做一个诠释(这个诠释正是动态规划最富创造力的精华所在),floyd算法加入了这个概念

    Ak(i,j):表示从i到j中途不经过索引比k大的点的最短路径

    这个限制的重要之处在于,它将最短路径的概念做了限制,使得该限制有机会满足迭代关系,这个迭代关系就在于研究:假设Ak(i,j)已知,是否可以借此推导出Ak-1(i,j)。

    

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值