2018-2-13-图论-Warshall-和Floyd-矩阵传递闭包
| title | author | date | CreateTime | categories |
|---|---|---|---|---|
|
图论 Warshall 和Floyd 矩阵传递闭包
|
lindexi
|
2018-2-13 17:23:3 +0800
|
2018-2-13 17:23:3 +0800
|
我们来说下有向图,一般的有向图也是图,图可以分为稠密图,稀疏图,那么从意思上,稠密图就是点的边比较多,稀疏图就是边比较少的图。为什么稠密图放在矩阵比较省空间,因为邻接表在边之间存储需要多余的指针,而矩阵不需要。
下面这张图:http://blog.csdn.net/tham_/article/details/46048063
我们只说有向图,我们把有向图存在矩阵
我们先说Warshall,假如我们有一张图
我们把这张图存储在矩阵
首先是a,a可以直接到b,那么ab就�首先我们先说下图论,一般图存储可以使用邻接矩阵,或邻接表,一般使用邻接矩阵在稠密图比较省空间。
我们来说下有向图,一般的有向图也是图,图可以分为稠密图,稀疏图,那么从意思上,稠密图就是点的边比较多,稀疏图就是边比较少的图。为什么稠密图放在矩阵比较省空间,因为邻接表在边之间存储需要多余的指针,而矩阵不需要。
下面这张图: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怎么做,他需要做个十字形,因为有个定理,
$$ R_{ij} = R_{ik} \cup R_{kj} $$
其中ijk都是从0到n,这里n是点个数
那么我们得到的第一个矩阵,叫做$$ R^0 $$
那么由第一个矩阵变化出第二个矩阵就叫$$ R^1 $$
然后一直到n,这里n是点个数
如何变化,其实很简单,做个十字,这里说的十字是
那么我们第一个公式就可以来
我们选择一个点
如果在十字两个都是1,那么这个点也就改为1,因为图里只有一个点可以修改,所以修改完就是
$$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一样做十字,然后判断是得到
$$R_{ij}=min{R_{ij},R_{ik}+R_{kj}}$$
那么这样就可以得到任意两点路径
算法复杂$$O(n^3)$$
在Warshall是判断两个都为1,修改,Floyd判断两个加起来的值比当前的小,修改
2018-2-13-图论-Warshall-和Floyd-矩阵传递闭包的更多相关文章
- 图论 Warshall 和Floyd 矩阵传递闭包
首先我们先说下图论,一般图存储可以使用邻接矩阵,或邻接表,一般使用邻接矩阵在稠密图比较省空间. 我们来说下有向图,一般的有向图也是图,图可以分为稠密图,稀疏图,那么从意思上,稠密图就是点的边比较多,稀 ...
- poj 3613 经过k条边最短路 floyd+矩阵快速幂
http://poj.org/problem?id=3613 s->t上经过k条边的最短路 先把1000范围的点离散化到200中,然后使用最短路可以使用floyd,由于求的是经过k条路的最短路, ...
- (转)新手C#SQL语句的学习2018.08.13
1.创建数据库(create) CREATE DATABASE database-name 2.删除数据库(drop) drop database dbname 3.备份数据库 --- 创建 备份数据 ...
- 【floyd+矩阵乘法】POJ 3613 Cow Relays
Description For their physical fitness program, N (2 ≤ N ≤ 1,000,000) cows have decided to run a rel ...
- UVa(247),Floyd做传递闭包
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- UVA - 247 Calling Circles(Floyd求传递闭包)
题目: 思路: 利用Floyd求传递闭包(mp[i][j] = mp[i][j]||(mp[i][k]&&mp[k][j]);),当mp[i][j]=1&&mp[j][ ...
- 图论学习笔记·$Floyd$ $Warshall$
对于图论--虽然本蒟蒻也才入门--于是有了这篇学习笔记\(qwq\) 一般我们对于最短路的处理,本蒟蒻之前都是通过构建二维数组的方式然后对每两个点进行1次深度或者广度优先搜索,即一共进行\(n\)^2 ...
- 图论之最短路径floyd算法
Floyd算法是图论中经典的多源最短路径算法,即求任意两点之间的最短路径. 它可采用动态规划思想,因为它满足最优子结构性质,即最短路径序列的子序列也是最短路径. 举例说明最优子结构性质,上图中1号到5 ...
- POJ 3660 Cow Contest(Floyd求传递闭包(可达矩阵))
Cow Contest Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16341 Accepted: 9146 Desc ...
- 【Floyd矩阵乘法】BZOJ1706- [usaco2007 Nov]relays 奶牛接力跑
[题目大意] 给出一张无向图,求出恰巧经过n条边的最短路. [思路] 首先题目中只有100条边,却给出了10000个点(实际上最多只能有200个),离散化一下. 后面就是Floyd的新姿势,以前看过的 ...
随机推荐
- spring cloud深入学习(九)-----配置中心服务化和高可用
在前两篇的介绍中,客户端都是直接调用配置中心的server端来获取配置文件信息.这样就存在了一个问题,客户端和服务端的耦合性太高,如果server端要做集群,客户端只能通过原始的方式来路由,serve ...
- Git同平台下多个账号配置
在公司要使用公司和自己的两个账号都往GitHub上面提交,所以整理成笔记 具体配置项 StrictHostKeyChecking no UserKnownHostsFile /dev/null # 为 ...
- Leetcode113. Path Sum II路径总和2
给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 ...
- spring源码学习之springMVC(一)
个人感觉<Spring技术内幕:深入解析Spring架构与设计原理(第2版)>这本书对spring的解读要优于<Spring源码深度解析(第2版)>这本书的,后者感觉就是再陈述 ...
- scrollbar 滚动条
滚动条样式:自定义元素的滚动条 <!DOCTYPE html> <html> <head lang="en"> <meta charset ...
- android 读取.properties文件
因为最终是通过流文件来进行properties文件读取的,所以很自然,我们想到要将文件放入到assets文件夹或者raw文件夹中了. 例如,我们这里有一个文件——>test.properties ...
- Exception in thread "AWT-EventQueue-0" javax.persistence.PersistenceException: No Persistence provider for EntityManager named null
swing Exception in thread "AWT-EventQueue-0" javax.persistence.PersistenceException: No Pe ...
- spring springmvc 展示图片,静态资源的处理
jsp中显示一张照片 <img alt="静态图片" src="static/目录.png"> 然后在springmvc的配置中加上 <!-- ...
- Sessions 与Cookies详解
一.Cookie 是什么? HTTP协议是无状态的,每一次数据交换完毕就结束,服务器端和客户端的链接就会关闭,每次交换数据都需要建立新的链接.例如:我逛淘宝买东西,我看上了易宝棒棒糖,而我下单的时候 ...
- hbase phoenix char may not be null
在使用phoenix做hbase的相关測试的时候.会出现 char may not be null 的错误. 这是因为建表和导入的数据不匹配导致的.主要是char的定义,假如一个字段定义为char类型 ...