图论-最大二分匹配
最大二分匹配问题
给定一个无向图 G = ( V , E ) G=(V,E) G=(V,E),一个匹配是边的一个子集 M ⊆ E M \subseteq E M⊆E,使得对于所有节点 v ∈ V v \in V v∈V,子集 M M M中最多有一条边与节点 v v v相连。如果子集 M M M中的某条边与节点 v v v相连,则称节点 v v v由节点 M M M所匹配。否则,节点 v v v就是没有匹配的。最大匹配是最大基数匹配,即对于任意匹配 M ′ M' M′,最大匹配 ∣ M ∣ ≥ ∣ M ′ ∣ |M| \geq |M'| ∣M∣≥∣M′∣。这个匹配 M M M被称为最大匹配。\
二分图,我们将注意力集中在寻找二分图的最大匹配上。在一个二分图中,节点集合可以被分成 L L L与 R R R,并且 V = L ∪ R V = L \cup R V=L∪R,其中 L L L和 R R R是不相交的,并且边的集合 E E E中所有的边都横跨 L L L与 R R R。
寻找最大二分匹配
我们将所有的边改成有向边,都从 L L L指向 R R R,并且我们设立一个源节点 s s s,指向 L L L,设立汇点 t t t, R R R都指向 t t t,并且令边的容量都是单位1。此时我们建立了一个流网络。
定理:对于任意一个匹配 M M M,二分图所对应的流网络中都存在一个流 f f f,使得 ∣ f ∣ = ∣ M ∣ |f| = |M| ∣f∣=∣M∣,反之也成立。
定理(完整性定理):如果在一个流网络中,容量只取整数,那么Ford-Fulkerson方法在每一次迭代计算出的流 f f f, ∣ f ∣ |f| ∣f∣是整数,并且对于所有的 u , v ∈ V u,v \in V u,v∈V, f ( u , v ) f(u,v) f(u,v)也是整数。
推论:对于最大二分匹配 M M M,二分图所对应的流网络中最大流 f f f,有 ∣ f ∣ = ∣ M ∣ |f| = |M| ∣f∣=∣M∣,反之也成立。
推论告诉我们,想找到一个最大匹配,我们只需要求一下最大流即可。