根据计算机考研中对于求解最短路径算法的出题形式,以Dijkstra算法为重要考点,Dijkstra算法对于求解一个顶点到其他任意的顶点之间的最短路径的问题,可以说是非常实用。
同时对于求解各个端点到其他端点的最短路径的集合这个问题,Dijkstra算法便没有那么优势了,本着学习就要学全面的特点,下面对Floyd算法进行原理讲解,(只讲执行过程,不涉及到算法的代码实现)
时间复杂度介绍
算法执行准备
2. Floyd算法的执行过程需要我们在草稿纸上画出,两个矩阵,一个是上图中的边与边对应的权值关系,另一个是节点指向节点的路径显示,因此给出两个矩阵结构图如下:
3. 准备好初始的矩阵的条件节点后,我们对其进行Floyd算法的执行分析:
Floyd算法执行过程
根据上述图片对其进行第一轮的加入C节点进行操作分析:
下面进行第二轮更新,选择加入B节点:其执行图如下:
以上是第二轮加入B节点进行矩阵更新后的第二轮流程:
最后是最后一轮加入节点A,由于其中一共有三个节点,因此只需要执行三轮,这里有几个节点就要几轮操作。
第三轮更新:加入A节点
执行图如下:
其Floyd执行算法的流程如下,其思路了解掌握就好,代码时间复杂度n的三次方有点高,有需要可以了解下。