栏目导航
永利网站
推荐产品
联系我们
电话:
手机:
地址:
当前位置:主页 > 永利网站 >
坐在马桶上看算法(7):Floyd最短路径算法 - 文章 - 伯 …
浏览: 发布日期:2018-09-29
在只允许经过1和2号顶点的情况下,任意两点之间的最短路程更新为: 通过上图得知,在相比只允许通过1号顶点进行中转的情况下,这里允许通过1和2号顶点进行中转,使得e[1][3]和e[4][3]的路程变得更短了。 同理,继续在只允许经过1、2和3号顶点进行中转的情况下,求任意两点之间的最短路程。任意两点之间的最短路程更新为: 最后允许通过所有顶点作为中转,任意两点之间最终的最短路程为: 整个算法过程虽然说起来很麻烦,但是代码实现却非常简单,核心代码只有五行:有一点需要注意的是:如何表示正无穷。我们通常将正无穷定义为99999999,因为这样即使两个正无穷相加,其和仍然不超过int类型的范围(C语言int类型可以存储的最大正整数是2147483647)。在实际应用中最好估计一下最短路径的上限,只需要设置比它大一点既可以。例如有100条边,每条边不超过100的话,只需将正无穷设置为10001即可。如果你认为正无穷和其它值相加得到一个大于正无穷的数是不被允许的话,我们只需在比较的时候加两个判断条件就可以了,请注意下面代码中带有下划线的语句。