Unverified Commit c0b66ebd authored by ir1d's avatar ir1d Committed by GitHub
Browse files

在二分图板块中添加了最大权匹配和一般图匹配的内容,对前面的内容作了微调。 (#1909)

在二分图板块中添加了最大权匹配和一般图匹配的内容,对前面的内容作了微调。
parents c67995a0 2b06bde1
Loading
Loading
Loading
Loading
+26 −4
Original line number Diff line number Diff line
@@ -33,7 +33,15 @@

#### 匹配

给定一个二分图 $G$ ,若在 $G$ 的子图 $M$ 中,任意两条边都没有公共节点,那么称 $M$ 为二分图 $G$ 的一个匹配,且 M 的边数为匹配数。
设 $G$ 为二分图,若在 $G$ 的子图 $M$ 中,任意两条边都没有公共节点,那么称 $M$ 为二分图 $G$ 的一个匹配,且 $M$ 的边数为匹配数。

#### 完备匹配

设 $G=<V_1, V_2, E>$ 为二分图, $|V_1| \leq |V_2|$ , $M$ 为 $G$ 中一个最大匹配,且 $|M|=2|V_1|$ ,则称 $M$ 为 $V_1$ 到 $V_2$ 的完备匹配。

#### 霍尔定理

设二分图 $G=<V_1, V_2, E>, |V_1| \leq |V_2|$ ,则 $G$ 中存在 $V_1$ 到 $V_2$ 的完备匹配当且仅当对于任意的 $S \subset V_1$ ,均有 $|S|\leq|N(S)|$ ,其中 $N(S)=\Cup_{v_i \in S}{N(V_i)}$ ,是 $S$ 的邻域。

#### 最大匹配

@@ -115,14 +123,28 @@ int main() {
}
```

除此之外,该问题还可以转化为 [最大流](graph/flow/max-flow) 问题解决。

设 $G=<V_1, V_2, E>$ 是一个二分图,不妨在图中添加源点 $s$ 和汇点 $t$ ,从 $s$ 向 $V_1$ 中的所有节点连一条流量为 1 的边, $V_2$ 中的所有节点也向 $t$ 连一条流量为 1 的边,并且将 $V_1$ 和 $V_2$ 之间的边改成从 $V_1$ 指向 $V_2$ ,流量为 1 的边。此时该图的最大流量即为最大匹配数,流量流过的边和点构成的子图即为 $G$ 的最大匹配。

若使用 Dinic 算法,则时间复杂度为 $O(N \sqrt{M+N})$ 。

例题参考:

 [洛谷 P3386【模板】二分图匹配](https://www.luogu.com.cn/problem/P3386) 

#### 最大权匹配

#### 霍尔定理
设 $G$ 为带边权的二分图,寻找 $G$ 边权和最大的匹配称为最大权匹配问题。

该问题可以转化为 [费用流](graph/flow/min-cost) 问题解决。

设 $G=<V_1, V_2, E>$ 是一个带边权的二分图,不妨在图中添加源点 $s$ 和汇点 $t$ ,从 $s$ 向 $V_1$ 中的所有节点连一条流量为 1,费用为 0 的边,从 $V_1$ 和 $V_2$ 的所有节点向 $t$ 连一条流量为 1,费用为 0 的边,并且将 $V_1$ 和 $V_2$ 之间的边改成从 $V_1$ 指向 $V_2$ ,流量为 1,费用为边权的边。此时该图的最大费最大流的费用即为最大权匹配的边权和,流量流过的边和点构成的子图(删去新添加的点和边后)即为 $G$ 的最大权匹配。

### 一般图匹配

对于一个图 $G(V, E)$ ,它的匹配 $M$ 是二元组 $(u, v)$ 组成的集合,其中 $u, v \in V, (u, v) \in E$ ,并且 $M$ 中不存在重复的点。

设二部图 $G=<V_1, V_2, E>, |V_1| \leq |V_2|$ ,则 $G$ 中存在 $V_1$  $V_2$ 的完备匹配当且仅当对于任意的 $S \subset V_1$ ,均有 $|S|\leq|N(S)|$ ,其中 $N(S)=\Cup_{v_i \in S}{N(V_i)}$ ,是 $S$ 的邻域
当 $|M|$ 最大的时候,我们称 $M$  $G$ 的最大匹配

## 一般图匹配
该问题可以使用带花树算法或 Tutte 矩阵来解决。