「网络流浅谈」网络流的概念

news/2024/9/23 7:28:44

通常做题思路:问题转化为流网络,再通过最大流 / 最小割 / 费用流与问题之间的数量关系,求解出原问题。

网络流于其他算法不同,概念定理需要熟记于心,否则后面做题会有很大的障碍。

1. 流网络

一个流网络记作 \(G=(V,E)\),其中 \(V\) 表示点集,\(E\) 表示边集。对于 \(\forall (u,v)\in E\),都有一个容量记作 \(c(u,v)\)。由于是一张流网络,那肯定还应该有汇点与源点,通常记作 \(s,t\)

如图,这就是一张流网络。

2. 可行流

对于每一个流网络,满足以下 \(2\) 个条件为可行流:

  1. 容量限制

    ​ 记作:\(0\le f(u,v) \le c(u,v)\),即流经每条边的流量不能超过他的限制。

  2. 流量守恒

    ​ 记作:\(\sum_{(v,x)\in E}f(v,x)=\sum_{(x,v)\in E}f(x,v)\),即除了源点与汇点之外,流入点 \(i\) 的总流量 \(=\) 流出点 \(i\) 的总流量。

可行流的流量 \(|f|\),是指从源点流出的总流量。

即:\(|f|=\sum_{(s,v)\in E}f(s,v)-\sum_{(v,s)\in E}f(v,s)\)

3. 残留网络

一般来说,残留网络记作 \(G_f=(V,E+!E)\),其中 \(V,E\) 是源网络的边集和点集,\(!E\) 表示 \(E\) 中的所有反向边。

容量:

