Commit ee103d45 authored by ZerQAQ's avatar ZerQAQ
Browse files

bi-graph

parent ae82e069
Loading
Loading
Loading
Loading
+21 −5
Original line number Diff line number Diff line
@@ -33,9 +33,17 @@

#### 匹配

给定一个二分图$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$ 的邻域。

#### 最大匹配问题

寻找二分图边数最大的匹配称为最大匹配问题。

@@ -114,14 +122,22 @@ 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$边权和最大的匹配称为最大权匹配问题。

设二部图 $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$ 的邻域。
该问题可以转化为[费用流](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$的最大权匹配。

## 一般图匹配