floyd的相关概念看这里。
floyd的代码实现其实很简单:
这里我一直好奇的是这三个漂亮的循环是怎么完成最终正确的结果的,如何证明它们是正确的。直到看了这里的解析,才算弄懂了。
floyd算法是一个经典的动态规划算法。用通俗的语言来描述的话,首先我们的目标是寻找从点i到点j的最短路径。从动态规划的角度看问题,我们需要为这个目标重新做一个诠释(这个诠释正是动态规划最富创造力的精华所在),floyd算法加入了这个概念
Ak(i,j):表示从i到j中途不经过索引比k大的点的最短路径。
这个限制的重要之处在于,它将最短路径的概念做了限制,使得该限制有机会满足迭代关系,这个迭代关系就在于研究:假设Ak(i,j)已知,是否可以借此推导出Ak-1(i,j)。
假设我现在要得到Ak</

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

被折叠的 条评论
为什么被折叠?



