多対一マッチングにおけるアルゴリズムと耐戦略性
ここでは, 指標を満たすマッチングに到達するアルゴリズムを紹介します.
指標に関する記事は
で紹介しています.
マッチング理論では, 指標を満たすマッチングが存在するかどうかに加えて, 存在するならそれをどのように見つけるかが大事になっています.
私が学部時代に学んでいた数学(例えば微分方程式やブラウワーの不動点定理など)は, 存在だけを証明することが多く, 実際に求める手順まではやらない(もしくはできない)こともよくありました(多分). しかしマッチング理論では「求める手順」も重要になります.
- 実用性を強く求められているため.
- 全てのマッチングを列挙してから, 指標を満たすものを探すのは数が膨大すぎるため.
例えば学生の数が人で学校の数が
個あるとき, 「各学生がどの学校に行くか(未割当も含める)」という割当の総数は, おおざっぱに
のオーダーになります.
や
が少し増えるだけで爆発的に増えるので, 全列挙は現実的ではありません. そのため, 希望の指標を満たすマッチングを直接求めるアルゴリズムが必要不可欠なのです.
アルゴリズムを実行するときは情報がいります. 典型的には, 次の情報を用意します.
- 学生の人数, 学校の数.
- 各学生が学校に対して持つ選好.
- 各学校が学生に対して持つ優先順位.
- 学校がどんな制約を持つか(単純定員なのか属性定員なのか等).
- (もしあれば)その他の追加情報.
アルゴリズムを回すとき, 設計者(マッチングを決める人)は学生に 「あなたの学校ランキングはどうなってる?」と聞いて提出してもらいます. しかし, ほんとうの情報が提出される保証はありません.
直感的には, 設計者に提出する情報に戦略性が薄くなる(つまり, そのシステムは学生の戦略的な操作に耐えているといえる. )ということです.
では指標に到達するアルゴリズムを紹介しましょう. どれも良いアルゴリズムですが, 適用できる範囲が決まっていたり, 到達できる指標が異なります. もしマッチングを決める必要が出た場合は, 欲しい指標に合わせてアルゴリズムを選ぶ(あるいは設計する)ことになります.
- 単純定員制約:全ての学校が「人数の上限」だけを持つ.
- 属性定員制約:少なくとも一つ以上の学校が, 男女別など属性ごとの上限を持つ.
- 一般上限制約:属性定員よりも抽象的な制約だと思っておけば十分です(詳しい定義は別途).
制約に関する詳しい記事は
で紹介しています.
例えば, テストの点数で学生が一つのランキングに並び, 全ての学校がその順に学生を好む場合です(高校受験など).
一方で, 各学校が面接などで独自に評価して優先順位がバラバラになると, 共通プライオリティは成り立ちません.
この情報を得られると, “どの程度の公平性を許すか” を反映した設計ができるようになります.
各アルゴリズムに関する詳細な説明は, いつか(多分)作ろうと思います. この中でCAアルゴリズムに関しては, 「マッチング理論とマーケットデザイン(著:小島武仁, 河田陽向)」にも載っています. 初学者におすすめしたい良書です.
多対一マッチングにおける制約.
応用で重要となる, 単純定員(容量制約)と属性定員を紹介します.
研究室配属を考えてみましょう. 同じ学科の全ての人が希望する研究室にいけるでしょうか. また高校受験を考えてみましょう. 希望する学校に全ての学生が入ることができるでしょうか.
直感では無理そうですよね. それはなぜかというと, 研究室や学校には定員が設けられているからです. 定員をオーバーしてしまうと, 学生の面倒を見切ることができなくなります. そのため定員が設けられており, その結果, 全ての学生が希望する研究室や学校に入ることはできないんですね.
マッチング理論の本質は, 限りある定員にどのように学生を配属するか, といえます. これが難しいんですよね^^
定員には何種類かあります. 代表的なのが次の2つです.
- ホグワーツの定員は2人まで.
- 研究室Aの定員は5人まで.
- 高校Bの定員は320人まで.
例えば「リンゴ好き」と「バナナ好き」を属性にすると, 両方好きな学生が存在しうるので, このままだと扱いがややこしくなります.
- 学校と男女(男性上限, 女性上限).
- 研究室と実験系/理論系(実験系上限, 理論系上限).
- ホグワーツで「各寮 × 純血/非純血」ごとの上限.
- 学校と血液型(A, B, O, AB の各上限).
全ての学校が単純定員のときは, 全体として「単純定員(容量制約)」と呼びます. 全ての学校が属性定員をもつときは, 全体として「属性定員(属性制約)」と呼びます.
もし「ある学校は単純定員, 別の学校は属性定員」という混在がある場合はどうするか, という疑問も生まれると思います. この場合は, 全体としては属性定員(属性制約)として扱うのが自然です.
実行可能なマッチングの例は
https://rikida.hatenablog.com/
で紹介しています.
この2つの制約の違いはマッチングに関係します. 各指標を紹介した記事で, 良いとされる指標を複数紹介しました. 実は単純定員と属性定員を比べると, 単純定員の方が「良い性質を同時に満たすマッチング」が存在しやすいです.
- [公平性 + 個人合理性 + 実行可能性] + 学生最適:○
- [無駄のなさ + 公平性 + 個人合理性 + 実行可能性] + 学生最適:○
- [公平性 + 個人合理性 + 実行可能性] + 学生最適:○
- [無駄のなさ + 公平性 + 個人合理性 + 実行可能性] + 学生最適:×(存在しないことがある)
上の指標を達成するマッチングの求め方(アルゴリズム)は別記事で紹介しています.
制約には, もう少し条件を抽象化したマトロイド制約や, 一般上限制約というものがあります. この定義はここでは省略しますが, くわしい内容が知りたい方は 「マッチング理論とマーケットデザイン」(小島武仁, 河田陽向 著)を読んでみてください.
マッチング理論でよく議論される各指標
ここではマッチングを考えるときに重要な指標について話します.
マッチング理論では, どんな性質を満たすべきかがよく議論されます. 指標は自由に定義されますが, まずは「この性質をみたすとよい」とされている指標をいくつか紹介します.
初めに, マッチング理論でよく使われる
- 実行可能(feasible)
- 個人合理的(IR)
- 公平性(fair)
- 無駄のなさ(non-wasteful)
- (A の中で)学生最適(student-optimal in A)
- 効率的(Pareto efficient)
を紹介します.
次に紹介する効率性の指標は, 無駄のなさよりも強い指標です.
・マッチング
・全ての学生にとって
・少なくとも一人以上の学生は
この指標は, それより全ての学生にとって良くなるマッチングが存在しないことを保証する.
実はマッチングが効率性を満たすならばマッチング
は無駄のなさを満たします. つまり効率性は無駄がない状態であり, さらにこれ以上マッチングをよくできない状態を表すといえます.
普通, 各学生にとって好みのマッチングは別々となる. 一致することは珍しいが, 特定の指標だったり, 特定の制約だったりすれば存在が保証される. 全ての学生の好みが一致しているという点でも, もし存在すれば採用してあげたい.
これらの指標はマッチング理論でよく使われます.
ただし指標というのは自由な発想が多くあるものです. そこで私がオリジナルで新たな指標を挙げましょう.
学生集合を
学校集合を
と書きます.
マッチングは「上段=学生, 下段=行き先」の行列表示で書きます.
(例:ロンはホグワーツ, ハーマイオニーはまほうどころ, ルーナは未割当, を表す.)
ここでは全ての割当(各学生の行き先がのいずれか)を列挙します. 学生3人×行き先3つなので
通りあります.
学校2つ(+ 未割当
), 学生3人
とします. 各学校の定員や選好, 優先順位を以下で定義します.
- 定員:
は2人まで,
は2人まで.
- 学生の選好:全員
.
- 優先順位:
:
.
:
.
(H が3人で超過)
(M が3人で超過)
次に公平性をみたすマッチングが何か見ていきましょう. (以降は「実行可能性」を別に課さない限り, 定員内に収まっている必要はありません.)
次に私が自由な発想で考えた指標たちをみたすかどうか見ていきましょう!!
(参考:除かれる8通り = 行き先が全員
を除く.
次に指標の組み合わせで新しい指標をつくり, それをみたすマッチングを列挙していきましょう!!
ここまで指標に対応するマッチングを列挙してきました. 指標を組み合わせれば組み合わせるほど, その指標をみたすマッチングの数が少なくなることを実感できたでしょうか. この感覚はとても大切で, 満たしてほしいマッチングが存在しないことを理解することで, どの指標であればマッチングが存在するかに目を向けられるようになります.
- 制約:
は「男性1名まで・女性1名まで」(計2名まで).
は定員2名まで.
- 学生の選好:全員
.
- 優先順位:
:
.
:
.
- 性別:ロン=男性, ハーマイオニー=女性, ルーナ=女性.
(
が3人で超過).
(
が3人で超過).
(
に女性2人).
(
に女性2人).
(公平性は, あなたの説明どおり「行きたい学校に自分より下位がいる」タイプの正当な羨望が発生しないこと, で判定している.)
理由として, 「実行可能 + 無駄のなさ」の2通りではいずれもロンが
しかしルーナは
この例で重要なのは, 制約が属性定員のとき, 実行可能 + 公平 + 無駄のなさ + 個人合理的を満たすマッチングが必ずしも存在するとは限らないということです. 単純定員では必ず存在する一方で, 属性定員では必ず存在するとは限らないことに注意して下さい.
上で列挙した
結論として, 学生最適(
実は, 属性定員下のマッチングにおいて, 次の存在定理が成り立つ.
この定理は, タルスキの不動点定理を用いて証明されます.
タルスキの不動点定理に関する記事はこちらになります
順序・上界/下界・上限/下限・束の定義
この記事ではマッチング理論で活躍する(そもそも経済学が使われる)順序の定義を厳密に行おうと思います. 最後に選好の定義との関連も述べます.
- (反射律)
- (反対称律)
- (推移律)
このとき は半順序であり, 全順序ではない.
(反射律) 任意の
(反対称律)
(推移律)
以上より
次に
は
の上界:
.
- 任意の上界
に対して
.
は
の下界:
.
- 任意の下界
に対して
.
この定義のもと以下の注意が成り立ちます.
また, 半順序ならば強選好とは限らず, 強選好ならば半順序とは限らないことにも注意する.
多対一マッチングにおける選好と優先順位
多対一マッチングにおける選好とは, 学生が学校をどのように好んでいるかを表すものです.
多対一マッチングにおける優先順序とは, 学校が学生をどのようにランク付けしているかを表すものです.
選好と優先順序は意味合いが異なります.
学校側が学生を一人だけ受け入れるなら誰を優先するかを表すのが優先順序といえます.
一方で, 学校側で選好を定義するには, 学生の部分集合に対して好みを持っている必要があります.
なぜなら考えている対象が多対一マッチングであり, 学校は複数の学生を受け入れるためです.
そのため, 学校が学生に対する選好を考えるのは複雑になりがちなので, 優先順位(一人だけの選好)に制限して考えることが多いです.
選好(優先順序)には弱選好と強選好の2種類があります.
数学的な定義を以下で与える.
- (反射律)
- (推移律)
- (完備性)
- (反射律)
- (推移律)
- (完備性)
- (未割当に関する対称律)
- (未割当以上に関する対称律)
は「
は
を
より厳密に好む」を表す.
は「
は
と
を無差別とみなす」を表す.
学校集合を とする.
またハリーはレイブンクローに入るぐらいだったら, 寮に入らないほうがましだと考えているとする.
またハリーはハッフルパフよりもグリフィンドールの方が入りたいと思っているとする.
このときのハリーに関する選好
このとき,
- 未割当
より上(グリフィンドール, ハッフルパフ)では無差別が存在しない.
- したがって, 未割当より上で強い選好を持つ.
このとき,
- 未割当
より上に位置するグリフィンドールとハッフルパフが無差別である.
このとき,
- 未割当
より上はグリフィンドールのみである.
- その部分では無差別が存在しない.
このとき,
- 未割当
より上にレイブンクローとハッフルパフの無差別が存在する.
学生集合を とする.
このとき, グリフィンドールの優先順位は強優先順位(学生集合上の全順序)である.
この場合, ハリーとロンの間に無差別が存在するため, これは弱優先順位である.
一般に未割当 より下に位置付けられているものは省略して書くことが多いです.
例えばハリーの選好が
であった場合は,
のように書きます.
未割当より下の順位はマッチングにほとんど影響しないため, この省略が許されていることに注意しましょう. (ただし制約による.)
有限束ならば完備束の証明とタルスキの不動点定理の証明
この記事ではマッチング理論において, 最適マッチングを求めるのにしばしば応用されるタルスキの不動点定理の証明を行います. はじめに「有限束ならば完備束」であることを示し, 有限束でもタルスキの不動点定理を使えることを確認します. 次にタルスキの不動点定理を2種類証明します. 後半の有限束バージョンがマッチング理論でよく使われるイメージがあります. タルスキの不動点定理を用いる文献としては, Kamada & Kojima (2024) の学生最適公平マッチング, 安達による学生最適安定マッチング, Hatfield の多対多マッチングの安定マッチングなどがあります.
任意に
帰納法の仮定より,
よって
よって
よって数学的帰納法を
また
さらに
同様に
さらに
以上より任意の
(1)
(2)
このとき次が成り立つ.
(i) 任意の
(ii) さらに
ここで任意の
各
任意に
ポイント支払いの収束
生協でカレーを食べ続けると、支払額はどこに収束するのか?
昨日、生協で 1000円のカレーを食べたのですが、ちょうど 生協ポイントが100ポイントあったので使ってみました。
-
本来:1000円
-
ポイント利用:900円で支払い
→ これは嬉しい。
しかも、900円の10%還元が付いて、90ポイントも貰いました。
これはうれしいな……。
生協Payのポイント還元の仕組み(前提)
私の大学では、学食の支払いで 生協Pay を使うと、
-
生協Payで支払った金額の 10% がポイントとして付与される
-
そのポイントは 次回の支払いに使える
-
ただし ポイントで払った分にはポイントが付かない
という仕組みらしいです。
※補足:PayPayポイントも同様の仕組み……と思っていたのですが、
2026年2月現在、PayPayポイントにもポイントがつく仕様になっていました。
「毎回ポイントを使う」を繰り返すとどうなる?
カレーを食べ終えてぼーっとしていると、ふと疑問が湧きました。
今ある 90ポイントを次回の支払いに使えば(また1000円のカレーを食べるとして)
-
次は 910円で食べられる
-
さらにその910円の10%で 91ポイントが付く
次にその91ポイントを使えば……
またポイントが付いて(小数点を許すと)
-
909円払う → 90.9ポイント付く
-
次は
払って → 90.91ポイント付く……
支払額の列はこうなる
増えて減ってを繰り返しながら、最終的に どこかに収束しそうだな、と。
ひらめき:漸化式で書ける
いま、n回目の支払いを と置くと、
n回目の支払いでは前回の支払い に付いたポイント
を使うので、
という漸化式が立ちます。
解くと
となります。
ここから一般化して考える
以降、一般化して次の仮定のもとで考えます。
-
買いたい商品は常に同じ(ずっとカレーを買う状況)
-
ポイント還元率
は
問題のセットアップ
商品の値段を とする。
また還元率を割合で
と定義する(例:10%なら )。
-
n回目に支払う金額:
-
総支払額:
また、n回目の支払いで使うポイントを とし、
と置く。
定理1(毎回ポイントを使うときの支払額)
定理1
任意に を固定する。
、
とする。
このとき「その都度ポイント支払い」をするときの n回目支払額 は
定理1の証明
の定義より
に注意する。
ここで なので
特性方程式を解けば
を得る。 とおくと
となり、 より解いて
が得られる。■
系1(支払額の収束値)
定理1より、 を考えるとよい。
系1
その都度ポイント支払いしたときの支払額の収束値は
-
のとき:発散
-
のとき:
例:1000円・10%還元の場合
を代入すると
つまり最初の疑問の答えは
支払額は
に収束する
だったのですね。解決解決……。
でも本当に「毎回ポイント払い」が一番得なのか?
ここで新たな疑問が生まれました。
例えば3回買うとして、
-
毎回ポイントを使う
-
1000円 → 900円 → 910円
-
合計 2810円
-
一方、ポイントを貯めておいて
-
1回目1000円、2回目1000円払い
-
3回目に200ポイント使って800円
だと合計 2800円。
……あれ?
「毎回ポイント払い」って、最安ではないのでは?
そこで私は、
現金の総支払額を最小にする支払い方は何か?
という問題を考えたくなりました。
(※実際には「毎回ポイント払い」にも意味がある。後で述べます。)
記号の導入
総支払金額:
n回目の支払い時に使ったポイント:
ただし
n回目の支払いまでに使った総ポイント:
なお
に注意。
命題1(総支払額を最小にする支払い方の特徴)
命題1
任意に を固定する。
総支払金額
を最小にする支払方法は、
-
(
)
-
を満たす の中で、
が最小になるものに限られる。逆も正しい。
命題1の証明
のときは支払方法が1通りで、
を満たすので成立。
以下 とする。
まず
ゆえに
また、 は使用ポイント総額なので、獲得ポイント総額を超えない:
よって を最大化するには
を狙えばよい。
さらに
などを代入して整理すると
よって最大の は
を満たし、かつ が最大になるもの。
に戻すと
を満たすものの中で が最小のものと同値。■
系2(最小支払い戦略の形)
系2 回支払い、商品価格
、還元率
のとき、最小支払い方法は次の通り。
-
のとき
かつ
を満たすもの
-
のとき
かつ
を満たすもの
定理2(毎回払いとの差は最大でもこれだけ)
定理2 回支払い、商品
、還元率
とする。
このとき、「その都度ポイント支払い」と「総支払最小戦略」の金額差は最大でも
である。
証明(概略)
最小化する支払方法を一つ固定し、それを とする。
系2と定理1から、 のとき差は
であり、
より、nによらず差の最大は
となる。 の場合は省略。■
「毎回ポイント払い」は損なのか?
定理2より、総支払最小の支払い方との差は最大でも
です。
これは「毎回ポイント払いが劣っている」ことを必ずしも意味しません。
むしろ、
-
最小戦略は「n回しか買わない」と先に決める必要がある
-
現実は「いつ買い物をやめるかわからない」ことが多い
という点が重要です。
そのため毎回ポイントを使っておけば、いつ買い物をやめても
損失は最大でも
に抑えられます。
たとえば なら
つまり「毎回ポイント払い」は、
いつやめても損が大きくなりにくい保険のような支払い方
と考えられるのではないでしょうか。