Loading docs/graph/bi-graph.md +21 −5 Original line number Diff line number Diff line Loading @@ -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$ 的邻域。 #### 最大匹配问题 寻找二分图边数最大的匹配称为最大匹配问题。 Loading Loading @@ -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$的最大权匹配。 ## 一般图匹配 Loading
docs/graph/bi-graph.md +21 −5 Original line number Diff line number Diff line Loading @@ -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$ 的邻域。 #### 最大匹配问题 寻找二分图边数最大的匹配称为最大匹配问题。 Loading Loading @@ -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$的最大权匹配。 ## 一般图匹配