首先我们先说下图论,一般图存储可以使用邻接矩阵,或邻接表,一般使用邻接矩阵在稠密图比较省空间。

我们来说下有向图,一般的有向图也是图,图可以分为稠密图,稀疏图,那么从意思上,稠密图就是点的边比较多,稀疏图就是边比较少的图。为什么稠密图放在矩阵比较省空间,因为邻接表在边之间存储需要多余的指针,而矩阵不需要。

下面这张图:http://blog.csdn.net/tham_/article/details/46048063

我们只说有向图,我们把有向图存在矩阵

我们先说Warshall,假如我们有一张图

我们把这张图存储在矩阵

首先是a,a可以直接到b,那么ab就是1
接着就是b,b可以直接到c,那么bc就是1

Warshall a b c d e
a 0 1 0 0 0
b 0 0 1 0 0
c 0 0 0 1 0
d 1 0 0 0 1
e 0 0 0 0 0

那么Warshall怎么做,他需要做个十字形,因为有个定理,

Rij=Rik∪Rkj

R_{ij} = R_{ik} \cup R_{kj}

其中ijk都是从0到n,这里n是点个数

那么我们得到的第一个矩阵,叫做

R0

R^0
那么由第一个矩阵变化出第二个矩阵就叫

R1

R^1
然后一直到n,这里n是点个数

如何变化,其实很简单,做个十字,这里说的十字是

那么我们第一个公式就可以来

我们选择一个点

如果在十字两个都是1,那么这个点也就改为1,因为图里只有一个点可以修改,所以修改完就是

R1

R^1

接着我们把十字修改

那么发现有两个点,加粗db是上次修改的

我们可以发现ac和dc都是可以修改

那么继续修改

修改后

Warshall a b c d e
a 1 1 1 1 1
b 1 1 1 1 1
c 1 1 1 1 1
d 1 1 1 1 1
e 0 0 0 0 0

因为我们从a到d都是可以到达,所以都为1,因为存在d可以到e,所以所有点都可以到e,因为e本身没有到任何点,所以为0

那么Floyd是什么,其实就是把原先的矩阵1改为数字

Floyd是可以算图中任意两个点的最短路径

那么说道这,我们需要带权有向图

带权就是两个点之间的边有个权,放在矩阵就是可以相连的两个点之间的ij为权

1

Warshall a b c d e
a 0 5

\infty

\infty

\infty

b

\infty

0 2

\infty

\infty

c

\infty

\infty

0 1

\infty

d 6 15

\infty

0 1
e

\infty

\infty

\infty

\infty

0

我们和之前Warshall一样做十字,然后判断是得到

Rij=min{Rij,Rik+Rkj}

R_{ij}=min\{R_{ij},R_{ik}+R_{kj}\}

那么这样就可以得到任意两点路径

算法复杂

O(n3)

O(n^3)

在Warshall是判断两个都为1,修改,Floyd判断两个加起来的值比当前的小,修改

和Warshall一样全部修改就是两个点之间最短距离。

\infty修改如果加上一个数还是

\infty
任意一个数字小于

\infty所以只要存在数字就可以修改

图论 Warshall 和Floyd 矩阵传递闭包相关推荐

  1. WarShall算法求矩阵传递闭包关系

    离散知识 给了你一个矩阵,你如何求他的传递闭包呢? //求出如下矩阵的传递闭包 1 0 1 0 0 1 1 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 利用WarShall ...

  2. UVA - 247 Calling Circles(Floyd求传递闭包)

    题目: 思路: 利用Floyd求传递闭包(mp[i][j] = mp[i][j]||(mp[i][k]&&mp[k][j]);),当mp[i][j]=1&&mp[j][ ...

  3. 拉普拉斯算子属于卷积方法吗_二维图像中的Laplace算子和图论中的Laplacian矩阵...

    最近在阅读 如何理解 Graph Convolutional Network(GCN)?​www.zhihu.com 接触到了图论中的Laplacian矩阵,定义为 , 是Laplacian矩阵, 是 ...

  4. 【图论专题】Floyd算法及其扩展应用

    Floyd的拓展应用: 任意两点最短路 传递闭包 找最小环 恰好经过k条边的最短路(倍增) 题目列表: 题目 算法 AcWing 1125. 牛的旅行 任意两点最短路Floyd AcWing 343. ...

  5. poj 3660(Floyd求传递闭包)

    Cow Contest Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9317   Accepted: 5249 Descr ...

  6. POJ2594(二分匹配+Floyd求传递闭包)

    题目:Treasure Exploration 很明显是最小路径覆盖,只是必须先要求传递闭包就行了. #include <stdio.h> #include <string.h> ...

  7. Floyd求传递闭包

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1704 题意:给出一些排名,求最少需要询问多少次才能确定总体排名.本题属于求传递闭包问题,用Floyd算法即 ...

  8. POJ 3613 Cow Relays (floyd + 矩阵高速幂)

    题目大意: 求刚好经过K条路的最短路 我们知道假设一个矩阵A[i][j] 表示表示 i-j 是否可达 那么 A*A=B  B[i][j]  就表示   i-j 刚好走过两条路的方法数 那么同理 我们把 ...

  9. 图论动态规划算法——Floyd最短路径

    前言 推出一个新系列,<看图轻松理解数据结构和算法>,主要使用图片来描述常见的数据结构和算法,轻松阅读并理解掌握.本系列包括各种堆.各种队列.各种列表.各种树.各种图.各种排序等等几十篇的 ...

最新文章

  1. visual studio 关闭编译优化
  2. static 关键字作用
  3. EasyUI-DataGrid之批量删除
  4. Python学习 第2天 IDE开发工具
  5. 第一行代码学习笔记第二章——探究活动
  6. vue动态切换css文件_如何在vue组件中动态的引入css文件?
  7. MVP on Board 没用小技巧
  8. RHEL/CentOS下编译安装Nginx
  9. 1.2 User Interface 规范(系统开发架构与设计步步谈)
  10. MVC中使用编辑器提交内容时出错的解决方法
  11. 移动端的meta标签
  12. u深度重装系统详细教程_如何重装系统 U深度U盘重装系统教程
  13. “汇新杯”互联网产业模式专项赛介绍
  14. android街机模拟器,手机街机模拟器哪个好_安卓街机模拟器大全-66街机网
  15. 震惊,java8 Nashorn和laytpl居然能擦出这样火花!
  16. Makefile eval函数
  17. 计算机二级vb考试怎么准备,计算机二级考试内容是什么 各科目该怎么准备
  18. 杭州php程序员工资一般多少,杭州Android基础一期大黑马强哥,完美收官~~欧巴,卡几嘛...
  19. 【Golang第6章:排序和查找】golang怎么排序,golang的顺序查找和二分查找,go语言中顺序查找二分查找介绍和案例
  20. R 语言 apply 系列函数

热门文章

  1. 计算机在护士行业的应用情况,【医院护理论文】医院护理信息化实施的现状及未来分析(共3632字)...
  2. 快学起这4类智能图形,玩转PPT!
  3. 抖音成牛年春晚独家合作伙伴;微信8.0安卓/IOS版正式更新;孙正义辞去软银董事长…
  4. Wifi WDS的两种模式
  5. 九度OJ 1341 艾薇儿的演唱会(40分)
  6. 理科男的浪漫——定制月球灯之旅
  7. Android联系人按拼音排序以及按汉字首字母或全拼搜索
  8. IIS寄托多网站找到对应ID的两种方式
  9. 发力LPWAN 升哲打磨数智城市物联网通信之“芯”
  10. 唯一获奖容器厂商!灵雀云斩获2022信创“大比武”通信赛道大奖