最大流基础(Maximum Flow Basis)
1. 最大流问题定义
1.1 流网络(Flow network)
Def. A flow network is a tuple \(G = (V, E, s, t, c)\):
- Digraph \((V, E)\) with source \(s ∈ V\) and sink \(t ∈ V\).
- Capacity \(c(e) ≥ 0\) for each \(e ∈ E\).
定义. 一个流网络可以定义为一个元组\(G = (V, E, s, t, c)\), 满足如下条件:
- 有向图\((V, E)\)中含义一个源点\(s ∈ V\)以及一个汇点\(t ∈ V\).
- 每条边都有相应的容量\(c(e) ≥ 0\).
1.2 最大流问题(Maximum-flow problem)
Def. An flow \(f\) is a function that satisfies:
- For each \(e ∈ E\) : \(0\le f(e)\le c(e)\) [capacity]
- For each \(v ∈ V – \set{s, t}\) : \(\displaystyle \sum_\text{e in to v}f(e)=\sum_\text{e out of v}f(e)\) [flow conservation]
定义. 一个流\(f\)是指一个满足如下条件的函数:
- 对于边\(e ∈ E\): \(0\le f(e)\le c(e)\). [容量]
- 对于顶点\(v ∈ V – \set{s, t}\): \(\displaystyle \sum_\text{e in to v}f(e)=\sum_\text{e out of v}f(e)\). [流量守恒]
Def. The value of a flow \(f\) is: \(val(f)=\displaystyle \sum_\text{e out of s}f(e)-\sum_\text{e in to s}f(e)\).
定义. 一个流\(f\)的值可以定义为: \(val(f)=\displaystyle \sum_\text{e out of s}f(e)-\sum_\text{e in to s}f(e)\).
Max-flow problem. Find a flow of maximum value.
最大流问题. 找到一个流,它的值最大.
2. 最大流问题算法
三种解决最大流问题算法, B站upShusenWang的视频.
2.1 福特-富尔克森算法(Ford–Fulkerson algorithm)
13-2: Ford-Fulkerson Algorithm 寻找网络最大流
2.2 埃德蒙兹-卡普算法(Edmonds-Karp Algorithm)
13-3: Edmonds-Karp Algorithm 寻找网络最大流
2.3 迪尼茨算法(Dinic's algorithm)
13-4: Dinic's Algorithm 寻找网络最大流
3. 扩展
3.1 瓶颈边(Bottleneck edge)
定义. 流网络中的一条边被称为瓶颈边是指其容量的增加将导致最大流的增加。
问题. 给出一个识别流网络中瓶颈边的高效算法
算法如下:
- 用Ford-Fulkerson算法, 得到最终的剩余图
- 计算两个集合: 剩余图中所有从源点\(s\)可达的节点定义为集合\(A\), 剩余图中所有可以到达汇点\(t\)的节点定义为集合\(B\).
- 任何一个连接集合\(A\)中节点到集合\(B\)中节点的边\(e\), 都是瓶颈边.
*第二步中, 求集合\(A\)可以通过在剩余图中从源点\(s\)深搜求得, 集合\(B\)可以通过在剩余图的反向图中从汇点\(t\)深搜求得. 此步骤时间复杂度为\(O(m)\), 其中m为剩余图中边的数量.
正确性: 增加\(e\)的容量, 一定会使剩余图产生一条新的增广路径, 从而使最大流增大.
最大流基础(Maximum Flow Basis)的更多相关文章
- 前端必须了解的布局常识:普通流(normal flow)
目录 一.概述 二.块级元素和内联元素 常见的块级元素 BFC 常见的行内元素 IFC 三.哪些情况会脱离普通流 浮动 绝对定位 固定定位 display:none 四.总结 五.参考资料 一.概述 ...
- [Algorithm] Maximum Flow
Ref MIT: lecture-13-incremental-improvement-max-flow-min-cut/ Ford Fulkerson algorithm for finding m ...
- Java 中级IO流基础及主要API编程
1. IO流基础知识,流 是字节从源到目的地的运行的轨迹,次序是有意义的, 字节会按照次序进行传递, 比如Hello World 在下图中的传递的轨迹.该图形象的解释了IO中流的概念.流中全是字节.2 ...
- Java IO 文件与流基础
Java IO 文件与流基础 @author ixenos 摘要:创建文件.文件过滤.流分类.流结构.常见流.文件流.字节数组流(缓冲区) 如何创建一个文件 #当我们调用File类的构造器时,仅仅是在 ...
- [转载]Maximum Flow: Augmenting Path Algorithms Comparison
https://www.topcoder.com/community/data-science/data-science-tutorials/maximum-flow-augmenting-path- ...
- Spring Cloud Alibaba | Sentinel: 服务限流基础篇
目录 Spring Cloud Alibaba | Sentinel: 服务限流基础篇 1. 简介 2. 定义资源 2.1 主流框架的默认适配 2.2 抛出异常的方式定义资源 2.3 返回布尔值方式定 ...
- Java 8 新特性之 Stream 流基础体验
Java 8 新特性之 Stream 流基础体验 package com.company; import java.util.ArrayList; import java.util.List; imp ...
- 网络流--最大流--HDU 3549 Flow Problem
题目链接 Problem Description Network flow is a well-known difficult problem for ACMers. Given a graph, y ...
- SPOJ 4110 Fast Maximum Flow (最大流模板)
题目大意: 无向图,求最大流. 算法讨论: Dinic可过.终于我的常数还是太大.以后要注意下了. #include <cstdio> #include <cstring> # ...
- BZOJ-1433 假期的宿舍 最大流+基础建图
网络流练习ing.. 1433: [ZJOI2009]假期的宿舍 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 1748 Solved: 765 [S ...
随机推荐
- java中BIO、NIO、AIO区别
ava中的IO主要源自于网络和本地文件 IO的方式通常分为几种,同步阻塞的BIO.同步非阻塞的NIO.异步非阻塞的AIO 在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启 ...
- web测试:test过程中接口报错 "Object reference not set to an instance of an object."
"Object reference not set to an instance of an object." 对象引用未设置为对象的实例 可能原因: 1.参数类型传错,或少传参数 ...
- <一>JDK/MAVEN/IDEA/MYSQL/GIT详细环境安装
一. 安装JDK 1. jdk安装包下载地址:https://www.oracle.com/java/technologies/javase-jdk16-downloads.html 2. 解压缩软 ...
- HDFS、Ceph、GFS、GPFS、Swift、Lustre……容器云选择哪种分布式存储更好?
HDFS.Ceph.GFS.GPFS.Swift.Lustre--容器云选择哪种分布式存储更好?-51CTO.COM 容器云在使用分布式存储时,HDFS.CEPH.GFS.GPFS.Swift等分布式 ...
- Microsoft Edge 浏览器中 Vue.js devtools 插件安装与使用
下载插件 通过插件下载网站crx4chrome搜索下载,也可以直接百度"site:(www.crx4chrome.com) Vue.js Devtools"找到下载页面下载 或者通 ...
- 初步学习UE网络同步
UE 网络同步和框架介绍 为一个UE引擎的初学者基于现有知识储备和见识的限制下,对UE网络和游戏框架的粗鄙之见,文中多有错误敬请指出以较后文. 1.网络复制 不论是服务端还是客户端,代码都是一样的 ...
- 微信小程序基本总结
小程序目录结构 project.config.json 配置项目文件,用的最多的就是配置是否开启HTTPS校检 app.js 设置一些全局的基础数据 app.json 设置底部tabbar,标题栏和路 ...
- Git本地仓库的文件夹不显示红色感叹号、绿色对号等图标
参考 https://blog.csdn.net/Elon15/article/details/125898375 主要是 在文件名前加8个空格(最少8个)!!!!
- sqlserver数据备份
sqlserver数据库 导入方法 第一种方法 1.打开SQL Server,写好登录名和密码点击连接. 2.打开数据库,右键某一个数据库,选择"新建查询(Q)". 3.再代码界面 ...
- AJAX请求的基本操作
1 const { request, response } = require('express'); 2 //引入express 3 const express = require('express ...