0% found this document useful (0 votes)
291 views

Gale Shapley Algorithm

The document describes the Gale-Shapley stable matching algorithm. It involves couples ranking kids and kids ranking couples, with the goal of matching each couple to a kid such that no two unmatched parties would both prefer each other over their assigned matches. The algorithm works by having couples sequentially propose to their highest ranked remaining kids, with pairs forming if the kid prefers that couple over its current match. This process repeats until all couples are matched, resulting in a stable matching in O(n^2) time where n is the number of couples/kids.

Uploaded by

Andrei Ilisei
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
291 views

Gale Shapley Algorithm

The document describes the Gale-Shapley stable matching algorithm. It involves couples ranking kids and kids ranking couples, with the goal of matching each couple to a kid such that no two unmatched parties would both prefer each other over their assigned matches. The algorithm works by having couples sequentially propose to their highest ranked remaining kids, with pairs forming if the kid prefers that couple over its current match. This process repeats until all couples are matched, resulting in a stable matching in O(n^2) time where n is the number of couples/kids.

Uploaded by

Andrei Ilisei
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 18

Gale-Shapley Algorithm - for Stable Matching -

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.

Unstable Match

Couple A

Kid A

Couple B

Kid B

Unstable Match

Couple A

Kid A

Couple B

Kid B

Unstable Match

Couple A

Kid A

Couple B

Kid B

What is a stable match?


A couple C and a child K are in a stable match if

at least one of the following conditions is met:

C prefers K over any other child that can be adopted. C prefers a different kid K1 over K but K1 is already adopted by C1 and he prefers C1 over C.

In the result match there must not be a kid and a

couple that would prefer each other over their current matches.

How do we match the kids and the couples?


Using Gale-Shapley Algorithm: Developed by Lloyd Shapley and David Gale. Published 1962. Also known as Algorithm of Happiness.

How does it work?


1st preference Couple 1 Couple 2 Couple 3 Couple 4 Kid 3 Kid 2 Kid 2 Kid 4 1st preference Kid 1 Kid 2 Couple 2 Couple 1 2nd preference Kid 2 Kid 4 Kid 3 Kid 1 2nd preference Couple 3 Couple 2 3rd preference Kid 4 Kid 1 Kid 4 Kid 3 3rd preference Couple 1 Couple 3 4th preference Kid 1 Kid 3 Kid 1 Kid 2 4th preference Couple 4 Couple 4

Kid 3
Kid 4
Couple 1
Couple 2 Couple 3 Couple 4

Couple 3
Couple 4

Couple 1
Couple 2

Couple 3
Couple 1

Couple 2
Couple 3

How does it work?


1st preference Couple 1 Couple 2 Couple 3 Couple 4 Kid 3 Kid 2 Kid 2 Kid 4 1st preference Kid 1 Kid 2 Couple 2 Couple 1 2nd preference Kid 2 Kid 4 Kid 3 Kid 1 2nd preference Couple 3 Couple 2 3rd preference Kid 4 Kid 1 Kid 4 Kid 3 3rd preference Couple 1 Couple 3 4th preference Kid 1 Kid 3 Kid 1 Kid 2 4th preference Couple 4 Couple 4

Kid 3
Kid 4
Couple 1
Couple 2 Couple 3 Couple 4

Couple 3
Couple 4
Kid 3

Couple 1
Couple 2

Couple 3
Couple 1

Couple 2
Couple 3

How does it work?


1st preference Couple 1 Couple 2 Couple 3 Couple 4 Kid 3 Kid 2 Kid 2 Kid 4 1st preference Kid 1 Kid 2 Couple 2 Couple 1 2nd preference Kid 2 Kid 4 Kid 3 Kid 1 2nd preference Couple 3 Couple 2 3rd preference Kid 4 Kid 1 Kid 4 Kid 3 3rd preference Couple 1 Couple 3 4th preference Kid 1 Kid 3 Kid 1 Kid 2 4th preference Couple 4 Couple 4

Kid 3
Kid 4
Couple 1
Couple 2 Couple 3 Couple 4

Couple 3
Couple 4
Kid 3
Kid 2

Couple 1
Couple 2

Couple 3
Couple 1

Couple 2
Couple 3

How does it work?


1st preference Couple 1 Couple 2 Couple 3 Couple 4 Kid 3 Kid 2 Kid 2 Kid 4 1st preference Kid 1 Kid 2 Couple 2 Couple 1 2nd preference Kid 2 Kid 4 Kid 3 Kid 1 2nd preference Couple 3 Couple 2 3rd preference Kid 4 Kid 1 Kid 4 Kid 3 3rd preference Couple 1 Couple 3 4th preference Kid 1 Kid 3 Kid 1 Kid 2 4th preference Couple 4 Couple 4

