floyd-warshall算法浅理解
相比于矩阵乘法,floyd巧妙利用了最短路具有最优子结构的性质,即最短路径的子路径也是最短路径,得到以 d i j ( k ) d_{ij}^{(k)} dij(k)(为从i到j的一条中间节点全部取自集合 { 1 , 2 , . . . , k } \{1,2,...,k\} {1,2,...,k}的一条最短路径权重)为状态的转移方程,减少每次迭代的计算量,而且迭代过程只需保存两个矩阵 D ( k ) D^{(k)} D(k)和 D ( k + 1 ) D^{(k+1)} D(k+1),这也允许我们方便地进行手工验证。
求 D i j ( k + 1 ) D^{(k+1)}_{ij} Dij(k+1)时,仅对应floyd算法的一步松弛 D i j ( k + 1 ) = m i n ( D i j ( k ) , D i k ( k ) + D k j ( k ) ) D^{(k+1)}_{ij}=min(D^{(k)}_{ij},D^{(k)}_{ik}+D^{(k)}_{kj}) Dij(k+1)=min(Dij(k),Dik(k)+Dkj(k)),就是找到前一个矩阵的第 i i i行第 k + 1 k+1 k+1个元素以及第 j j j列第 k + 1 k+1 k+1个元素求和和 “十字” 中心元素比大小。
举个例子,如图, D 45 ( 1 ) D_{45}^{(1)} D45(1)更新为 -2,因为 D 45 ( 0 ) > D 4 k ( 0 ) + D k 5 ( 0 ) D_{45}^{(0)}>D_{4k}^{(0)}+D_{k5}^{(0)} D45(0)>D4k(0)+Dk5(0),此时 k = 1 k=1 k=1,找到 D 41 ( 0 ) D_{41}^{(0)} D41(0)和 D 15 ( 0 ) D_{15}^{(0)} D15(0).
由于矩阵共有 n 2 n^2 n2个元素,floyd做到了 O ( n ) O(n) O(n)求每个元素,按老师的话说,别人很难想到,因此,前面的矩阵乘法方法叫矩阵乘法求全源最短路,而这个算法用floyd的名字命名。
floyd-warshall算法浅理解相关推荐
- C++floyd warshall算法求最短路径(附完整源码)
C++floyd warshall算法求最短路径 floyd warshall算法求最短路径的完整源码(定义,实现,main函数测试) floyd warshall算法求最短路径的完整源码(定义,实现 ...
- Floyd Warshall算法
Description: 描述: This is a very popular interview problem to find all pair shortest paths in any gra ...
- WarShall算法求传递闭包(可达矩阵)
最近在复习离散数学,顺便记录记录自己对warshall算法的理解. 1.传递闭包(可达矩阵) 传递闭包是有向图的一个重要性质,它指的是在有向图中从任意一个节点出发,可以到达的所有节点的集合.在某些应用 ...
- 浅谈Warshall算法
Warshall算法 今天的离散数学课后作业里有需要求传递闭包的题目,不懂上课没听,本来想用matlab偷一下懒,但是搜到了Warshall算法,故参考百科及其它博客后写水篇博客. 传递性 了 ...
- 怎么使用计算机算法,浅谈如何在用计算机来更好的实现Floyd算法
[摘 要]本文主要介绍了数学建模中的一个常用的方法(Floyd算法).我们首先介绍了邻接矩阵的定义.其次,阐述了Floyd算法的具体内容以及Floyd算法的改进.最后,给出了Floyd算法的广泛应用, ...
- 【算法】弗洛伊德(Floyd)算法
这个算法主要要弄懂三个循环的顺序关系. 弗洛伊德(Floyd)算法过程: 1.用D[v][w]记录每一对顶点的最短距离. 2.依次扫描每一个点,并以其为基点再遍历所有每一对顶点D[][]的值,看看是否 ...
- (转载)机器学习知识点(十五)从最大似然到EM算法浅解
从最大似然到EM算法浅解 机器学习十大算法之一:EM算法.能评得上十大之一,让人听起来觉得挺NB的.什么是NB啊,我们一般说某个人很NB,是因为他能解决一些别人解决不了的问题.神为什么是神,因为神能做 ...
- EM从最大似然到EM算法浅解
从最大似然到EM算法浅解 zouxy09@qq.com http://blog.csdn.net/zouxy09 机器学习十大算法之一:EM算法.能评得上十大之一,让人听起来觉得挺NB的.什么是NB啊 ...
- 智能算法浅介----模拟退火,遗传算法,禁忌搜索,神经网络等
本文讲的过于笼统,如果想真正理解,请参考: 1模拟退火 2遗传算法 3禁忌搜索 智能算法浅介----By cooler 一个比方 在工程实践中,经常会接触到一些比较"新颖的算法"如 ...
最新文章
- 在PHP中模拟asp的response类
- java cdata xml 解析,如何解析lt;![CDATA []]gt;的XML
- Ubuntu16.04下使用ufw保护docker容器
- 命名空间“Microsoft.Office”中不存在类型或命名空间名称“Interop”(是否缺少程序集引用?...
- 深入jvm虚拟机第4版_深入理解JVM虚拟机
- CentOS下编译64位的libpython2.6.so.1.0库
- js学习笔记 chapter5 引用类型
- 虚拟机设计与实现:以jvm为例 pdf_Java虚拟机:Jvm概念和原理详解以及GC机制的分析...
- 深入理解 Hive 分区分桶 (Inceptor)
- 【微信小程序开发】 踩坑 抽奖幸运大转盘 完美实战
- 计算机黑屏但是有鼠标,电脑黑屏有鼠标箭头怎么办
- SpringBoot使用快递鸟进行电子面单的获取以及打印
- 新浪博客服务器是不是在维护,新浪博客是不是又在升级了?
- java gzip rest_使用restclient或postman发送gzip数据
- 月薪2300深圳流水线女工,逆袭为年薪80万谷歌工程师,又因疫情失业:我绝不轻易认输...
- 先有鸡还是先有蛋?先有操作系统,还是先有汇编器?(对计算机本质的探讨)
- OSChina 周四乱弹 ——潘金莲告西门庆
- (二)树莓派系列教程:树莓派4B手动连接wifi,远程控制。命令行界面、桌面界面
- 超级详细利用Vmware部置XP虚拟机
- LintCode Find the Duplicate Number
热门文章
- Spring学习笔记(二十三)——实现网站微信扫码登录获取微信用户信息Demo
- 【微信小程序】选择器组件picker
- elasticsearch最大节点数_记录 Elasticsearch 的 maximum shards open 问题
- iOS程序模块化设计
- 学习与尝试 --> 事件风暴
- 一种实用的笑脸检测方法
- 傅里叶变换与小波分析
- Android 实现微信,QQ的程序前后台切换:back键切换后台;点击通知栏恢复前台。
- windows10 系统配置nginx文件服务器
- 界面组件——按钮(Button)与图片按钮(ImageButton)