説明
グラフ $G=(V, E)$ において、 $V$ が $2$ つの部分集合 $X$ と $Y$ に分割され、 $E$ のどの辺も一方の端点は $X$ に、 もう一方の端点は $Y$ に属しているとき、 $G$ を二部グラフという。
グラフ $G=(V, E)$ において、 $M$ が $E$ の部分集合でかつ $M$ のどの $2$ 辺も共通の端点をもたないとき、 $M$ を $G$ のマッチングといい、 辺の本数が最大であるマッチングを最大マッチングという。
ここでは, 二部グラフの最大マッチングを最大流のアルゴリズムを利用して求める。
計算量
実装例
- BipartiteMatching($n$):= 全体のグラフの頂点数を $n$ で初期化する。
- add_edge($u$, $v$):= 頂点 $u, v$ 間に辺を張る。
- bipartite_matching():= 二部グラフの最大マッチングを返す。
検証
AOJ GRL_7_A 2部マッチング