第三章 路径分析算法——基于Floyd算法的路径分析

2019-10-18  本文已影响0人  文颜

3.2 基于Floyd算法的路径分析

Floyd算法是一种用于在已知给定的加权图中求多源点之间最短路径的算法。它于Diskstra算法类似,不同点在于Diskstra计算的是单源点之间的最短路径。Floyd算法是在数学建模领域和日常工作中使用频率较高的路径分析算法。

3.2.1 应用示例:任意两个城市之间的最短路径

3.2.2 Floyd原理

Floyd作为一种典型的求多源最短路径问题的算法,是解决任意两个点之间最短路径的算法,它的思想是基于动态规划的思想。

1. 动态规划应用

见——第一章 算法基础——基础算法分析类型。

2. Floyd思想

Floyd的核心思想也是基于动态规划的理论,过程也比较简单。

Distx_{i,j,k} 表示为i点到j点过程中以(1…k)集合中的节点为中间节点的最短路径长度,则:

(1)若最短路径经过点k,则Distx_{i,j,k} =Distx_{i,k,k-1} +Distx_{k,j,k-1} ;

(2)若最短路径不经过点k,则Distx_{i,j,k} =Distx_{i,j,k-1}

于是Distx_{i,j,k} =min(Distx_{i,j,k-1} ,Distx_{i,k,k-1} +Distx_{k,j,k-1} ).

Floyd算法的时间复杂度为O(n^3 ),空间复杂度为O(n^2 )

3.2.3 基于Floyd算法计算两个城市最短距离

上一篇下一篇

猜你喜欢

热点阅读