[模板] 二分图/网络流相关定义/定理/算法

定义

二分图是图论的一种特殊模型. 若 (G=<V, E>) 是一个无向图, 如果顶点V可分割为两个不相交的子集 ((X, Y)), 且图中的每条边 ((i, j))均满足(i in X, j in Y), 则称图(G)为一个二分图。

二分图判定

  • 无向图 (G=<V, E>) 为二分图的充要条件是G的所有回路的长度均为偶数。
    反证法/染色法易证

一些概念

记一般图 (G=(V,E)).

  • 匹配: 在图G的一个子图M中,M的边集E中任意两条边都不依附于同一个顶点, 则称M是一个匹配.

    • 匹配点: 匹配边上的点
    • 匹配数: 匹配 (M) 的边集 (E) 的大小
    • 对于一个匹配(M=(V', E')), (2|E'| = |V'|)
  • 极大匹配(Maximal Matching): 指匹配 (M)无法通过增加未匹配的边的方式来增加匹配的边数.

  • 最大匹配(Maximum Matching): 所有极大匹配当中边数最大的一个匹配.

  • 完美匹配(完备匹配):一个图中所有的顶点都是匹配点的匹配, 即 (2|M| = |V|).

    • 完美匹配一定是最大匹配, 但并非每个图都存在完美匹配.
  • 最优匹配(带权最大匹配): 在带有权值边的图中,匹配边上的权值和最大的匹配.

    • 二分图中, 一般X和Y集合顶点个数相同, 最优匹配也是一个完备匹配. 如果个数不相等, 可以通过补点加0边来转化.
    • 一般使用KM算法解决该问题. KM(Kuhn and Munkres) 算法, 是对匈牙利算法的一种贪心扩展.
  • 最小覆盖: 最小覆盖分为最小顶点覆盖和最小路径覆盖.

    • 最小顶点覆盖: 指求最少的顶点数, 使得图中的每条边都至少与其中一个点相连.
    • 最小路径覆盖: 指求最少的不相交简单路径覆盖图中的所有顶点.
  • 最大独立集: 寻找最大的点集, 使得其中任意两点在图中无对应边.

    • 最大独立集 = 补图最大团 (反之亦然)
    • 一般图求最大独立集为 NP-Complete 问题, 但在二分图中有多项式解法.

定理 & 算法

最大流最小割定理

网络 (G=(V,E)) 的最大流 (f_{max}) = 最小割 (C_{min}(S,T)).

首先, (f le C(S,T)). 利用反证法.

然后, 构造出一个 (f = C(S,T)):

定义 (S) 集合为当前残留网络中s能够到达的点, (T=V-S).
此时(S,T)构成一个割(S,T). 且对于任意的 (u∈S,v∈T), 有(f(u,v)=c(u,v)).
因此有 (f(S,T)=sum f(u,v)=sum c(u,v)=C(S,T))

因此, (f_{max} = C_{min}(S,T)).

覆盖 & 匹配 & 独立集

在二分图中, 最大匹配=最小顶点覆盖=(|V|)-最小边覆盖=(|V|)-最大独立集.

证明

带权的覆盖 & 独立集

(p) 点权值为 (v_p).

对于二分图一侧的边, 连边 ((s,p,v_p)); 另一侧的点, 连边 ((p,v,v_p)).

那么最小割即为带权最小顶点覆盖. 这可以通过最大流求出.

类似上面的, 有 最大点权独立集=(sum v_i)-最小点权覆盖.

一些定理

Hall 定理
集合 S_1,S_2,…,S_m ,每个集合都能选出唯一代表,当且仅当,|⋃_i∈IS_i|≥|I| for all I⊆{1,2,…,m}

这个充要条件 |⋃_i∈IS_i|≥|I| for all I⊆{1,2,…,m} 被称为 Hall's condition。

König-Egerváry 定理:二部图中,最大匹配的大小等于最小点覆盖集的大小。

Menger 定理:在图上分开两个点至少要去掉几个点?等于这两点间不相交的路径的个数。

Dilworth 定理:一个偏序集分成多少个 chain?等于最大 antichain 的大小。

最小路径(点)覆盖

最小点不相交路径覆盖

似乎只有DAG上的解法, 一般图上的并不会...

将原图中的点 (p) 拆成 (p', p''). 对于边 ((u, v)), 在新图中连边 ((u', v'')).

答案即为(原图点数 - 新图最大匹配).

最小点可相交路径覆盖

用floyd传递闭包, 如果 (u) 可以到达 (v), 加边 ((u, v)).

然后就转化为了不相交路径覆盖, 解法同上.

最长反链

链指一个点集, 满足其中任意两点 (u,v), 或者能从 (u) 到达 (v), 或者能从 (v) 到达 (u).
反链指一个点集, 满足其中任意两点不可互相到达.

Dilworth定理: 最长反链 = 最小链覆盖.

同时, 链一定是路径的一部分. 因此最小链覆盖 = 最小可相交路径覆盖.

因此, 最长反链 = 最小链覆盖 = 最小可相交路径覆盖

算法见上.

圈覆盖

即求有向图有多少个点不相交的环, 覆盖图上所有点.

类似最小不相交路径覆盖建图, 跑二分图匹配.

有解的充要条件是二分图有完美匹配; 此时, 可以把得到的匹配看做一个置换, 置换的每个环都是一个圈.

最大权闭合子图

网络流——最小割求最大权闭合子图 - CaptainChen的博客 - CSDN博客

定义

在一个有向图中, 每个点都有一个权值 (v_i), 选择一个权值和最大的子图, 使得每个点的后继都在子图里面, 这个子图就叫最大权闭合子图.

求法

从源点 (s) 向每个正权点连一条容量为权值的边, 每个负权点向汇点 (t) 连一条容量为权值的绝对值的边, 有向图原来的边容量全部为无限大.

求它的最小割, 割掉后, 与源点s连通的点构成最大权闭合子图, 权值为 (正权值之和-最小割).

边/点连通度

图的匹配问题与最大流问题(四)——计算图的边连通度和点连通度 - smartxxyx的专栏 - CSDN博客

定义

(G = (V, E)) 的边连通度指边集 (E) 的一个最小子集 (E') 的大小, 使得 (G - (V, E')) 或者是非连通图, 或者是一个平凡图(仅包含一个独立点的图).

(G = (V, E)) 的点连通度指点集 (V) 的一个最小子集 (V') 的大小, 使得 (G - (V', E)) 或者是非连通图, 或者是一个平凡图(仅包含一个独立点的图).

求法

边连通度: 任选一点为源点, 枚举汇点求最小割, 最小值即为边连通度.

点连通度: 拆点建图: ((u', v'', +infty)), ((u', u'', 1)). 任选 (u'') 为源点, 枚举 (v') 为汇点, 求最小割即可.

最小割计数

假的

最小割计数 - 题目 - Universal Online Judge

UOJ #85 最小割计数 题解 - 博客 - PoPoQQQ的博客

参考资料

原文地址:https://www.cnblogs.com/ubospica/p/10249725.html