「《マッチング問題》」の版間の差分
1行目: | 1行目: | ||
【まっちんぐもんだい (matching problems) 】 | 【まっちんぐもんだい (matching problems) 】 | ||
− | $G = (V, A)$ を無向グラフとする. $G$ の[[マッチング]] (matching) とは, 端点を共有しない枝の集合 $M \subseteq A$ のことである. $k$ 本の枝からなるマッチングを $k$-マッチングと呼び, 特に $k = |V|/2$ のときは完全マッチングと呼ぶ. 与えられた目的に従ってマッチングを選ぶ問題のことを, [[マッチング問題]]という. 以下, 幾つかのマッチング問題について簡単に説明する. | + | $<math>G = (V, A)</math>$ を無向グラフとする. $<math>G</math>$ の[[マッチング]] (matching) とは, 端点を共有しない枝の集合 $<math>M \subseteq A</math>$ のことである. $<math>k</math>$ 本の枝からなるマッチングを $<math>k</math>$-マッチングと呼び, 特に $<math>k = |V|/2</math>$ のときは完全マッチングと呼ぶ. 与えられた目的に従ってマッチングを選ぶ問題のことを, [[マッチング問題]]という. 以下, 幾つかのマッチング問題について簡単に説明する. |
− | '''(a) 最大マッチング問題''' 枝数が最大のマッチングを求める問題を, 最大マッチング問題という. マッチング $M$ に対し, 長さが奇数の道 $P =(a_1, a_2, \cdots, a_{2k+1})$ が, 条件 $a_i \in A\setminus M$ $(\forall i: 奇数)$, $a_i \in M$ $(\forall i: 偶数)$ を満たし、道$P$の始点と終点が$M$の端点でないとき, $P$ は $M$ に関する増加道と呼ばれる. 増加道に関して, 以下の性質が成り立つ: | + | '''(a) 最大マッチング問題''' 枝数が最大のマッチングを求める問題を, 最大マッチング問題という. マッチング $<math>M</math>$ に対し, 長さが奇数の道 <math>$P =(a_1, a_2, \cdots, a_{2k+1})</math>$ が, 条件 $<math>a_i \in A\setminus M</math>$ $<math>(\forall i:</math> 奇数)$, $<math>a_i \in M</math>$ $<math>(\forall i:</math> 偶数<math>)</math>$ を満たし、道$<math>P</math>$の始点と終点が$<math>M</math>$の端点でないとき, $<math>P</math>$ は $<math>M</math>$ に関する増加道と呼ばれる. 増加道に関して, 以下の性質が成り立つ: |
− | + | *マッチング $<math>M</math>$ 及び $<math>M</math>$ に関する増加道 $<math>P</math>$ に対し, 枝集合 <math>$(M \setminus P) \cup (P \setminus M)$</math> は枝数 $<math>|M| + 1</math>$ のマッチングである. | |
− | + | ||
− | マッチング $M$ 及び $M$ に関する増加道 $P$ に対し, 枝集合 $(M \setminus P) \cup (P \setminus M)$ は枝数 $|M| + 1$ のマッチングである. | + | *$<math>M</math>$ は最大マッチング $<math>\iff$ $M</math>$ に関する増加道が存在しない. |
− | |||
− | $M$ は最大マッチング $\iff$ $M$ に関する増加道が存在しない. | ||
− | 従って, 枝数 0 のマッチングからはじめ, 各反復では, 増加道を求めてマッチングの枝数を増やしていくことで, 最大マッチングが求められる. $G$ が2部グラフの場合には, 増加道の存在判定及び検出が容易に実行できるのに対し, 一般のグラフの場合には多少工夫を要する. いずれの場合も多項式時間で最大マッチングを求めることができる. | + | 従って, 枝数 0 のマッチングからはじめ, 各反復では, 増加道を求めてマッチングの枝数を増やしていくことで, 最大マッチングが求められる. $<math>G</math>$ が2部グラフの場合には, 増加道の存在判定及び検出が容易に実行できるのに対し, 一般のグラフの場合には多少工夫を要する. いずれの場合も多項式時間で最大マッチングを求めることができる. |
− | 点集合 $U \subseteq V$ に対して, 任意の枝 $a \in A$ の端点のうち少なくとも一方が $U$ に含まれるとき, $U$ は $G$ の[[被覆 (グラフ理論における)|被覆]] と呼ばれる. 任意のマッチング $M \subseteq A$ と任意の被覆 $U \subseteq V$ に対して, 不等式 $|M| \leq |U|$ が成り立つ. 特に, $G$ が2部グラフならば, 最大マッチングの枝数と最小被覆の点数は等しい: | + | 点集合 $<math>U \subseteq V</math>$ に対して, 任意の枝 $<math>a \in A</math>$ の端点のうち少なくとも一方が $<math>U</math>$ に含まれるとき, $<math>U</math>$ は <math>$G</math>$ の[[被覆 (グラフ理論における)|被覆]] と呼ばれる. 任意のマッチング $<math>M \subseteq A</math>$ と任意の被覆 $<math>U \subseteq V</math>$ に対して, 不等式 $<math>|M| \leq |U|</math>$ が成り立つ. 特に, $<math>G</math>$ が2部グラフならば, 最大マッチングの枝数と最小被覆の点数は等しい: |
− | + | :<math>\max\{|M| \mid M: G</math> のマッチング<math>\} = \min\{|U| \mid U: G</math> の被覆<math>\}.</math> | |
− | |||
− | |||
− | |||
これを, 2部グラフに関する[[最大マッチング最小被覆定理]]という. | これを, 2部グラフに関する[[最大マッチング最小被覆定理]]という. | ||
− | 一般のグラフの場合, 式(1)は成り立つとは限らないが,成り立つようにその右辺を修正することができる.奇数個の点からなる点集合の族を ${\ | + | 一般のグラフの場合, 式(1)は成り立つとは限らないが,成り立つようにその右辺を修正することができる.奇数個の点からなる点集合の族を $<math>{\mathcal U} = \{U_1, U_2, \cdots, U_k\}</math>$ とする. 任意の枝 $<math>a \in A</math>$ に対して, 以下の条件 (i) または (ii) が成り立つとき, $<math>\mathcal U</math>$ を $<math>G</math>$ の奇被覆と呼ぶ: |
− | (i) $|U_i| = 1$ なる $U_i$ が存在して, $a$ の一方の端点が $U_i$ に含まれる. | + | :<math>(i) \quad $|U_i| = 1$</math> なる $<math>U_i</math>$ が存在して, $<math>a</math>$ の一方の端点が $<math>U_i$</math> に含まれる. |
− | (ii) $|U_i| > 1$ なる $U_i$ が存在して, $a$ の両端点が $U_i$ に含まれる. | + | :<math>(ii) \quad$|U_i| > 1$</math> なる $<math>U_i</math>$ が存在して, $a$ の両端点が $<math>U_i</math>$ に含まれる. |
− | 各 $U \in \ | + | 各 $<math>U \in \mathcal U</math>$ に対し, $<math>c(U)</math>$ を, $<math>|U| = 1</math>$ ならば $<math>c(U) = 1$, $|U| > 1</math>$ ならば <math>$c(U) = (|U| - 1)/2</math>$, と定める. このとき, 次の最大・最小定理が成り立つ: |
− | \textstyle \max\{|M| \mid M: G | + | :<math>\textstyle \max\{|M| \mid M: G</math> のマッチング <math>\} = \min\{\sum_{U \in {\mathcal U}} c(U) \mid {\mathcal U}: G</math> の奇被覆<math>\}.</math> |
− | |||
− | 2部グラフ $G = (V^+, V^-; A)$ において, $|M| = |V^+|$であるマッチング $M$ を, 左側端点集合 $V^+$ に関する完全マッチングという. 左側端点集合 $V^+$ に関する完全マッチングが存在するための必要十分条件は次のように書ける: | + | 2部グラフ $<math>G = (V^+, V^-; A)</math>$ において, $<math>|M| = |V^+|</math>$であるマッチング $<math>M</math>$ を, 左側端点集合 $<math>V^+</math>$ に関する完全マッチングという. 左側端点集合 $<math>V^+</math>$ に関する完全マッチングが存在するための必要十分条件は次のように書ける: |
− | |U^+| \leq |\{v \in V^- \mid \ u \in U^+, (u, v) \in A\}| \qquad | + | |
+ | :<math>|U^+| \leq |\{v \in V^- \mid \ u \in U^+, (u, v) \in A\}| \qquad | ||
(\forall U^+ \subseteq V^+). | (\forall U^+ \subseteq V^+). | ||
+ | </math> | ||
+ | |||
これを, [[ホールの定理]] (Hall's theorem) と呼ぶ. | これを, [[ホールの定理]] (Hall's theorem) と呼ぶ. | ||
− | 最小被覆族の構造に基づいた2部グラフの分解として[[ダルメジ・メンデルゾーン分解]] (Dulmage-Mendelsohn decomposition) が知られている.略してDM分解と呼ばれる. この分解は, 与えられた2部グラフを, 半順序構造を有する部分グラフの族へと一意的に分解する. DM 分解は, 連立一次方程式を解く際にも有用である. 係数行列に関連する2部グラフのDM分解を用いて係数行列のブロック三角化が出来, これにより計算時間を削減することができる. | + | 最小被覆族の構造に基づいた2部グラフの分解として[[ダルメジ・メンデルゾーン分解]] (Dulmage-Mendelsohn decomposition) が知られている. 略してDM分解と呼ばれる. この分解は, 与えられた2部グラフを, 半順序構造を有する部分グラフの族へと一意的に分解する. DM 分解は, 連立一次方程式を解く際にも有用である. 係数行列に関連する2部グラフのDM分解を用いて係数行列のブロック三角化が出来, これにより計算時間を削減することができる. |
+ | |||
+ | '''(b) 最大重みマッチング問題''' 無向グラフ $<math>G = (V, A)</math>$ 及び各枝 $<math>a \in A</math>$ の重み $<math>w(a) \in \mathbf{R}</math>$が与えられたとき, 枝重みの和 $<math>\sum_{a \in M}w(a)</math>$ を最大にするマッチング $<math>M \subseteq A</math>$ を求める問題を最大重みマッチング問題と呼ぶ. 最大重み$<math>k</math>$-マッチング問題, 最大重み完全マッチング問題も同様に定義される. 2部グラフにおける最大重み完全マッチング問題は[[割当問題]] (assignment problem) とも呼ばれる. | ||
− | |||
− | |||
最大重みマッチングを求めるときも, 最大マッチングと同様に 増加道を用いて繰り返しマッチングの枝数を増やしていき, 最終的に所望のマッチングを求めることができる. その際, 各反復でのマッチングがある種の最適性を満たすように, 増加道をうまく選ぶ必要がある. | 最大重みマッチングを求めるときも, 最大マッチングと同様に 増加道を用いて繰り返しマッチングの枝数を増やしていき, 最終的に所望のマッチングを求めることができる. その際, 各反復でのマッチングがある種の最適性を満たすように, 増加道をうまく選ぶ必要がある. | ||
− | 一般のグラフの場合には, まず最大重みマッチング問題を線形計画問題として定式化し, そこから現れる相補性条件を考え,その条件が満たされるように増加道を選ぶ. 特に, $G$ が2部グラフの場合は, マッチングの重みの増加量が最大となるように, 各反復において増加道を選べば良い. いずれの場合も, 多項式時間で最大重みマッチングを求めることが出来る.以上のような主双対算法の他に多くの解法が提案されている. | + | 一般のグラフの場合には, まず最大重みマッチング問題を線形計画問題として定式化し, そこから現れる相補性条件を考え,その条件が満たされるように増加道を選ぶ. 特に, $<math>G</math>$ が2部グラフの場合は, マッチングの重みの増加量が最大となるように, 各反復において増加道を選べば良い. いずれの場合も, 多項式時間で最大重みマッチングを求めることが出来る. 以上のような主双対算法の他に多くの解法が提案されている. |
− | '''(c) 安定結婚問題''' 2部グラフでのマッチング問題の一種として, [[安定結婚問題]]が挙げられる. 同じ人数の男性と女性が存在して, 各々が異性に対して結婚相手としての選好順序をもつと仮定する. ここで, 男女を全て結婚させること, すなわち男女間の完全マッチングについて考える. 男女間の完全マッチングが与えられたとき, それが安定であるとは, 結婚していない男性と女性の任意の対 $(m, f)$ に対して, $m$ が $f$ より現在の結婚相手を好むか, または $f$ が $m$ より現在の結婚相手を好むことである. 男女間の安定な完全マッチングを求める問題を安定結婚問題と呼ぶ. | + | '''(c) 安定結婚問題''' 2部グラフでのマッチング問題の一種として, [[安定結婚問題]]が挙げられる. 同じ人数の男性と女性が存在して, 各々が異性に対して結婚相手としての選好順序をもつと仮定する. ここで, 男女を全て結婚させること, すなわち男女間の完全マッチングについて考える. 男女間の完全マッチングが与えられたとき, それが安定であるとは, 結婚していない男性と女性の任意の対 $<math>(m, f)</math>$ に対して, $<math>m</math>$ が $<math>f</math>$ より現在の結婚相手を好むか, または <math>$f</math>$ が $<math>m</math>$ より現在の結婚相手を好むことである. 男女間の安定な完全マッチングを求める問題を安定結婚問題と呼ぶ. |
安定な完全マッチングは常に存在し, ゲイル・シャプレー(Gale-Shapley) の解法により多項式時間で求められる. この解法では, 各々の男性は1番目に好きな女性から, 2番目に好きな女性, ...と順に, 拒否されたら順位を1つ下げて, 求婚する. 一方, 各々の女性は求婚してきた男性のうち, 最も好きな人との結婚を仮受託し, それ以外の求婚してきた男性を拒否する. この手順を繰り返し, すべての女性が仮受託したら終了であり, 安定な完全マッチングが求められる. | 安定な完全マッチングは常に存在し, ゲイル・シャプレー(Gale-Shapley) の解法により多項式時間で求められる. この解法では, 各々の男性は1番目に好きな女性から, 2番目に好きな女性, ...と順に, 拒否されたら順位を1つ下げて, 求婚する. 一方, 各々の女性は求婚してきた男性のうち, 最も好きな人との結婚を仮受託し, それ以外の求婚してきた男性を拒否する. この手順を繰り返し, すべての女性が仮受託したら終了であり, 安定な完全マッチングが求められる. | ||
57行目: | 54行目: | ||
---- | ---- | ||
− | |||
'''参考文献''' | '''参考文献''' | ||
[1] R. K. Ahuja, T. L. Magnanti and J. B. Orlin, ''Network Flows: Theory, Algorithms, and Applications'', Prentice Hall, 1993. | [1] R. K. Ahuja, T. L. Magnanti and J. B. Orlin, ''Network Flows: Theory, Algorithms, and Applications'', Prentice Hall, 1993. | ||
− | [2] W. J. Cook, W. H. Cunningham, W. R. Pulleyblank and A. Schrijver, ''Combinatorial Optimization'' | + | [2] W. J. Cook, W. H. Cunningham, W. R. Pulleyblank and A. Schrijver, ''Combinatorial Optimization'', John Wiley & Sons, 1998. |
[3] 藤重悟,『離散数学』, 岩波講座応用数学基礎12, 岩波書店, 1993. | [3] 藤重悟,『離散数学』, 岩波講座応用数学基礎12, 岩波書店, 1993. | ||
− | [4] D. Gusfield and R. W. Irving, ''The Stable Marriage Problem: Structure and Algorithms'' | + | [4] D. Gusfield and R. W. Irving, ''The Stable Marriage Problem: Structure and Algorithms'', MIT Press, 1989. |
[5] 伊理正夫, 藤重悟, 大山達雄,『グラフ・ネットワーク・マトロイド』, 産業図書, 1986. | [5] 伊理正夫, 藤重悟, 大山達雄,『グラフ・ネットワーク・マトロイド』, 産業図書, 1986. |
2007年7月6日 (金) 16:30時点における版
【まっちんぐもんだい (matching problems) 】
$$ を無向グラフとする. $$ のマッチング (matching) とは, 端点を共有しない枝の集合 $$ のことである. $$ 本の枝からなるマッチングを $$-マッチングと呼び, 特に $$ のときは完全マッチングと呼ぶ. 与えられた目的に従ってマッチングを選ぶ問題のことを, マッチング問題という. 以下, 幾つかのマッチング問題について簡単に説明する.
(a) 最大マッチング問題 枝数が最大のマッチングを求める問題を, 最大マッチング問題という. マッチング $$ に対し, 長さが奇数の道 $ が, 条件 $$ $ 奇数)$, $$ $ 偶数$ を満たし、道$$の始点と終点が$$の端点でないとき, $$ は $$ に関する増加道と呼ばれる. 増加道に関して, 以下の性質が成り立つ:
- マッチング $$ 及び $$ に関する増加道 $$ に対し, 枝集合 は枝数 $$ のマッチングである.
- $$ は最大マッチング $$ に関する増加道が存在しない.
従って, 枝数 0 のマッチングからはじめ, 各反復では, 増加道を求めてマッチングの枝数を増やしていくことで, 最大マッチングが求められる. $$ が2部グラフの場合には, 増加道の存在判定及び検出が容易に実行できるのに対し, 一般のグラフの場合には多少工夫を要する. いずれの場合も多項式時間で最大マッチングを求めることができる.
点集合 $$ に対して, 任意の枝 $$ の端点のうち少なくとも一方が $$ に含まれるとき, $$ は $ の被覆 と呼ばれる. 任意のマッチング $$ と任意の被覆 $$ に対して, 不等式 $$ が成り立つ. 特に, $$ が2部グラフならば, 最大マッチングの枝数と最小被覆の点数は等しい:
- のマッチング の被覆
これを, 2部グラフに関する最大マッチング最小被覆定理という.
一般のグラフの場合, 式(1)は成り立つとは限らないが,成り立つようにその右辺を修正することができる.奇数個の点からなる点集合の族を $$ とする. 任意の枝 $$ に対して, 以下の条件 (i) または (ii) が成り立つとき, $$ を $$ の奇被覆と呼ぶ:
- なる $$ が存在して, $$ の一方の端点が $ に含まれる.
- なる $$ が存在して, $a$ の両端点が $$ に含まれる.
各 $$ に対し, $$ を, $$ ならば $$ ならば $, と定める. このとき, 次の最大・最小定理が成り立つ:
- のマッチング の奇被覆
2部グラフ $$ において, $$であるマッチング $$ を, 左側端点集合 $$ に関する完全マッチングという. 左側端点集合 $$ に関する完全マッチングが存在するための必要十分条件は次のように書ける:
これを, ホールの定理 (Hall's theorem) と呼ぶ.
最小被覆族の構造に基づいた2部グラフの分解としてダルメジ・メンデルゾーン分解 (Dulmage-Mendelsohn decomposition) が知られている. 略してDM分解と呼ばれる. この分解は, 与えられた2部グラフを, 半順序構造を有する部分グラフの族へと一意的に分解する. DM 分解は, 連立一次方程式を解く際にも有用である. 係数行列に関連する2部グラフのDM分解を用いて係数行列のブロック三角化が出来, これにより計算時間を削減することができる.
(b) 最大重みマッチング問題 無向グラフ $$ 及び各枝 $$ の重み $$が与えられたとき, 枝重みの和 $$ を最大にするマッチング $$ を求める問題を最大重みマッチング問題と呼ぶ. 最大重み$$-マッチング問題, 最大重み完全マッチング問題も同様に定義される. 2部グラフにおける最大重み完全マッチング問題は割当問題 (assignment problem) とも呼ばれる.
最大重みマッチングを求めるときも, 最大マッチングと同様に 増加道を用いて繰り返しマッチングの枝数を増やしていき, 最終的に所望のマッチングを求めることができる. その際, 各反復でのマッチングがある種の最適性を満たすように, 増加道をうまく選ぶ必要がある.
一般のグラフの場合には, まず最大重みマッチング問題を線形計画問題として定式化し, そこから現れる相補性条件を考え,その条件が満たされるように増加道を選ぶ. 特に, $$ が2部グラフの場合は, マッチングの重みの増加量が最大となるように, 各反復において増加道を選べば良い. いずれの場合も, 多項式時間で最大重みマッチングを求めることが出来る. 以上のような主双対算法の他に多くの解法が提案されている.
(c) 安定結婚問題 2部グラフでのマッチング問題の一種として, 安定結婚問題が挙げられる. 同じ人数の男性と女性が存在して, 各々が異性に対して結婚相手としての選好順序をもつと仮定する. ここで, 男女を全て結婚させること, すなわち男女間の完全マッチングについて考える. 男女間の完全マッチングが与えられたとき, それが安定であるとは, 結婚していない男性と女性の任意の対 $$ に対して, $$ が $$ より現在の結婚相手を好むか, または $ が $$ より現在の結婚相手を好むことである. 男女間の安定な完全マッチングを求める問題を安定結婚問題と呼ぶ. 安定な完全マッチングは常に存在し, ゲイル・シャプレー(Gale-Shapley) の解法により多項式時間で求められる. この解法では, 各々の男性は1番目に好きな女性から, 2番目に好きな女性, ...と順に, 拒否されたら順位を1つ下げて, 求婚する. 一方, 各々の女性は求婚してきた男性のうち, 最も好きな人との結婚を仮受託し, それ以外の求婚してきた男性を拒否する. この手順を繰り返し, すべての女性が仮受託したら終了であり, 安定な完全マッチングが求められる.
参考文献
[1] R. K. Ahuja, T. L. Magnanti and J. B. Orlin, Network Flows: Theory, Algorithms, and Applications, Prentice Hall, 1993.
[2] W. J. Cook, W. H. Cunningham, W. R. Pulleyblank and A. Schrijver, Combinatorial Optimization, John Wiley & Sons, 1998.
[3] 藤重悟,『離散数学』, 岩波講座応用数学基礎12, 岩波書店, 1993.
[4] D. Gusfield and R. W. Irving, The Stable Marriage Problem: Structure and Algorithms, MIT Press, 1989.
[5] 伊理正夫, 藤重悟, 大山達雄,『グラフ・ネットワーク・マトロイド』, 産業図書, 1986.
[6] E. L. Lawler, Combinatorial Optimization: Networks and Matroids, Holt, Rinehart and Winston, 1976.
[7] L. Lovász and M. D. Plummer, Matching Theory, North-Holland, 1986.
[8] C. H. Papadimitriou and K. Steiglitz, Combinatorial Optimization: Algorithms and Complexity, Prentice-Hall, 1982.
[9] W. R. Pullyblank, "Matchings and Extensions," in Handbook of Combinatorics, Vol. I, R. L. Graham, M. Grötschel and L. Lovász, eds., North-Holland, 1995.