\[c'(u,v)=\begin{cases} & c(u,v)-f(u,v) & (u,v)\in E \\ & f(u,v) & (u,v) \in !E \end{cases} \]

定理

\(f\) 为原网络的可行流\(f'\) 为残留网络的可行流

则有:\(f+f'\) 也是 \(G\) 的一个可行流且 \(|f+f'|=|f|+|f'|\)

证明:定义 \(f_{n}=f+f'\),则 \(f_n(u,v)=f(u,v)+f'(u,v)\)(注意这里只考虑正向边),为了证明也是一个可行流,无非从 \(2\) 方面:容量限制和流量守恒。

容量限制:\(f'(u,v)\le c'(u,v)=c(u,v)-f(u,v)\),所以 \(f(u,v)+f'(u,v)\le c(u,v)\)

流量守恒:因为 \(f(u,v)\) 满足流量守恒,\(f'(u,v)\) 也满足流量守恒,所以 \(f(u,v)+f'(u,v)\) 也满足流量守恒(这里只是略证,更多细节大家可以展开观察)。

4. 增广路径

在残留网络沿着容量大于 \(0\) 的边如果能够走到终点,这条路径称为增广路径。(注意:增广路径只是一条路径,而非一个网络)

5. 割

5.1 定义:

将点集 \(V\) 分成不重叠 \(S\)\(T\), 使得源点在\(S\),汇点在 \(T\)

5.2 割的容量

\(c(S,T)=\sum_{u\in S}\sum_{v\in T} c(u,v)\)

最小割: 最小的割的容量

5.3 割的流量

\(f(S,T)=\sum_{u\in S}\sum_{v\in T} f(u,v)-\sum_{v\in S}\sum_{u\in T} f(u,v)\)

性质1: \(\forall [S,T], f(S,T)\le c(S,T)\)

证明: 由于 \(f(u,v)\) 是大于等于 \(0\) 的,所以 \(f(S,T)\le \sum_{u\in S}\sum_{v\in T} f(u,v)\),又因为有容量,所以一定 \(\le \sum_{u\in S}\sum_{v\in T} c(u,v)\) ,故 \(\forall [S,T], f(S,T)\le c(S,T)\)


性质2: \(\forall [S,T], f(S,T)= |f|\)

证明2:

\(f(X,Y)=\sum_{u\in X}\sum_{v\in Y} f(u,v)-\sum_{v\in X}\sum_{u\in Y} f(u,v)\)

则:\(f(X,Y)=-f(Y,X)\)\(f(X,X)=0\)\(f(Z,X\cup Y)=f(Z,X)+f(Z,Y), X\cap Y= \varnothing\)

那么有:

\[\begin{aligned} &\because S\cup T=V,S\cap T=\varnothing,\\ &\therefore f(S,V)=f(S,S)+f(S,T)\\ &\therefore f(S,T)=f(S,V)-f(S,S)=f(S,V)=f(\{s\},V)+f(S-\{s\},V)=f(\{s\},V)=|f|\\ \end{aligned} \]


那么 \(|f|=f(S,T)\le c(S,T)\)

即,\(|f|\le c(S,T)\);故,最大流 \(\le\) 最小割

7. 最大流最小割定理

(1)可行流 \(f\) 是最大流

(2)\(G_f\) 中不存在增广路

(3)\(|f|=c(S,T)\)

在三个条件中,仅需知道 \(1\) 个,就能够推出另外 \(2\) 个,证明略。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/31286.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

apisix~lua插件开发与插件注册

开发插件的步骤 在APISIX中,要自定义插件,一般需要按照以下步骤进行操作:编写Lua脚本:首先,你需要编写Lua脚本来实现你想要的功能。可以根据APISIX提供的插件开发文档和示例进行编写。将Lua脚本放置到APISIX插件目录:将编写好的Lua脚本文件放置到APISIX的插件目录下,一般…

如何安全高效地进行4S店文件分发,保护核心资产?

4S店与总部之间的文件分发是确保双方沟通顺畅、信息共享和决策支持的重要环节。4S店文件分发涉及到以下文件类型: 销售报告:4S店需要定期向总部提交销售报告,包括销售数量、销售额、市场份额等关键指标。 库存管理文件:包括车辆库存、零件库存的更新和需求预测,以便于总部…

JDBC连接openGauss6.0和PostgreSQL16.2性能对比

PostgreSQL 16.2 对比 openGauss 6.0 在连接创建上大概有3~4倍左右的性能优势,都是在毫秒级别。本文分享自华为云社区《JDBC连接openGauss6.0和PostgreSQL16.2性能对比》,作者: Gauss松鼠会小助手。 PostgreSQL vs openGauss 01 前置准备 安装JDK: 详细安装步骤请问度娘,输…

中移铁通禹路由 ExportSettings 敏感信息泄露漏洞

漏洞描述: 该漏洞由于cgi-bin/ExportSettings.sh未对用户进行身份验证,导致攻击者能够未授权获取到路由器设置信息,包含了后台管理员用户的账号和密码 fofa: title="互联世界 物联未来-登录" 鹰图: web.body="互联世界 物联未来-登录" POC: GET /cgi-bi…

用友畅捷通TPlus-keyEdit.aspx接口存在SQL注入漏洞

漏洞描述: 该漏洞是由于畅捷通T的/tplus/UFAQD/keyEdit.asp接口处未对用户的输入进行过滤和校验,未经身份验证的攻击者可以利用SQL注入漏洞获取数据库中的信息 fofa: app="畅捷通-TPlus" POC: GET /tplus/UFAQD/keyEdit.aspx?KeyID=1%27%20and%201=(select%20@@ve…

vue3编译优化之“静态提升”

本文讲了vue3是如何实现编译优化之“静态提升”,静态节点无需每次执行render函数都去生成一次虚拟DOM前言 在上一篇 vue3早已具备抛弃虚拟DOM的能力了文章中讲了对于动态节点,vue做的优化是将这些动态节点收集起来,然后当响应式变量修改后进行靶向更新。那么vue对静态节点有…

toLua中Lua调用C#中的类

toLua中Lua调用C#: [7]Lua脚本调用C#中的class 准备工作:打算在Lua脚本中使用Debug,使用lua调用C#脚本,需要绑定LuaState和自定义添加Debug--- --- Generated by EmmyLua(https://github.com/EmmyLua) --- Created by TonyChang. --- DateTime: 2024/5/14 6:55 --- print(&…

《食品小经营登记证》办理流程

第一步:登录甘肃政务服务网第二步:选择区域第三步:点击“一件事服务”填写“申请者基本信息”选择“经营项目”上传身份证一路涉足、一路留恋、一路回望。依旧前行。