基本概念
可行流
对于一个可行流
f
f
f,必须满足两个以下条件:
1. 网络
G
G
G 中的每条边
(
i
,
j
)
(i,j)
(i,j),有
0
⩽
f
l
o
w
(
i
,
j
)
⩽
c
a
p
a
c
i
t
y
(
i
,
j
)
0\leqslant flow_{(i,j)}\leqslant capacity_{(i,j)}
0⩽flow(i,j)⩽capacity(i,j),即每条边上的流量非负而且 最大也只能达到容量的限制。
2. 对于网络
G
G
G 中的任意点
x
x
x,有
∑
u
∣
存
在
边
(
u
,
x
)
f
(
u
,
x
)
=
∑
v
∣
存
在
边
(
v
,
x
)
f
(
v
,
x
)
\sum\limits_{u|存在边(u,x)}f_{(u,x)}=\sum\limits_{v|存在边(v,x)}f_{(v,x)}
u∣存在边(u,x)∑f(u,x)=v∣存在边(v,x)∑f(v,x),即满足流量平衡。
最大流
一个可行流
f
f
f,使其流量达到最大, 这个流称为最大流。
割集
一个网络的割集是这个网络边集,若在原网络中删除这个边集中的所有边,网络的最大流变为
0
0
0,则该边集为原网络的割集。
最小割
一个网络中,其中的边权和和最小的割集为最小割。
常见模型
二分图最大匹配
问 在二分图中,在所有的匹配中,边数最多的匹配称为二分图最大匹配 . . .
解 二分图最大匹配 = = = 最大流 . . .
证 参见 K o ¨ nig \text{König} Ko¨nig 定理 . . .
二分图最小点(权)覆盖
问 在二分图中选取尽量少的顶点,使得所有的边都有至少一个端点被选择 . . .
解 最小点覆盖 = = = 最大匹配 . . .
- 对于原图中的 ( u , v ) (u,v) (u,v),连边 ( u , v ) (u,v) (u,v) 流量为 inf , \inf, inf,
- 连边 ( S , i ) (S,i) (S,i),流量为点权,连边 ( i , T ) (i,T) (i,T) 流量为点权 , , ,
- 最小点(权)覆盖集 = = = 最小割 . . .
证 设最大匹配为
M
M
M,则存在某边
e
e
e 没被覆盖,则通过
e
e
e 能得到更大的匹配,矛盾。因此,
M
M
M 个点是足够的
(
(
(最小顶点覆盖
⩽
\leqslant
⩽ 最大匹配
)
,
),
),
最大匹配中的
M
M
M 条边由于两两之间没有公共点,因此至少有
M
M
M 个点才能把它们全部覆盖。因此,
M
M
M 个点是必须的
(
(
(最大匹配
⩽
\leqslant
⩽ 最小顶点覆盖
)
.
).
).
二分图最大(权)独立集
问 在二分图中选出尽量多的节点,使得这些点之间没有边相连 . . .
解 二分图最大独立集
=
=
= 点数
−
-
− 二分图最小点覆盖
,
,
,
二分图最大权独立集
=
=
= 总权值
−
-
− 二分图最小点权覆盖集
.
.
.
证 问题等价于:在图中删除尽量少的点,与之相连的边一起删去,使得全部边都被删除。可以发现,只需要删除二分图最小点(权)覆盖集中的点即可使全部边删除,得证 . . .
有向图最小不相交路径覆盖
问 在有向图中选取尽量少的路径,覆盖图中所有的顶点,且每个顶点都只被一条路径覆盖,特别地,一个点也可以称为路径 . . .
解 拆点,原图转换为二分图,则有
最小路径覆盖
=
=
= 原点数
−
-
− 最大匹配数
.
.
.
证 当最大匹配数为
0
0
0 时,图中没有边,需要
n
n
n 条路径才能覆盖全部点
,
,
,
如果存在
(
a
,
b
)
(a,b)
(a,b),则匹配数增加
1
1
1,需要的路径数会减少
1.
1.
1.
有向图最小可相交路径覆盖
问 在有向图中选取尽量少的路径,覆盖图中所有的顶点,且每个顶点都至少被一条路径覆盖,特别地,一个点也可以称为路径 . . .
解 用 floyd \texttt{floyd} floyd 算法求出原图的传递闭包,若点 A A A 能到达点 B B B,则连边 ( a , b ) (a,b) (a,b) ,问题转换为有向图最小不相交路径覆盖。
证 当最大匹配数为
0
0
0 时,图中没有边,需要
n
n
n 条路径才能覆盖全部点
,
,
,
如果存在
(
a
,
b
)
(a,b)
(a,b),则匹配数增加
1
1
1,需要的路径数会减少
1.
1.
1.
最小点(权)割
问 在图中删除(点权和)尽量少的点,使得 S S S 到 T T T 不连通 . . .
解 利用最小割的定义
- 拆点,连边 ( x , x ′ ) (x,x') (x,x′) 流量为点权。
- 对于原图中的 ( a , b ) (a,b) (a,b),连边 ( a , b ) (a,b) (a,b),流量为 ∞ \infty ∞。
- ∣ | ∣最小点(权)割 ∣ = |= ∣= 最小割 . . .
证 某条边被割表示这个点被删除了,由于最小割不可能为 inf \inf inf,因此原图中的边不会被删除 . . .
最大(权)闭合子图
问 找出原图的子图 G G G,使得 G G G 中所有的点的出边都在 G G G 中,且点上的权值最大 . . .
解
- 对于所有权值为正的点,连边 ( S , i ) (S,i) (S,i) 流量为点权
- 对于所有权值为负的点,连边 ( i , T ) (i,T) (i,T),流量为权值的相反数
- 对于原图中的边 ( u , v ) (u,v) (u,v),连边 ( u , v ) (u,v) (u,v) 流量为 ∞ \infty ∞
- 最大权闭合子图 = = = 正权点权值和 − - − 最小割
证 边
(
S
,
i
)
(S,i)
(S,i) 被割掉表示不选
i
i
i 点,相反的,边
(
i
,
T
)
(i,T)
(i,T) 被割掉表示选
i
i
i 点
,
,
,
当
∑
(
j
,
T
)
.
v
a
l
>
∑
(
S
,
i
)
.
v
a
l
\sum(j,T).val>\sum(S,i).val
∑(j,T).val>∑(S,i).val 成立时
(
S
,
i
)
(S,i)
(S,i) 会被割掉,反之,则
(
i
,
T
)
(i,T)
(i,T) 会被割掉
.
.
.
把最小割分为两部分,其中一部分是
F
(
S
,
i
)
F(S,i)
F(S,i),另一部分是
F
(
i
,
T
)
F(i,T)
F(i,T),则有
最大权
=
选择的正权点权值总和
+
选择的负权点权值总和
=
所有正权点权值总和
−
不选的正权点权值总和
−
F
(
i
,
T
)
=
所有正权点权值总和
−
F
(
S
,
i
)
−
F
(
i
,
T
)
=
所有正权点权值总和
−
最小割
.
\begin{aligned}\texttt{\small最大权} &=\texttt{\small选择的正权点权值总和}+\texttt{\small选择的负权点权值总和}\\ &=\texttt{\small所有正权点权值总和}-\texttt{\small不选的正权点权值总和}-F(i,T)\\ &=\texttt{\small所有正权点权值总和}-F(S,i)-F(i,T)\\ &=\texttt{\small所有正权点权值总和}-\texttt{\small最小割}.\end{aligned}
最大权=选择的正权点权值总和+选择的负权点权值总和=所有正权点权值总和−不选的正权点权值总和−F(i,T)=所有正权点权值总和−F(S,i)−F(i,T)=所有正权点权值总和−最小割.
二分图最大边(权)独立集
问 在二分图中选出尽量多的边,使得这些边没有公共点 . . .
解 最大边(权)独立集 = = = 二分图最大(权)匹配 . . .
证 设最大匹配为 m m m,若存在另一条边 ( u , v ) (u,v) (u,v) 和之前选择的点没有公共点,则还可以通过这条边增大匹配,矛盾,因此 m m m 条边是最多的;设最大匹配为 m m m,不同的匹配之间公共点,因此 m m m 条边是可行的 . . .
二分图最小边覆盖
问 在二分图中选出尽量少的边,覆盖所有的点 . . .
解 最小边覆盖 = = = 最大独立集 . . .
证 最大独立集中的每对点都不能通过一条边覆盖到,必须要用两条不同的边才能覆盖到,因此需要最大独立集条边覆盖所有点 . . .
附 二分图最小边权覆盖问题已经被证明为 NP 问题,不存在有多项式时间复杂度的完美算法,但仍有一些近似算法能取得较为优秀的时间复杂度,在此不再讨论 . . .
最大密度子图
问 给定一张无向图,求一个子图,使得子图中边数 ∣ E ∣ |E| ∣E∣ 与点数 ∣ V ∣ |V| ∣V∣ 的比值最大,即最大化: ∣ E ∣ ∣ V ∣ \dfrac{|E|}{|V|} ∣V∣∣E∣
解 二分答案
k
k
k,网络流判断。
构图:以原图的边作为左侧顶点,权值为
1
1
1;原图的点作为右侧顶点,权值为
−
k
-k
−k。
若原图中存在边
(
u
,
v
)
(u,v)
(u,v),则新图中添加两条边
(
[
u
v
]
,
u
)
([uv],u)
([uv],u),
(
[
u
v
]
,
v
)
([uv],v)
([uv],v)。
∣
E
∣
∣
V
∣
=
最大权闭合子图
\dfrac{|E|}{|V|}=\text{最大权闭合子图}
∣V∣∣E∣=最大权闭合子图
证 分数规划
最小链覆盖(BZOJ1143)
留坑待填
距离限制模型(BZOJ1143)
也叫切糕模型hhh
留坑待填
网络流技巧
黑白染色
% 通常会出现在棋盘问题中,有了黑白染色就会方便很多。
数据结构优化建图
% 某个点集中需要互相连边时,可以建立和线段树类似的点,按照线段树管理方式连边,最后直接向管理节点连边即可,如此便可以将边数从 n 2 n^2 n2 条降低为 n log 2 n n\log_2 n nlog2n 条。
定理
最大流最小割定理
在一个网络流中,能够从源点到达汇点的最大流量等于如果从网络中移除就能够导致网络流中断的边的集合的最小容量和。
证明: