Floyd-Warshall算法
简单路径p={v1,v2,...,vl}上的中间顶点是除v1和vl以外p上得任何一个顶点。
令dij(k)为从顶点i到顶点j、且满足所有中间顶点皆属于{1,2,...,k}的一条最短路径的权值。当k=0时,从i到j根本不存在中间顶点。
递归式为
dij(k)=wij if k=0 or min(dij(k-1) , dik(k-1) + dkj(k-1)) if k>=1
1 int D[5][25]; 2 3 void Floyd_Warshall(const Graph* g) 4 { 5 for(int i=0;i<25;++i) 6 D[0][i]=g->W[i]; 7 8 for(int k=1;k<=5;++k) 9 {10 for(int i=1;i<=5;++i)11 {12 for(int j=1;j<=5;++j)13 {14 int a=D[k-1][5*(i-1)+j-1];15 int b=D[k-1][5*(i-1)+k-1]+D[k-1][5*(k-1)+j-1];16 if(a<b)17 D[k][5*(i-1)+j-1]=a;18 else19 D[k][5*(i-1)+j-1]=b;20 }21 }22 }23 for(int i=0;i<25;++i)24 {25 int u=i/5+1;26 int v=i%5+1;27 cout <<"The shortest distance from "<<u<<" to "<<v<<" is "<<D[5][i]<<endl;28 }29 }
转载于:https://www.cnblogs.com/daniagger/archive/2012/03/13/2394479.html
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算法 今天的离散数学课后作业里有需要求传递闭包的题目,不懂上课没听,本来想用matlab偷一下懒,但是搜到了Warshall算法,故参考百科及其它博客后写水篇博客. 传递性 了 ...
- 【算法】弗洛伊德(Floyd)算法
这个算法主要要弄懂三个循环的顺序关系. 弗洛伊德(Floyd)算法过程: 1.用D[v][w]记录每一对顶点的最短距离. 2.依次扫描每一个点,并以其为基点再遍历所有每一对顶点D[][]的值,看看是否 ...
- 基于Warshall算法的连通图及欧拉图判定方法
1736年欧拉解决了哥尼斯堡七桥问题.他在这一具体问题的基础上进一步研究,最终找到了一个简便的原则可以鉴别一个图(多重图)能否一笔画成. 本文中,笔者使用布尔矩阵来存储一个无向图,并结合集合论中&qu ...
- C语言用warshall算法求传递闭包transitive closure(附完整源码)
用warshall算法求传递闭包transitive closure warshall算法求传递闭包完整源码 warshall算法求传递闭包完整源码 #include <stdbool.h> ...
- O-矩阵相乘-Warshall算法详解
给出2个N * N的矩阵M1和M2,输出2个矩阵相乘后的结果. Input第1行:1个数N,表示矩阵的大小(2 <= N <= 100) 第2 - N + 1行,每行N个数,对应M1的1 ...
- 七、最短路径——弗洛伊德(Floyd)算法
为了能讲明白弗洛伊德(Floyd)算法的精妙所在,我们先来看最简单的案例.下图是一个最简单的3个顶点连通网图. 我们先定义两个二维数组D[3][3]和P[3][3],D代表顶点到顶点的最短路径权值和的 ...
- 【数据结构】图—弗洛伊德(Floyd)算法
前言 上文介绍了迪杰斯特拉(Dijkstra)算法,计算网图的某个源点到其余各个顶点的最短路径问题(边权值为非负值),本文介绍另一个求最短路径的算法--弗洛伊德算法,它是计算所有顶点到所有顶点的最短路 ...
- Warshall算法(用法详解,并转换成代码的形式)
关于Warshall算法,我先通过离散数学中求传递闭包来解释他的使用规则. 一般的,给定一个矩阵A(行列相等),我们对其使用Warshall算法: //注,该矩阵上只有0或1两种元素,做加法时,1+1 ...
最新文章
- UISlider 滑竿控件
- Linux13-bash脚本编程基础及配置文件
- QQ采用什么传输协议?
- 6 个核心理念!诠释了吴恩达新书《Machine Learning Yearning》
- Knox网关、网关简介、概述、支持的Apache Hadoop服务、支持的Apache Hadoop生态系统的UI、参考资料
- Android之jni调用java函数总结
- 新闻发布项目——业务逻辑层(categoryTBService)
- 3.Android的新虚拟ART与原虚拟机DVM的区别
- yml不变成小叶子_关于鹤望兰,你不知道的小秘密,花农告诉你,大叶子不开花...
- pku1177 Picture(矩形外围总周长)
- HDU2049 不容易系列之(4)考新郎 —— 错排
- django的orm获取字段去重值
- (转)知乎:一文读懂比特币私钥、公钥、钱包地址的来历和关系
- 三菱FX3U-PLC 前馈+PID闭环调节实现液压同步控制(比例换向阀)
- 利用Python实现简单的相似图片搜索
- 今天的两个收获--linux的特性和海森堡式错误
- LOJ#6070. 「2017 山东一轮集训 Day4」基因 解题报告
- 英文转换-在线英文批量转换器免费
- docker的创建 指定CPU 内存 网络 硬盘_为什么 CPU 访问硬盘很慢
- JVM相关命令查看GC情况
热门文章
- Redis是如何写代码注释的?
- Spring Cloud Gateway(过滤器)
- 消息中间件选型分析 —— 从 Kafka 与 RabbitMQ 的对比来看全局
- springboot启动流程
- Git :LF will be replaced by CRLF in readme.txt的原因与解决方案
- Hibernate实现limit查询报错 unexpected token: ? near line 1, column 30 [from cn.com.bean.Layer limit ? ,
- java transient_【转】Java中的关键字 transient
- mysql 优惠卷表设计_这些年MySQL表设计踩过的坑!
- element ui 前台模板_用 Vue+ElementUI 搭建后台管理极简模板
- pythonmysql数据分析 tableau_python执行mysql 计算复购率+pyechart+Excel+Tableau绘制双Y轴图...