简单路径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

floyd

 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算法相关推荐

  1. C++floyd warshall算法求最短路径(附完整源码)

    C++floyd warshall算法求最短路径 floyd warshall算法求最短路径的完整源码(定义,实现,main函数测试) floyd warshall算法求最短路径的完整源码(定义,实现 ...

  2. Floyd Warshall算法

    Description: 描述: This is a very popular interview problem to find all pair shortest paths in any gra ...

  3. 浅谈Warshall算法

    Warshall算法 ​ 今天的离散数学课后作业里有需要求传递闭包的题目,不懂上课没听,本来想用matlab偷一下懒,但是搜到了Warshall算法,故参考百科及其它博客后写水篇博客. 传递性 ​ 了 ...

  4. 【算法】弗洛伊德(Floyd)算法

    这个算法主要要弄懂三个循环的顺序关系. 弗洛伊德(Floyd)算法过程: 1.用D[v][w]记录每一对顶点的最短距离. 2.依次扫描每一个点,并以其为基点再遍历所有每一对顶点D[][]的值,看看是否 ...

  5. 基于Warshall算法的连通图及欧拉图判定方法

    1736年欧拉解决了哥尼斯堡七桥问题.他在这一具体问题的基础上进一步研究,最终找到了一个简便的原则可以鉴别一个图(多重图)能否一笔画成. 本文中,笔者使用布尔矩阵来存储一个无向图,并结合集合论中&qu ...

  6. C语言用warshall算法求传递闭包transitive closure(附完整源码)

    用warshall算法求传递闭包transitive closure warshall算法求传递闭包完整源码 warshall算法求传递闭包完整源码 #include <stdbool.h> ...

  7. O-矩阵相乘-Warshall算法详解

    给出2个N * N的矩阵M1和M2,输出2个矩阵相乘后的结果. Input第1行:1个数N,表示矩阵的大小(2 <= N <= 100)  第2 - N + 1行,每行N个数,对应M1的1 ...

  8. 七、最短路径——弗洛伊德(Floyd)算法

    为了能讲明白弗洛伊德(Floyd)算法的精妙所在,我们先来看最简单的案例.下图是一个最简单的3个顶点连通网图. 我们先定义两个二维数组D[3][3]和P[3][3],D代表顶点到顶点的最短路径权值和的 ...

  9. 【数据结构】图—弗洛伊德(Floyd)算法

    前言 上文介绍了迪杰斯特拉(Dijkstra)算法,计算网图的某个源点到其余各个顶点的最短路径问题(边权值为非负值),本文介绍另一个求最短路径的算法--弗洛伊德算法,它是计算所有顶点到所有顶点的最短路 ...

  10. Warshall算法(用法详解,并转换成代码的形式)

    关于Warshall算法,我先通过离散数学中求传递闭包来解释他的使用规则. 一般的,给定一个矩阵A(行列相等),我们对其使用Warshall算法: //注,该矩阵上只有0或1两种元素,做加法时,1+1 ...

最新文章

  1. UISlider 滑竿控件
  2. Linux13-bash脚本编程基础及配置文件
  3. QQ采用什么传输协议?
  4. 6 个核心理念!诠释了吴恩达新书《Machine Learning Yearning》
  5. Knox网关、网关简介、概述、支持的Apache Hadoop服务、支持的Apache Hadoop生态系统的UI、参考资料
  6. Android之jni调用java函数总结
  7. 新闻发布项目——业务逻辑层(categoryTBService)
  8. 3.Android的新虚拟ART与原虚拟机DVM的区别
  9. yml不变成小叶子_关于鹤望兰,你不知道的小秘密,花农告诉你,大叶子不开花...
  10. pku1177 Picture(矩形外围总周长)
  11. HDU2049 不容易系列之(4)考新郎 —— 错排
  12. django的orm获取字段去重值
  13. (转)知乎:一文读懂比特币私钥、公钥、钱包地址的来历和关系
  14. 三菱FX3U-PLC 前馈+PID闭环调节实现液压同步控制(比例换向阀)
  15. 利用Python实现简单的相似图片搜索
  16. 今天的两个收获--linux的特性和海森堡式错误
  17. LOJ#6070. 「2017 山东一轮集训 Day4」基因 解题报告
  18. 英文转换-在线英文批量转换器免费
  19. docker的创建 指定CPU 内存 网络 硬盘_为什么 CPU 访问硬盘很慢
  20. JVM相关命令查看GC情况

热门文章

  1. Redis是如何写代码注释的?
  2. Spring Cloud Gateway(过滤器)
  3. 消息中间件选型分析 —— 从 Kafka 与 RabbitMQ 的对比来看全局
  4. springboot启动流程
  5. Git :LF will be replaced by CRLF in readme.txt的原因与解决方案
  6. Hibernate实现limit查询报错 unexpected token: ? near line 1, column 30 [from cn.com.bean.Layer limit ? ,
  7. java transient_【转】Java中的关键字 transient
  8. mysql 优惠卷表设计_这些年MySQL表设计踩过的坑!
  9. element ui 前台模板_用 Vue+ElementUI 搭建后台管理极简模板
  10. pythonmysql数据分析 tableau_python执行mysql 计算复购率+pyechart+Excel+Tableau绘制双Y轴图...