市场机制设计 第七周:Stable Matching

发布于 2022-10-20  164 次阅读


若干定义

基本设定

分别给定一个hospitals对students的偏好集合,和一个students对hospitals的偏好集合,对hospitals和students进行一一配对。

unstable pair

如果存在这样一个hospital(h)和student(s)对,同时满足以下两点:

  • 相比现在分配到的student,h更偏好s
  • 相比现在分配到的hospital,s更偏好h

则称h-s是unstable pair。

即unstable pair一定是现在的matching中不存在的pair。

stable assignment

不存在unstable pair的分配策略,称为stable assignment或stable matching。

例子

B选项中的pair B-X,即是一个unstable pair。

因为在当前的匹配中,相比已经分配到的Z,B更偏好X;而相比已经分配到的A,X更偏好B,故满足上述定义。

Gale-Shapley 算法

首先要说明,stable matching并不总是存在的。

上述说法存疑

算法步骤

Gale-Shapley算法用于寻找稳定匹配。依然用hospitals和students的匹配问题为例,算法步骤如下:

INITIALIZE M //M是初始为空的匹配
while(还有hospital没被匹配,且其尚未对每一个student都propose一次)
{
  //s是h的偏好列表中第一个还未被propose的student
  if(s尚未被匹配) 将h-s添加到M;
  else if(相比已经被分配到的h',s更偏好h) 用h-s代替M中已存在的h'-s;
  else s拒绝h的propose;
}
RETURN M //此时M为stable matching 

证明算法有效性

不难观察到两个事实:

  1. hospitals按其偏好的降序对students提出propose
  2. 一旦一个student被匹配成功,他将不会变为失配状态,处境也不会更坏。也就是说,要么维持现状,要么得到一个比现在“更好”的匹配。

不难理解:

  1. 算法在经过至多 $n^2$ 次 WHILE 循环后终止。
  2. 算法最后总是输出一个匹配。
  3. 所有hospitals最后都会被成功匹配。(反证法可证)
  4. 所有students最后都会被成功匹配。(由4可得)
  5. 在Gale-Shapley算法生成的组合M*中,不存在unstable pairs。

下面证明5的正确性。

我们考虑任何不在M*中的pair h-s,可以将其分为两类:

  1. h从未propose过s,说明存在一个s',它在h的偏好列表上排在s的前面,所以h-s不会是unstable的。
  2. h已经propose过s,说明s拒绝了h(立刻或者稍后),故对于s,有一个“更好”的h',所以h-s依然不会是unstable的。

综上,不论哪种情况,都不存在M*外的h-s是unstable的。

Gale-Shapley算法保证对任何实例问题都能找到一个stable matching。

此外,虽然一个实例问题可能会存在若干种不同的stable matching,且此算法是nondeterministic(非确定性)的,以任何顺序执行此算法,都只会得出同一个stable matching。

hospital optimality

当以hospitals为propose的提出方,students为propose的接受方时,算法是倾向对hospitals有利的。

前面提到,对于一个实例问题,可能存在若干不同的stable matching。基于此,我们做如下定义:

Def.如果在任一stable matching中,存在h-s的pair,则称s是h的valid partner。

我们说Gale-Shapley算法是hospital-optimal的,因为在算法结果中,每一个hospital总能匹配到它的best valid partner。

下面对此进行证明。

证明

M*是此算法生成的stable matching

  1. 我们假设h被s拒绝,是算法执行中发生的第一次hospital被自己的valid partner拒绝的事件。
  2. 显然存在一个stable matching M,内含h-s这一pair。
  3. 由于在M*中s拒绝了h,说明存在一个h',满足 s prefers h' to h
  4. 假设在M中h'的配对student是s'。
  5. 在M*中,当h被s拒绝时,h'还没有被拒绝过,。也就是说,h'在没有向s'提出过propose的情况下与s配对了。故满足 h' prefers s to s'

现在整理一下。在stable matching M中,存在两个pair:h-s和h'-s'。但是,我们由上述推导得出两个小结论,s prefers h' to h,且h' prefers s to s'。显然,h'-s构成了一个unstable pair,所以M不是一个stable matching。

故得证。

student pessimal

事实上,hospital-optimality是以student的利益为代价的。每一个student在算法结果中都得到了worst valid partner。

下面对此进行证明。

证明

  1. 假设在M*中,h-s为一个pair,且h不是s的worst valid partner。也就是说,存在一个比h“更坏”的h'。s prefers h to h'
  2. 在一个stable matching M中,存在两个pair,h'-s和h-s'。
  3. 基于已经证明的hospital-optimality,s是h的best valid partner(因为M*中存在h-s)。即 h prefers s to s'

显然,在M中,h-s构成了一个unstable pair,故M不是一个stable matching。

故得证。

一点尾巴

在以hospitals为主动的Gale-Shapley算法中,hospitals无法以谎报自己的preference来获得更好的结果。