アメリカの大学で奮闘中

アメリカの大学でプログラミングを学ぶべくコンピューターサイエンス学部に留学したものの挫折し数学科に転部した著者が、自分の挫折ポイントを踏まえて数学、プログラミング、アルゴリズムついてできる限り分かりやすく解説してみるブログ。*できる限り記事の内容は技術的な間違いをしないように気をつけていますが、もし間違いがあれば教えていただけると助かります。

Gale-shapleyアルゴリズム

Gale-shapleyアルゴリズムはマッチングに関するアルゴリズムです。

 

合コンでの男女のマッチング、研修医と病院のマッチングなどのグループAとグループB、そして全ての参加者がそのマッチング対象のグループの参加者に対して順位がある場合、Gale-shapleyアルゴリズムが役立ちます。

 

これらのマッチングでは、安定マッチングと呼ばれる一対一になっている状態を目指します。

 

言葉だけの説明は難しいと思うので、実際の問題を使って解説します。

 

男女の合コンのマッチングを考えます。

 

A ... 1,2,3

B ... 2,1,3

C ... 2,3,1

 

1 ... B, A, C 

2 ... A, B, C

3 ... C, B, A

 

男性最良マッチング

男性の希望順位ができる限り反映されるマッチング(最良)を考えます。ちなみに、英語ではoptimalと言います。

 

男性の最良マッチングは男性の希望順位が反映されやすいように男性から告白します。

 

そうすると、女性1、女性2、女性3は以下のように男性がアプローチしてきます。

女性1...A

女性2...B,C

女性3...

 

でも女性2は二人の人が来ているので、自分の順位から高い方を選びます。女性2はA->B->Cの順番で希望しているので、Bを選択。

 

女性2とBがマッチしたので、Cは他の女性にアプローチします。Cの順番は2,3,1なので、女性3にアプローチします。

 

これでカップルは{(1,A)(2,B)(3,C)}とマッチングによって誕生しました。

 

ここで全員が安定マッチングしたことが分かります。

 

 

女性最良マッチング

女性の希望順位ができる限り反映されるマッチング(最良)を考えます。ちなみに、英語ではoptimalと言います。

 

上の男性マッチングの女性と男性を逆にするイメージです。

 

そうすると、男性A、男性B、男性Cは以下のように女性がアプローチしてきます

 

男性A ... 2

男性B ... 1

男性C ... 3

 

これにより{(A,2)(B,1)(C,3)}のカップルが生まれました。

 

一対一になっていることから安定マッチングになっていることも理解できます。