Floyd算法(即佛洛伊德算法)用来解决全源最短路径问题,即对给定的图G(V,E),求任意两点u,v之间的最短路径长度,时间复杂度是O(n^3)。由于时间复杂度是O(n^3),所以顶点数n一般限制在200以内,因此使用邻接矩阵来实现Floyd算法。

Floyd算法基于这样一个事实(要理解此算法最好理解一下此处):如果存在顶点k,使得以k作为中介点时顶点i和顶点j的当前最短距离缩短,则使用顶点k作为顶点i和顶点j的中介点,即当 dis[i][k] + dis[k][j] < dis[i][j] 时,令 dis[i][j] = dis[i][k] + dis[k][j]。如图举例:从V1到V4的距离为3,而以V2为中介点时可以使V1到V4的距离缩短为2,那么就把V1到V4的距离从3优化为2,即当  dis[1][2] + dis[2][4] < dis[1][4] 时,令 dis[1][4] = dis[1][2] + dis[2][4] 。

所以,基于上面的事实, Floyd有关代码为:

void Floyd(){for(int k = 0; k < n; k++){for(int i = 0; i < n; i++){for(int j = 0; j < n; j++){//若i能到达k && k能到达j && 以k为中介点后i到j的距离缩短if(dis[i][k] != INF && dis[k][j] != INF &&dis[i][k] + dis[k][j] < dis[i][j]){dis[i][j] = dis[i][k] + dis[k][j];}}}}
} 

最短路径之佛洛伊德算法相关推荐

  1. 最短路径-Floyd(佛洛伊德算法)

    佛洛伊德算法时间复杂度为O(n^3),其中n为顶点的个数. Floyd可求出任何一对顶点之间的最短路径.允许图中有带负权值的边,但是不允许有包含带负权值的边组成的回路. #include <io ...

  2. 66最短路径算法-佛洛伊德算法

  3. 【数据结构】什么是图的最短路径?实现最短路径的2种算法?

    目录 一.什么是最短路径? 二.实现最短路径的2种算法? 三.最短路径 1.某个顶点到其余各顶点的最短路径:迪 杰斯特拉(Dijkstra)算法 2.每一对顶点之间的最短路径: 佛洛依德(Floyed ...

  4. #1093 : 最短路径·三:SPFA算法(邻接表)

    #1093 : 最短路径·三:SPFA算法 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 万圣节的晚上,小Hi和小Ho在吃过晚饭之后,来到了一个巨大的鬼屋! 鬼屋中一共 ...

  5. 最短路径问题:Dijkstra算法详解

    前言  Nobody can go back and start a new beginning,but anyone can start today and make a new ending.  ...

  6. 贪心算法之用优先队列解决最短路径问题(Dijkstra算法)

    1.问题 最短路径问题(Dijkstra算法)用 优先队列实现,问题描述和分析和优先队列先看前面我的几篇博客 贪心算法之最短路径问题(Dijkstra算法) C++之STL之priority_queu ...

  7. 【最短路径】之Dijkstra算法

    最短路径 单源最短路径:计算源点到其他各顶点的最短路径的长度 全局最短路径:图中任意两点的最短路径 Dijkstra.Bellman-Ford.SPFA求单源最短路径 Floyed可以求全局最短路径, ...

  8. 【最短路径】:Dijkstra算法、SPFA算法、Bellman-Ford算法和Floyd-Warshall算法

    求最短路径最常用的算法有: Dijkstra算法.SPFA算法.Bellman-Ford算法和Floyd-Warshall算法. Dijkstra算法.SPFA算法.Bellman-Ford算法这三个 ...

  9. python广度优先算法最短路径_最短路径问题的Dijkstra算法 -python

    最短路径问题的Dijkstra算法 是由荷兰计算机科学家艾兹赫尔·戴克斯特拉提出.迪科斯彻算法使用了广度优先搜索解决非负权有向图的单源最短路径问题,算法最终得到一个最短路径树>    .该算法常 ...

最新文章

  1. poj2002 poj3432 正方形个数 (hash,二分)
  2. html js 动态表格数据,HTML+JS动态表格
  3. Python isnumeric()方法
  4. Java 8实现BASE64编解码
  5. windows 2003 网络负载平衡设置实战
  6. 只需2步,教你在Vue中设置登录验证拦截
  7. 楼层平面放线及标高实测记录_建筑工程定位放线技术交底施工单位测量人员必备...
  8. 文本相似性度量---------字符串近似相等
  9. 3.PHP核心技术与最佳实践 --- PHP网络技术及应用(cURL,socket,SMTP,WebService,Cookie,Session,localStorage)
  10. c语言求个十百千万大写,大写数字一到十百千万怎么写?大写数字0到十百千万图片...
  11. 全站即时通讯技术资料分类
  12. 多种方法在Markdown加入上划线、中划线、下划线
  13. 家庭影院.液晶电视.液晶电视连接电脑全功略
  14. AI红包皮速领,人类现金速抽|祝大家新春快乐
  15. 中南大学计算机系可以蹭课吗,在中南、师大上湖大的课,985/211就是会玩!
  16. sqli-labs(全通关刷题笔记)
  17. 自定义侧边栏滚动条样式
  18. Windows下通过AFUWIN批量刷AMI类型主板的BIOS
  19. vue中怎么根据不同的(分屏模式)调整【自定义不同视频布局】?
  20. Git+Github 的工作流程

热门文章

  1. QGroundControl 提示 Power redundancy not met: 0 instead of 1
  2. 在虚幻引擎5中构建你的首款游戏 - 10[完] - 特效音效镜头震动打包
  3. android espresso 教程,Android Espresso入门到自动搞定
  4. 安装ssd后不识别网卡_安装固态硬盘后读不出来,怎么解决?
  5. 青龙面板篇——美团(细致教程 有手就行~)
  6. 在遗忘边缘试探的matlab函数
  7. 1359 信息学奥赛一本通 围成面积
  8. h5活动是什么意思_H5活动页面可以有哪些作用
  9. Incapsula专业提供后门特洛伊保护
  10. 手写中文文章识别(1)——问题描述