Kid 3
Kid 4
Couple 1
Couple 2 Couple 3 Couple 4

Couple 3
Couple 4
Kid 3
Kid 2 Kid 3

Couple 1
Couple 2

Couple 3
Couple 1

Couple 2
Couple 3

How does it work?


1st preference Couple 1 Couple 2 Couple 3 Couple 4 Kid 3 Kid 2 Kid 2 Kid 4 1st preference Kid 1 Kid 2 Couple 2 Couple 1 2nd preference Kid 2 Kid 4 Kid 3 Kid 1 2nd preference Couple 3 Couple 2 3rd preference Kid 4 Kid 1 Kid 4 Kid 3 3rd preference Couple 1 Couple 3 4th preference Kid 1 Kid 3 Kid 1 Kid 2 4th preference Couple 4 Couple 4

Kid 3
Kid 4
Couple 1
Couple 2 Couple 3 Couple 4

Couple 3
Couple 4
Kid 3
Kid 2 Kid 3

Couple 1
Couple 2

Couple 3
Couple 1

Couple 2
Couple 3

Kid 2

How does it work?


1st preference Couple 1 Couple 2 Couple 3 Couple 4 Kid 3 Kid 2 Kid 2 Kid 4 1st preference Kid 1 Kid 2 Couple 2 Couple 1 2nd preference Kid 2 Kid 4 Kid 3 Kid 1 2nd preference Couple 3 Couple 2 3rd preference Kid 4 Kid 1 Kid 4 Kid 3 3rd preference Couple 1 Couple 3 4th preference Kid 1 Kid 3 Kid 1 Kid 2 4th preference Couple 4 Couple 4

Kid 3
Kid 4
Couple 1
Couple 2 Couple 3 Couple 4

Couple 3
Couple 4
Kid 3
Kid 2 Kid 3

Couple 1
Couple 2

Couple 3
Couple 1

Couple 2
Couple 3

Kid 2
Kid 4

How does it work?


1st preference Couple 1 Couple 2 Couple 3 Couple 4 Kid 3 Kid 2 Kid 2 Kid 4 1st preference Kid 1 Kid 2 Couple 2 Couple 1 2nd preference Kid 2 Kid 4 Kid 3 Kid 1 2nd preference Couple 3 Couple 2 3rd preference Kid 4 Kid 1 Kid 4 Kid 3 3rd preference Couple 1 Couple 3 4th preference Kid 1 Kid 3 Kid 1 Kid 2 4th preference Couple 4 Couple 4

Kid 3
Kid 4
Couple 1
Couple 2 Couple 3 Couple 4

Couple 3
Couple 4
Kid 3
Kid 2 Kid 3 Kid 4

Couple 1
Couple 2

Couple 3
Couple 1

Couple 2
Couple 3

Kid 2
Kid 4

How does it work?


1st preference Couple 1 Couple 2 Couple 3 Couple 4 Kid 1 Kid 2 Kid 3 Kid 2 Kid 2 Kid 4 1st preference Couple 2 Couple 1 2nd preference Kid 2 Kid 4 Kid 3 Kid 1 2nd preference Couple 3 Couple 2 3rd preference Kid 4 Kid 1 Kid 4 Kid 3 3rd preference Couple 1 Couple 3 4th preference Kid 1 Kid 3 Kid 1 Kid 2 4th preference Couple 4 Couple 4

Kid 3
Kid 4
Couple 1
Couple 2 Couple 3 Couple 4

Couple 3
Couple 4
Kid 3
Kid 2 Kid 3 Kid 4

Couple 1
Couple 2

Couple 3
Couple 1

Couple 2
Couple 3

Kid 2
Kid 4 Kid 1

The algorithm
Let Couples be the set of couples and Kids be the set of kids; function stableMatching { Initialize all c Couples and k Kids to free while childless couple C who still has a kid K to propose for adoption { K = C's highest ranked such child to whom he has not yet proposed if C is not adopted (K, C) become a family else some pair (C', K) already exists if K prefers C to C (C, K) become a family K' becomes free for adoption else (C', K) remain together } }

Running Time
Suppose we have N couples and N kids. At each step from start to finish a couple makes a

proposal to a kid. Each proposal takes constant time O(1). Since there are N couples and N kids => maximum n*n possible proposals (a couple does not propose twice to the same kid). Total time complexity is O(n*n).

Other Application
Matching employees with employers. Matching men and women on a Dating website.

Etc.

You might also like