gale shapley algorithm

Upload: andrei-ilisei

Post on 04-Jun-2018

232 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/13/2019 Gale Shapley Algorithm

    1/18

    Gale-Shapley Algorithm

    - for Stable Matching -

  • 8/13/2019 Gale Shapley Algorithm

    2/18

    The problem

    Scenario: N couples want to adopt N kids. Each couple lists all the kids in the order of their preference. Each kid lists all the couples in the order of their preference. A couple cannot have 2 different kids on the same level of preference. A kid cannot have 2 different couples on the same level of preference.

    What we have to do: Assign each couple a kid such that you a stable matching is achieved.

  • 8/13/2019 Gale Shapley Algorithm

    3/18

    Unstable Match

    Couple A Kid A Couple B

  • 8/13/2019 Gale Shapley Algorithm

    4/18

    Unstable Match

    Couple A Kid A Couple B

  • 8/13/2019 Gale Shapley Algorithm

    5/18

    Unstable Match

    Couple A Kid A Couple B

  • 8/13/2019 Gale Shapley Algorithm

    6/18

    What is a stable match?

    A couple C and a child K are in a stable mat least one of the following conditions is me C prefers Kover any other child that can be adopted

    C prefers a different kid K1over Kbut K1is alreadyby C1and he prefers C1 overC.

    In the result match there must not be a kid acouple that would prefer each other over thecurrent matches.

  • 8/13/2019 Gale Shapley Algorithm

    7/18

    How do we match the kids and the cou

    Using Gale-Shapley Algorithm: Developed by Lloyd Shapley and David Gale.

    Published 1962.

    Also known as Algorithm of Happiness.

  • 8/13/2019 Gale Shapley Algorithm

    8/18

    How does it work?

    1stpreference 2ndpreference 3rdpreference 4

    Couple 1 Kid 3 Kid 2 Kid 4 K

    Couple 2 Kid 2 Kid 4 Kid 1 K

    Couple 3 Kid 2 Kid 3 Kid 4 K

    Couple 4 Kid 4 Kid 1 Kid 3 K

    1stpreference 2ndpreference 3rdpreference 4

    Kid 1 Couple 2 Couple 3 Couple 1 C

    Kid 2 Couple 1 Couple 2 Couple 3 C

    Kid 3 Couple 3 Couple 1 Couple 3 C

    Kid 4 Couple 4 Couple 2 Couple 1 C

    Couple 2

    Couple 3

    Couple 4

    Couple 1

  • 8/13/2019 Gale Shapley Algorithm

    9/18

    How does it work?

    1stpreference 2ndpreference 3rdpreference 4

    Couple 1 Kid 3 Kid 2 Kid 4 K

    Couple 2 Kid 2 Kid 4 Kid 1 K

    Couple 3 Kid 2 Kid 3 Kid 4 K

    Couple 4 Kid 4 Kid 1 Kid 3 K

    1stpreference 2ndpreference 3rdpreference 4

    Kid 1 Couple 2 Couple 3 Couple 1 C

    Kid 2 Couple 1 Couple 2 Couple 3 C

    Kid 3 Couple 3 Couple 1 Couple 3 C

    Kid 4 Couple 4 Couple 2 Couple 1 C

    Couple 2

    Couple 3

    Couple 4

    Couple 1 Kid 3

  • 8/13/2019 Gale Shapley Algorithm

    10/18

    How does it work?

    1stpreference 2ndpreference 3rdpreference 4

    Couple 1 Kid 3 Kid 2 Kid 4 K

    Couple 2 Kid 2 Kid 4 Kid 1 K

    Couple 3 Kid 2 Kid 3 Kid 4 K

    Couple 4 Kid 4 Kid 1 Kid 3 K

    1stpreference 2ndpreference 3rdpreference 4

    Kid 1 Couple 2 Couple 3 Couple 1 C

    Kid 2 Couple 1 Couple 2 Couple 3 C

    Kid 3 Couple 3 Couple 1 Couple 3 C

    Kid 4 Couple 4 Couple 2 Couple 1 C

    Couple 2 Kid 2

    Couple 3

    Couple 4

    Couple 1 Kid 3

  • 8/13/2019 Gale Shapley Algorithm

    11/18

    How does it work?

    1stpreference 2ndpreference 3rdpreference 4

    Couple 1 Kid 3 Kid 2 Kid 4 K

    Couple 2 Kid 2 Kid 4 Kid 1 K

    Couple 3 Kid 2 Kid 3 Kid 4 K

    Couple 4 Kid 4 Kid 1 Kid 3 K

    1stpreference 2ndpreference 3rdpreference 4

    Kid 1 Couple 2 Couple 3 Couple 1 C

    Kid 2 Couple 1 Couple 2 Couple 3 C

    Kid 3 Couple 3 Couple 1 Couple 3 C

    Kid 4 Couple 4 Couple 2 Couple 1 C

    Couple 2 Kid 2

    Couple 3 Kid 3

    Couple 4

    Couple 1 Kid 3

  • 8/13/2019 Gale Shapley Algorithm

    12/18

    How does it work?

    1stpreference 2ndpreference 3rdpreference 4

    Couple 1 Kid 3 Kid 2 Kid 4 K

    Couple 2 Kid 2 Kid 4 Kid 1 K

    Couple 3 Kid 2 Kid 3 Kid 4 K

    Couple 4 Kid 4 Kid 1 Kid 3 K

    1stpreference 2ndpreference 3rdpreference 4

    Kid 1 Couple 2 Couple 3 Couple 1 C

    Kid 2 Couple 1 Couple 2 Couple 3 C

    Kid 3 Couple 3 Couple 1 Couple 3 C

    Kid 4 Couple 4 Couple 2 Couple 1 C

    Couple 2 Kid 2

    Couple 3 Kid 3

    Couple 4

    Couple 1 Kid 3 Kid 2

  • 8/13/2019 Gale Shapley Algorithm

    13/18

    How does it work?

    1stpreference 2ndpreference 3rdpreference 4

    Couple 1 Kid 3 Kid 2 Kid 4 K

    Couple 2 Kid 2 Kid 4 Kid 1 K

    Couple 3 Kid 2 Kid 3 Kid 4 K

    Couple 4 Kid 4 Kid 1 Kid 3 K

    1stpreference 2ndpreference 3rdpreference 4

    Kid 1 Couple 2 Couple 3 Couple 1 C

    Kid 2 Couple 1 Couple 2 Couple 3 C

    Kid 3 Couple 3 Couple 1 Couple 3 C

    Kid 4 Couple 4 Couple 2 Couple 1 C

    Couple 2 Kid 2 Kid 4

    Couple 3 Kid 3

    Couple 4

    Couple 1 Kid 3 Kid 2

  • 8/13/2019 Gale Shapley Algorithm

    14/18

    How does it work?

    1stpreference 2ndpreference 3rdpreference 4

    Couple 1 Kid 3 Kid 2 Kid 4 K

    Couple 2 Kid 2 Kid 4 Kid 1 K

    Couple 3 Kid 2 Kid 3 Kid 4 K

    Couple 4 Kid 4 Kid 1 Kid 3 K

    1stpreference 2ndpreference 3rdpreference 4

    Kid 1 Couple 2 Couple 3 Couple 1 C

    Kid 2 Couple 1 Couple 2 Couple 3 C

    Kid 3 Couple 3 Couple 1 Couple 3 C

    Kid 4 Couple 4 Couple 2 Couple 1 C

    Couple 2 Kid 2 Kid 4

    Couple 3 Kid 3

    Couple 4 Kid 4

    Couple 1 Kid 3 Kid 2

  • 8/13/2019 Gale Shapley Algorithm

    15/18

    How does it work?

    1stpreference 2ndpreference 3rdpreference 4

    Couple 1 Kid 3 Kid 2 Kid 4 K

    Couple 2 Kid 2 Kid 4 Kid 1 K

    Couple 3 Kid 2 Kid 3 Kid 4 K

    Couple 4 Kid 4 Kid 1 Kid 3 K

    1stpreference 2ndpreference 3rdpreference 4

    Kid 1 Couple 2 Couple 3 Couple 1 C

    Kid 2 Couple 1 Couple 2 Couple 3 C

    Kid 3 Couple 3 Couple 1 Couple 3 C

    Kid 4 Couple 4 Couple 2 Couple 1 C

    Couple 2 Kid 2 Kid 4 Kid 1

    Couple 3 Kid 3

    Couple 4 Kid 4

    Couple 1 Kid 3 Kid 2

  • 8/13/2019 Gale Shapley Algorithm

    16/18

    The algorithm

    Let Couplesbe the set of couples and Kidsbe the set of kids;

    functionstableMatching{

    Initialize all cCouples and kKids tofree

    whilechildless couple Cwho still has a kid K to propose for adoption

    {

    K = C's highest ranked such child to whom he has not yet proposed

    ifC is not adopted

    (K, C) become a family

    elsesome pair (C', K) already exists

    ifK prefers C to C

    (C, K) become a family

    K' becomesfree for adoption

    else

    (C', K) remain together

    }

    }

  • 8/13/2019 Gale Shapley Algorithm

    17/18

    Running Time

    Suppose we have N couples and N kids.

    At each step from start to finish a couple maproposal to a kid.

    Each proposal takes constant time O(1).

    Since there are N couples and N kids => maxn*n possible proposals (a couple does not prtwice to the same kid).

    Total time complexity is O(n*n).

  • 8/13/2019 Gale Shapley Algorithm

    18/18

    Other Application

    Matching employees with employers.

    Matching men and women on a Dating webs

    Etc.