目录
Floyd-Warshall算法具体介绍
Floyd-Warshall算法简介
Floyd-Warshall算法,中文也称为弗洛伊德算法,是解决任意两点间的最短路径的一种算法,可以处理无向图或者有向图(可以有负权重,但不存在负权回路)的最短路径问题。
弗洛伊德算法与迪杰斯特拉算法或贝尔曼算法相比,可以一次性求出任意两点之间的最短路径,后两种算法运行一次只能计算出给定起点和终点之间的最短路径。
Floyd算法计算的时间要高于后两种算法,其算法核心由三重循环构成。
最短路径应满足的结论
从上图中可以得到以下两个结论:
(1)如果某个节点位于从起点0到终点4的最短路径上,那么:
从0到4的最短路径的距离=从0到8的最短路径的距离+从8到4的最短路径的距离
(2)如果某个节点不在从起点0到终点4的最短路径上,那么:
从0到4的最短路径的距离从0到3的最短距离+从3到4的最短距离
<