summer school on matching problems markets and mechanisms
play

Summer School on Matching Problems, Markets and Mechanisms David - PowerPoint PPT Presentation

Summer School on Matching Problems, Markets and Mechanisms David Manlove Outline 1. The Hospitals / Residents problem and its variants 2. The House Allocation problem 3. Kidney exchange 1 Tutorial 2 The House Allocation Problem with


  1. A faster algorithm l Three-phase algorithm with O( √ nm ) overall complexity • [Abraham, Cechlárová, M and Mehlhorn, 2004] l Phase 1 – O( √ nm ) time – Find a maximum matching in G – Classical O( √ nm ) augmenting path algorithm • [Hopcroft and Karp, 1973] l Phase 2 – O( m ) time – Enforce trade-in-free property l Phase 3 – O( m ) time – Enforce coalition-free property – Extension of Gale’s Top-Trading Cycles (TTC) algorithm • [Shapley and Scarf, 1974] 24

  2. Phase 1 a 1 : h 4 h 5 h 3 h 2 h 1 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 a 3 : h 5 h 4 h 1 h 2 h 3 a 4 : h 3 h 5 h 4 a 5 : h 4 h 3 h 5 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 : h 4 h 3 h 5 h 9 25

  3. Phase 1 a 1 : h 4 h 5 h 3 h 2 h 1 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 a 3 : h 5 h 4 h 1 h 2 h 3 a 4 : h 3 h 5 h 4 a 5 : h 4 h 3 h 5 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 : h 4 h 3 h 5 h 9 l Maximum matching M in G has size 9 l M must be maximal l No guarantee that M is trade-in-free or coalition-free 26

  4. Phase 1 M not coalition-free a 1 : h 4 h 5 h 3 h 2 h 1 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 a 3 : h 5 h 4 h 1 h 2 h 3 M not trade-in-free a 4 : h 3 h 5 h 4 a 5 : h 4 h 3 h 5 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 : h 4 h 3 h 5 h 9 l Maximum matching M in G has size 9 l M must be maximal l No guarantee that M is trade-in-free or coalition-free 27

  5. Phase 2 description l For each house h , maintain a list L h , initially containing those pairs ( a , r ) such that: – a is a matched applicant who prefers h to M ( a ) – r is the rank of h in a ’ s list l Maintain a stack S of unmatched houses h whose list L h is nonempty l Each matched applicant a maintains a pointer curr a to the rank of M ( a ) l Example a 1 : h 4 h 5 h 3 h 2 h 1 L h 6 = 〈 ( a 6 , 5), ( a 7 , 4), ( a 8 , 6) 〉 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 L h 7 = 〈 ( a 6 , 6), ( a 7 , 5), ( a 8 , 5) 〉 a 3 : h 5 h 4 h 1 h 2 h 3 L h 8 = 〈 ( a 6 , 4) 〉 a 4 : h 3 h 5 h 4 L h 10 = 〈 ( a 7 , 7) 〉 a 5 : h 4 h 3 h 5 L h 11 = 〈 ( a 6 , 8) 〉 S = 〈 h 6 , h 7 〉 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 curr a 6 =10 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 curr a 7 =9 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 : h 4 h 3 h 5 h 9 28

  6. Phase 2 description while S is nonempty pop a house h from S; remove the first pair (a,r) from the head of L h ; if r < curr a // a prefers h to M(a) let h ’ = M(a); remove (a,h ’ ) from M and add (a,h) to M; curr a := r; h := h ’ ; push h onto the stack if L h is nonempty; a 1 : h 4 h 5 h 3 h 2 h 1 L h6 = 〈 ( a 6 , 5), ( a 7 , 4), ( a 8 , 6) 〉 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 L h7 = 〈 ( a 6 , 6), ( a 7 , 5), ( a 8 , 5) 〉 a 3 : h 5 h 4 h 1 h 2 h 3 L h8 = 〈 ( a 6 , 4) 〉 a 4 : h 3 h 5 h 4 L h10 = 〈 ( a 7 , 7) 〉 a 5 : h 4 h 3 h 5 L h11 = 〈 ( a 6 , 8) 〉 S = 〈 h 6 , h 7 〉 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 curr a6 =10 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 curr a7 =9 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 : h 4 h 3 h 5 h 9 29

  7. Phase 2 example while S is nonempty pop a house h from S; remove the first pair (a,r) from the head of L h ; if r < curr a // a prefers h to M(a) let h ’ = M(a); remove (a,h ’ ) from M and add (a,h) to M; curr a := h; h := h ’ ; push h onto the stack if L h is nonempty; a 1 : h 4 h 5 h 3 h 2 h 1 L h6 = 〈 ( a 6 , 5), ( a 7 , 4), ( a 8 , 6) 〉 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 L h7 = 〈 ( a 6 , 6), ( a 7 , 5), ( a 8 , 5) 〉 a 3 : h 5 h 4 h 1 h 2 h 3 L h8 = 〈 ( a 6 , 4) 〉 a 4 : h 3 h 5 h 4 L h10 = 〈 ( a 7 , 7) 〉 a 5 : h 4 h 3 h 5 L h11 = 〈 ( a 6 , 8) 〉 S = 〈 h 6 , h 7 〉 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 curr a6 =10 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 curr a7 =9 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 : h 4 h 3 h 5 h 9 30

  8. Phase 2 example while S is nonempty pop a house h from S; remove the first pair (a,r) from the head of L h ; if r < curr a // a prefers h to M(a) let h ’ = M(a); remove (a,h ’ ) from M and add (a,h) to M; curr a := h; h := h ’ ; push h onto the stack if L h is nonempty; a 1 : h 4 h 5 h 3 h 2 h 1 L h6 = 〈 ( a 6 , 5), ( a 7 , 4), ( a 8 , 6) 〉 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 L h7 = 〈 ( a 7 , 5), ( a 8 , 5) 〉 a 3 : h 5 h 4 h 1 h 2 h 3 L h8 = 〈 ( a 6 , 4) 〉 a 4 : h 3 h 5 h 4 L h10 = 〈 ( a 7 , 7) 〉 a 5 : h 4 h 3 h 5 L h11 = 〈 ( a 6 , 8) 〉 S = 〈 h 6 , h 10 〉 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 curr a6 =6 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 curr a7 =9 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 : h 4 h 3 h 5 h 9 31

  9. Phase 2 example while S is nonempty pop a house h from S; remove the first pair (a,r) from the head of L h ; if r < curr a // a prefers h to M(a) let h ’ = M(a); remove (a,h ’ ) from M and add (a,h) to M; curr a := h; h := h ’ ; push h onto the stack if L h is nonempty; a 1 : h 4 h 5 h 3 h 2 h 1 L h6 = 〈 ( a 6 , 5), ( a 7 , 4), ( a 8 , 6) 〉 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 L h7 = 〈 ( a 7 , 5), ( a 8 , 5) 〉 a 3 : h 5 h 4 h 1 h 2 h 3 L h8 = 〈 ( a 6 , 4) 〉 a 4 : h 3 h 5 h 4 L h10 = 〈 ( a 7 , 7) 〉 a 5 : h 4 h 3 h 5 L h11 = 〈 ( a 6 , 8) 〉 S = 〈 h 6 , h 10 〉 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 curr a6 =6 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 curr a7 =9 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 : h 4 h 3 h 5 h 9 32

  10. Phase 2 example while S is nonempty pop a house h from S; remove the first pair (a,r) from the head of L h ; if r < curr a // a prefers h to M(a) let h ’ = M(a); remove (a,h ’ ) from M and add (a,h) to M; curr a := h; h := h ’ ; push h onto the stack if L h is nonempty; a 1 : h 4 h 5 h 3 h 2 h 1 L h6 = 〈 ( a 6 , 5), ( a 7 , 4), ( a 8 , 6) 〉 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 L h7 = 〈 ( a 7 , 5), ( a 8 , 5) 〉 a 3 : h 5 h 4 h 1 h 2 h 3 L h8 = 〈 ( a 6 , 4) 〉 a 4 : h 3 h 5 h 4 L h10 = 〈 〉 a 5 : h 4 h 3 h 5 L h11 = 〈 ( a 6 , 8) 〉 S = 〈 h 6 , h 11 〉 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 curr a6 =6 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 curr a7 =7 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 : h 4 h 3 h 5 h 9 33

  11. Phase 2 example while S is nonempty pop a house h from S; remove the first pair (a,r) from the head of L h ; if r < curr a // a prefers h to M(a) let h ’ = M(a); remove (a,h ’ ) from M and add (a,h) to M; curr a := h; h := h ’ ; push h onto the stack if L h is nonempty; a 1 : h 4 h 5 h 3 h 2 h 1 L h6 = 〈 ( a 6 , 5), ( a 7 , 4), ( a 8 , 6) 〉 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 L h7 = 〈 ( a 7 , 5), ( a 8 , 5) 〉 a 3 : h 5 h 4 h 1 h 2 h 3 L h8 = 〈 ( a 6 , 4) 〉 a 4 : h 3 h 5 h 4 L h10 = 〈 〉 a 5 : h 4 h 3 h 5 L h11 = 〈 ( a 6 , 8) 〉 S = 〈 h 6 , h 11 〉 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 curr a6 =6 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 curr a7 =7 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 : h 4 h 3 h 5 h 9 34

  12. Phase 2 example while S is nonempty pop a house h from S; remove the first pair (a,r) from the head of L h ; if r < curr a // a prefers h to M(a) let h ’ = M(a); remove (a,h ’ ) from M and add (a,h) to M; curr a := h; h := h ’ ; push h onto the stack if L h is nonempty; a 1 : h 4 h 5 h 3 h 2 h 1 L h6 = 〈 ( a 6 , 5), ( a 7 , 4), ( a 8 , 6) 〉 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 L h7 = 〈 ( a 7 , 5), ( a 8 , 5) 〉 a 3 : h 5 h 4 h 1 h 2 h 3 L h8 = 〈 ( a 6 , 4) 〉 a 4 : h 3 h 5 h 4 L h10 = 〈 〉 a 5 : h 4 h 3 h 5 L h11 = 〈 〉 S = 〈 h 6 〉 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 curr a6 =6 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 curr a7 =7 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 : h 4 h 3 h 5 h 9 35

  13. Phase 2 example while S is nonempty pop a house h from S; remove the first pair (a,r) from the head of L h ; if r < curr a // a prefers h to M(a) let h ’ = M(a); remove (a,h ’ ) from M and add (a,h) to M; curr a := h; h := h ’ ; push h onto the stack if L h is nonempty; a 1 : h 4 h 5 h 3 h 2 h 1 L h6 = 〈 ( a 7 , 4), ( a 8 , 6) 〉 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 L h7 = 〈 ( a 7 , 5), ( a 8 , 5) 〉 a 3 : h 5 h 4 h 1 h 2 h 3 L h8 = 〈 ( a 6 , 4) 〉 a 4 : h 3 h 5 h 4 L h10 = 〈 〉 a 5 : h 4 h 3 h 5 L h11 = 〈 〉 S = 〈 h 7 〉 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 curr a6 =5 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 curr a7 =7 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 : h 4 h 3 h 5 h 9 36

  14. Phase 2 example while S is nonempty pop a house h from S; remove the first pair (a,r) from the head of L h ; if r < curr a // a prefers h to M(a) let h ’ = M(a); remove (a,h ’ ) from M and add (a,h) to M; curr a := h; h := h ’ ; push h onto the stack if L h is nonempty; a 1 : h 4 h 5 h 3 h 2 h 1 L h6 = 〈 ( a 7 , 4), ( a 8 , 6) 〉 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 L h7 = 〈 ( a 7 , 5), ( a 8 , 5) 〉 a 3 : h 5 h 4 h 1 h 2 h 3 L h8 = 〈 ( a 6 , 4) 〉 a 4 : h 3 h 5 h 4 L h10 = 〈 〉 a 5 : h 4 h 3 h 5 L h11 = 〈 〉 S = 〈 h 7 〉 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 curr a6 =5 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 curr a7 =7 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 : h 4 h 3 h 5 h 9 37

  15. Phase 2 example while S is nonempty pop a house h from S; remove the first pair (a,r) from the head of L h ; if r < curr a // a prefers h to M(a) let h ’ = M(a); remove (a,h ’ ) from M and add (a,h) to M; curr a := h; h := h ’ ; push h onto the stack if L h is nonempty; a 1 : h 4 h 5 h 3 h 2 h 1 L h6 = 〈 ( a 7 , 4), ( a 8 , 6) 〉 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 L h7 = 〈 ( a 8 , 5) 〉 a 3 : h 5 h 4 h 1 h 2 h 3 L h8 = 〈 ( a 6 , 4) 〉 a 4 : h 3 h 5 h 4 L h10 = 〈 〉 a 5 : h 4 h 3 h 5 L h11 = 〈 〉 S = 〈 〉 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 curr a6 =5 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 curr a7 =5 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 : h 4 h 3 h 5 h 9 38

  16. Phase 2 example while S is nonempty pop a house h from S; remove the first pair (a,r) from the head of L h ; if r < curr a // a prefers h to M(a) let h ’ = M(a); remove (a,h ’ ) from M and add (a,h) to M; curr a := h; h := h ’ ; push h onto the stack if L h is nonempty; a 1 : h 4 h 5 h 3 h 2 h 1 L h6 = 〈 ( a 7 , 4), ( a 8 , 6) 〉 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 L h7 = 〈 ( a 8 , 5) 〉 a 3 : h 5 h 4 h 1 h 2 h 3 L h8 = 〈 ( a 6 , 4) 〉 a 4 : h 3 h 5 h 4 L h10 = 〈 〉 a 5 : h 4 h 3 h 5 L h11 = 〈 〉 S = 〈 〉 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 curr a6 =5 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 curr a7 =5 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 : h 4 h 3 h 5 h 9 39

  17. Phase 2 termination l Once Phase 2 terminates, matching is trade-in-free l Data structures may be initialised in O( m ) time l Main loop takes O( m ) time overall l ∴ Phase 2 is O( m ) l Coalitions may remain … 40

  18. Phase 2 termination l Once Phase 2 terminates, matching is trade-in-free l Data structures may be initialised in O( m ) time l Main loop takes O( m ) time overall l ∴ Phase 2 is O( m ) l Coalitions may remain … l Example a 1 : h 4 h 5 h 3 h 2 h 1 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 a 3 : h 5 h 4 h 1 h 2 h 3 a 4 : h 3 h 5 h 4 a 5 : h 4 h 3 h 5 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 : h 4 h 3 h 5 h 9 41

  19. Phase 3 description l Once Phase 2 terminates, matching is trade-in-free l Still need to eliminate potential coalitions l Repeatedly finding and eliminating coalitions takes O( m 2 ) time – Cycle detection in G ( M ) takes O( m ) time – O( m ) coalitions in the worst case l Faster method: extension of TTC algorithm – An applicant matched to his/her first-choice house cannot be in a coalition • Such an applicant can be removed from consideration – Houses matched to such applicants are no longer exchangeable • Such a house can be removed from consideration – This rule can be recursively applied until either • No applicant remains (matching is coalition-free) • A coalition exists, which can be found and removed 42

  20. Phase 3 description l Build a path P of applicants (represented by a stack) l Each house is initially unlabelled l Each applicant a has a pointer p ( a ) pointing to M ( a ) or the first unlabelled house on a ’s preference list (whichever comes first) l Keep a counter c ( a ) for each applicant a (initially c ( a )=0 ) – This represents the number of times a appears on the stack l Outer loop iterates over each matched applicant a such that p ( a ) ≠ M ( a ) l Initialise P to contain applicant a l Inner loop iterates while P is nonempty – Pop an applicant a ’ from P – If c ( a ’ )=2 we have a coalition (CYCLE) • Remove by popping the stack and label the houses involved – Else if p ( a ’ )= M ( a ’ ) we reach a dead end (BACKTRACK) • Label M ( a ’ ) – Else add a ’’ where p ( a ’ ) =M ( a ’’ ) to the path (EXTEND) • Push a ’ and a ’’ onto the stack • Increment c ( a ’’ ) 43

  21. Phase 3: example applicant counter house label a 1 : h 4 h 5 h 3 h 2 h 1 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 a 1 1 h 1 a 2 0 h 2 a 3 : h 5 h 4 h 1 h 2 h 3 a 3 0 h 3 a 4 : h 3 h 5 h 4 a 4 0 h 4 a 5 : h 4 h 3 h 5 a 5 0 h 5 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 a 6 0 h 6 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 a 7 0 h 7 a 8 0 h 8 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 0 h 9 a 9 : h 4 h 3 h 5 h 9 a 1 P = 〈 a 1 〉 44

  22. Phase 3: example applicant counter house label a 1 : h 4 h 5 h 3 h 2 h 1 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 a 1 1 h 1 a 2 0 h 2 a 3 : h 5 h 4 h 1 h 2 h 3 a 3 0 h 3 a 4 : h 3 h 5 h 4 a 4 1 h 4 a 5 : h 4 h 3 h 5 a 5 0 h 5 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 a 6 0 h 6 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 a 7 0 h 7 a 8 0 h 8 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 0 h 9 a 9 : h 4 h 3 h 5 h 9 a 4 a 1 EXTEND P = 〈 a 1 , a 4 〉 45

  23. Phase 3: example applicant counter house label a 1 : h 4 h 5 h 3 h 2 h 1 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 a 1 1 h 1 a 2 0 h 2 a 3 : h 5 h 4 h 1 h 2 h 3 a 3 1 h 3 a 4 : h 3 h 5 h 4 a 4 1 h 4 a 5 : h 4 h 3 h 5 a 5 0 h 5 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 a 6 0 h 6 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 a 7 0 h 7 a 8 0 h 8 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 0 h 9 a 9 : h 4 h 3 h 5 h 9 a 4 a 1 EXTEND a 3 P = 〈 a 1 , a 4 , a 3 〉 46

  24. Phase 3: example applicant counter house label a 1 : h 4 h 5 h 3 h 2 h 1 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 a 1 1 h 1 a 2 0 h 2 a 3 : h 5 h 4 h 1 h 2 h 3 a 3 1 h 3 a 4 : h 3 h 5 h 4 a 4 1 h 4 a 5 : h 4 h 3 h 5 a 5 1 h 5 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 a 6 0 h 6 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 a 7 0 h 7 a 8 0 h 8 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 0 h 9 a 9 : h 4 h 3 h 5 h 9 a 4 a 1 EXTEND a 3 P = 〈 a 1 , a 4 , a 3 , a 5 〉 a 5 47

  25. Phase 3: example applicant counter house label a 1 : h 4 h 5 h 3 h 2 h 1 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 a 1 1 h 1 a 2 0 h 2 a 3 : h 5 h 4 h 1 h 2 h 3 a 3 1 h 3 a 4 : h 3 h 5 h 4 a 4 2 h 4 a 5 : h 4 h 3 h 5 a 5 1 h 5 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 a 6 0 h 6 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 a 7 0 h 7 a 8 0 h 8 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 0 h 9 a 9 : h 4 h 3 h 5 h 9 a 4 a 1 EXTEND a 3 P = 〈 a 1 , a 4 , a 3 , a 5 , a 4 〉 a 5 48

  26. Phase 3: example applicant counter house label a 1 : h 4 h 5 h 3 h 2 h 1 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 a 1 1 h 1 a 2 0 h 2 a 3 : h 5 h 4 h 1 h 2 h 3 a 3 1 h 3 a 4 : h 3 h 5 h 4 a 4 2 h 4 a 5 : h 4 h 3 h 5 a 5 1 h 5 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 a 6 0 h 6 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 a 7 0 h 7 a 8 0 h 8 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 0 h 9 a 9 : h 4 h 3 h 5 h 9 a 4 a 1 CYCLE a 3 P = 〈 a 1 , a 4 , a 3 , a 5 〉 a 5 49

  27. Phase 3: example applicant counter house label a 1 : h 4 h 5 h 3 h 2 h 1 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 a 1 1 h 1 a 2 0 h 2 a 3 : h 5 h 4 h 1 h 2 h 3 a 3 0 h 3 a 4 : h 3 h 5 h 4 a 4 0 h 4 a 5 : h 4 h 3 h 5 a 5 0 h 5 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 a 6 0 h 6 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 a 7 0 h 7 a 8 0 h 8 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 0 h 9 a 9 : h 4 h 3 h 5 h 9 a 4 a 1 CYCLE a 3 P = 〈 a 1 , a 4 , a 3 , a 5 〉 a 5 50

  28. Phase 3: example applicant counter house label a 1 : h 4 h 5 h 3 h 2 h 1 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 a 1 1 h 1 a 2 0 h 2 a 3 : h 5 h 4 h 1 h 2 h 3 a 3 0 h 3 a 4 : h 3 h 5 h 4 a 4 0 h 4 a 5 : h 4 h 3 h 5 a 5 0 h 5 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 a 6 0 h 6 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 a 7 0 h 7 a 8 0 h 8 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 0 h 9 a 9 : h 4 h 3 h 5 h 9 a 1 P = 〈 a 1 〉 51

  29. Phase 3: example applicant counter house label a 1 : h 4 h 5 h 3 h 2 h 1 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 a 1 1 h 1 a 2 1 h 2 a 3 : h 5 h 4 h 1 h 2 h 3 a 3 0 h 3 a 4 : h 3 h 5 h 4 a 4 0 h 4 a 5 : h 4 h 3 h 5 a 5 0 h 5 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 a 6 0 h 6 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 a 7 0 h 7 a 8 0 h 8 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 0 h 9 a 9 : h 4 h 3 h 5 h 9 a 1 a 2 EXTEND P = 〈 a 1 , a 2 〉 52

  30. Phase 3: example applicant counter house label a 1 : h 4 h 5 h 3 h 2 h 1 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 a 1 1 h 1 a 2 1 h 2 a 3 : h 5 h 4 h 1 h 2 h 3 a 3 0 h 3 a 4 : h 3 h 5 h 4 a 4 0 h 4 a 5 : h 4 h 3 h 5 a 5 0 h 5 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 a 6 0 h 6 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 a 7 0 h 7 a 8 0 h 8 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 1 h 9 a 9 : h 4 h 3 h 5 h 9 a 1 a 2 EXTEND P = 〈 a 1 , a 2 , a 9 〉 a 9 53

  31. Phase 3: example applicant counter house label a 1 : h 4 h 5 h 3 h 2 h 1 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 a 1 1 h 1 a 2 1 h 2 a 3 : h 5 h 4 h 1 h 2 h 3 a 3 0 h 3 a 4 : h 3 h 5 h 4 a 4 0 h 4 a 5 : h 4 h 3 h 5 a 5 0 h 5 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 a 6 0 h 6 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 a 7 0 h 7 a 8 0 h 8 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 1 h 9 a 9 : h 4 h 3 h 5 h 9 a 1 a 2 BACKTRACK P = 〈 a 1 , a 2 〉 a 9 54

  32. Phase 3: example applicant counter house label a 1 : h 4 h 5 h 3 h 2 h 1 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 a 1 1 h 1 a 2 1 h 2 a 3 : h 5 h 4 h 1 h 2 h 3 a 3 0 h 3 a 4 : h 3 h 5 h 4 a 4 0 h 4 a 5 : h 4 h 3 h 5 a 5 0 h 5 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 a 6 0 h 6 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 a 7 0 h 7 a 8 0 h 8 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 0 h 9 a 9 : h 4 h 3 h 5 h 9 a 1 a 2 P = 〈 a 1 , a 2 〉 55

  33. Phase 3: example applicant counter house label a 1 : h 4 h 5 h 3 h 2 h 1 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 a 1 2 h 1 a 2 1 h 2 a 3 : h 5 h 4 h 1 h 2 h 3 a 3 0 h 3 a 4 : h 3 h 5 h 4 a 4 0 h 4 a 5 : h 4 h 3 h 5 a 5 0 h 5 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 a 6 0 h 6 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 a 7 0 h 7 a 8 0 h 8 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 0 h 9 a 9 : h 4 h 3 h 5 h 9 a 1 a 2 EXTEND P = 〈 a 1 , a 2 , a 1 〉 56

  34. Phase 3: example applicant counter house label a 1 : h 4 h 5 h 3 h 2 h 1 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 a 1 2 h 1 a 2 1 h 2 a 3 : h 5 h 4 h 1 h 2 h 3 a 3 0 h 3 a 4 : h 3 h 5 h 4 a 4 0 h 4 a 5 : h 4 h 3 h 5 a 5 0 h 5 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 a 6 0 h 6 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 a 7 0 h 7 a 8 0 h 8 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 0 h 9 a 9 : h 4 h 3 h 5 h 9 a 1 a 2 CYCLE P = 〈 a 1 , a 2 〉 57

  35. Phase 3: example applicant counter house label a 1 : h 4 h 5 h 3 h 2 h 1 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 a 1 0 h 1 a 2 0 h 2 a 3 : h 5 h 4 h 1 h 2 h 3 a 3 0 h 3 a 4 : h 3 h 5 h 4 a 4 0 h 4 a 5 : h 4 h 3 h 5 a 5 0 h 5 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 a 6 0 h 6 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 a 7 0 h 7 a 8 0 h 8 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 0 h 9 a 9 : h 4 h 3 h 5 h 9 a 1 a 2 CYCLE P = 〈 a 1 , a 2 〉 58

  36. Phase 3: example applicant counter house label a 1 : h 4 h 5 h 3 h 2 h 1 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 a 1 0 h 1 a 2 0 h 2 a 3 : h 5 h 4 h 1 h 2 h 3 a 3 0 h 3 a 4 : h 3 h 5 h 4 a 4 0 h 4 a 5 : h 4 h 3 h 5 a 5 0 h 5 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 a 6 1 h 6 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 a 7 0 h 7 a 8 0 h 8 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 0 h 9 a 9 : h 4 h 3 h 5 h 9 a 6 P = 〈 a 6 〉 59

  37. Phase 3: example applicant counter house label a 1 : h 4 h 5 h 3 h 2 h 1 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 a 1 0 h 1 a 2 0 h 2 a 3 : h 5 h 4 h 1 h 2 h 3 a 3 0 h 3 a 4 : h 3 h 5 h 4 a 4 0 h 4 a 5 : h 4 h 3 h 5 a 5 0 h 5 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 a 6 1 h 6 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 a 7 0 h 7 a 8 1 h 8 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 0 h 9 a 9 : h 4 h 3 h 5 h 9 a 6 a 8 EXTEND P = 〈 a 6 , a 8 〉 60

  38. Phase 3: example applicant counter house label a 1 : h 4 h 5 h 3 h 2 h 1 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 a 1 0 h 1 a 2 0 h 2 a 3 : h 5 h 4 h 1 h 2 h 3 a 3 0 h 3 a 4 : h 3 h 5 h 4 a 4 0 h 4 a 5 : h 4 h 3 h 5 a 5 0 h 5 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 a 6 1 h 6 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 a 7 1 h 7 a 8 1 h 8 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 0 h 9 a 9 : h 4 h 3 h 5 h 9 a 6 a 8 EXTEND P = 〈 a 6 , a 8 , a 7 〉 a 7 61

  39. Phase 3: example applicant counter house label a 1 : h 4 h 5 h 3 h 2 h 1 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 a 1 0 h 1 a 2 0 h 2 a 3 : h 5 h 4 h 1 h 2 h 3 a 3 0 h 3 a 4 : h 3 h 5 h 4 a 4 0 h 4 a 5 : h 4 h 3 h 5 a 5 0 h 5 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 a 6 2 h 6 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 a 7 1 h 7 a 8 1 h 8 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 0 h 9 a 9 : h 4 h 3 h 5 h 9 a 6 a 8 EXTEND P = 〈 a 6 , a 8 , a 7 , a 6 〉 a 7 62

  40. Phase 3: example applicant counter house label a 1 : h 4 h 5 h 3 h 2 h 1 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 a 1 0 h 1 a 2 0 h 2 a 3 : h 5 h 4 h 1 h 2 h 3 a 3 0 h 3 a 4 : h 3 h 5 h 4 a 4 0 h 4 a 5 : h 4 h 3 h 5 a 5 0 h 5 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 a 6 2 h 6 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 a 7 1 h 7 a 8 1 h 8 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 0 h 9 a 9 : h 4 h 3 h 5 h 9 a 6 a 8 CYCLE P = 〈 a 6 , a 8 , a 7 〉 a 7 63

  41. Phase 3: example applicant counter house label a 1 : h 4 h 5 h 3 h 2 h 1 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 a 1 0 h 1 a 2 0 h 2 a 3 : h 5 h 4 h 1 h 2 h 3 a 3 0 h 3 a 4 : h 3 h 5 h 4 a 4 0 h 4 a 5 : h 4 h 3 h 5 a 5 0 h 5 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 a 6 0 h 6 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 a 7 0 h 7 a 8 0 h 8 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 0 h 9 a 9 : h 4 h 3 h 5 h 9 a 6 a 8 CYCLE P = 〈 a 6 , a 8 , a 7 〉 64

  42. Phase 3: example applicant counter house label a 1 : h 4 h 5 h 3 h 2 h 1 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 a 1 0 h 1 a 2 0 h 2 a 3 : h 5 h 4 h 1 h 2 h 3 a 3 0 h 3 a 4 : h 3 h 5 h 4 a 4 0 h 4 a 5 : h 4 h 3 h 5 a 5 0 h 5 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 a 6 0 h 6 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 a 7 0 h 7 a 8 0 h 8 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 0 h 9 a 9 : h 4 h 3 h 5 h 9 P = 〈〉 〈〉 65

  43. Phase 3 termination l Once Phase 3 terminates, matching is coalition-free l Data structures may be initialised in O( m ) time l Nested loops take O( m ) time overall l ∴ Phase 3 is O( m ) a 1 : h 4 h 5 h 3 h 2 h 1 a 2 : h 3 h 4 h 5 h 9 h 1 h 2 a 3 : h 5 h 4 h 1 h 2 h 3 a 4 : h 3 h 5 h 4 a 5 : h 4 h 3 h 5 a 6 : h 2 h 3 h 5 h 8 h 6 h 7 h 1 h 11 h 4 h 10 a 7 : h 1 h 4 h 3 h 6 h 7 h 2 h 10 h 5 h 11 a 8 : h 1 h 5 h 4 h 3 h 7 h 6 h 8 a 9 : h 4 h 3 h 5 h 9 l Theorem: given an instance of HA, a maximum Pareto optimal matching can be found in O( √ nm ) time. 66

  44. Housing markets l Each applicant owns a house initially – their initial endowment M 0 l Any matching M must be individually rational – for each applicant a , either M ( a ) =M 0 ( a ) or a prefers M to M 0 l An individually rational matching M is in the strict core if there is no other matching M' that weakly blocks with respect to the coalition S – the members of S can only improve by exchanging their own resources – some member of S prefers M' to M – no member of S prefers M to M' l Every Housing Market admits a unique strict core matching (using the TTC algorithm) – [Roth and Postlewaite, 1977] – [Shapley and Scarf, 1974] l The TTC algorithm is strategy-proof – [Roth, 1982a] 67

  45. Tutorial Outline 2.1: Pareto optimal matchings 2.2: Popular matchings 2.3: Profile-based optimal matchings 68

  46. Popular matchings l A matching M is popular if there is no matching M' such that more applicants prefer M' to M than prefer M to M' l Define the relation ← on matchings by M ← M' if more applicants prefer M to M' than prefer M' to M l A popular matching is a minimal element in the relation ← l A popular matching need not exist, e.g., a 1 : h 1 h 2 h 3 a 2 : h 1 h 2 h 3 a 3 : h 1 h 2 h 3 69

  47. Popular matchings may not exist l A matching M is popular if there is no matching M' such that more applicants prefer M' to M than prefer M to M' l Define the relation ← on matchings by M ← M' if more applicants prefer M to M' than prefer M' to M l A popular matching is a minimal element in the relation ← l A popular matching need not exist, e.g., a 1 : h 1 h 2 h 3 a 2 : h 1 h 2 h 3 a 3 : h 1 h 2 h 3 l The blue matching shown is unique up to symmetry 70

  48. Popular matchings may not exist l A matching M is popular if there is no matching M' such that more applicants prefer M' to M than prefer M to M' l Define the relation ← on matchings by M ← M' if more applicants prefer M to M' than prefer M' to M (i.e., M' is more popular than M ) l A popular matching is a minimal element in the relation ← l A popular matching need not exist, e.g., a 1 : h 1 h 2 h 3 a 2 : h 1 h 2 h 3 a 3 : h 1 h 2 h 3 l The blue matching shown is unique up to symmetry l The green matching M' satisfies M' ← M 71

  49. Popular matchings can have different sizes a 1 : h 1 h 4 a 2 : h 2 h 5 a 3 : h 3 h 4 h 6 a 4 : h 1 a 5 : h 2 a 6 : h 3 72

  50. Popular matchings can have different sizes a 1 : h 1 h 4 a 2 : h 2 h 5 a 3 : h 3 h 4 h 6 a 4 : h 1 a 5 : h 2 a 6 : h 3 l The black matching is the unique maximum matching 73

  51. Popular matchings can have different sizes a 1 : h 1 h 4 a 2 : h 2 h 5 a 3 : h 3 h 4 h 6 a 4 : h 1 a 5 : h 2 a 6 : h 3 l The black matching is the unique maximum matching l It isn ’ t popular: the green matching M' satisfies M' ← M 74

  52. Popular matchings can have different sizes a 1 : h 1 h 4 a 2 : h 2 h 5 a 3 : h 3 h 4 h 6 a 4 : h 1 a 5 : h 2 a 6 : h 3 l In fact the green matching is itself popular (size 5 ) 75

  53. Popular matchings can have different sizes a 1 : h 1 h 4 a 2 : h 2 h 5 a 3 : h 3 h 4 h 6 a 4 : h 1 a 5 : h 2 a 6 : h 3 l In fact the green matching is itself popular (size 5 ) l So is the blue matching (size 3 ) 76

  54. Popular matchings can have different sizes a 1 : h 1 h 4 a 2 : h 2 h 5 a 3 : h 3 h 4 h 6 a 4 : h 1 a 5 : h 2 a 6 : h 3 l There is no popular matching of size 6 l So the green matching is a maximum popular matching 77

  55. Summary of results l Is there a polynomial-time algorithm to determine whether a popular matching exists, and if so to find one? l Problem introduced by [Gärdenfors, 1975] in the context of two-sided preferences l Neat (and surprising) characterisation of popular matchings l Case of strict preferences: – O( n + m ) algorithm to determine whether a popular matching exists, and if so to find a largest one l Ties in the preference lists: – O( √ nm ) algorithm for the same problem l [Abraham, Irving, Kavitha, Mehlhorn, 2005] 78

  56. Graph representation l Bipartite graph G , applicant vertices A = { a 1 , . . ., a r } , house vertices H = { h 1 , . . ., h s } l Edge { a i , h j } of weight k if h j is the k th choice of a i l E k is the set of all edges of weight k l Example: a 1 h 1 a 1 : h 1 h 3 h 4 E 1 in red h 2 a 2 a 2 : h 1 h 4 h 2 E 2 in blue a 3 h 3 a 3 : h 2 h 1 h 3 E 3 in green h 4 a 4 : h 2 h 3 h 5 a 4 a 5 : h 3 h 5 h 1 h 5 a 5 79

  57. Last resorts l For each applicant a append a unique house l ( a ) to the end of his list – his last resort – This ensures every maximal matching is applicant-complete – The size of a matching is the number of applicants not matched to their last resort Example: l ( a 1 ) h 1 E 1 in red a 1 l (a 1 ) a 1 : h 1 h 3 h 4 l ( a 2 ) h 2 E 2 in blue a 2 l (a 2 ) a 2 : h 1 h 4 h 2 l ( a 3 ) h 3 a 3 l (a 3 ) a 3 : h 2 h 1 h 3 E 3 in green h 4 l ( a 4 ) l (a 4 ) a 4 : h 2 h 3 h 5 a 4 E 4 in black a 5 : h 3 h 5 h 1 l (a 5 ) h 5 l ( a 5 ) a 5 80

  58. f -houses and s -houses l For applicant a , f ( a ) denotes his first choice house l House h is an f -house if h = f ( a ) for some a l For applicant a , s ( a ) denotes the first non f -house on his list – s ( a ) is bound to exist (because of l ( a ) ) 81

  59. f -houses and s -houses l For applicant a , f ( a ) denotes his first choice house l House h is an f -house if h = f ( a ) for some a l For applicant a , s ( a ) denotes the first non f -house on his list – s ( a ) is bound to exist (because of l ( a ) ) Example: l (a 1 ) a 1 : h 1 h 3 h 4 a 2 : h 1 h 4 h 2 l (a 2 ) a 3 : h 2 h 1 h 3 l ( a 3 ) l ( a 4 ) a 4 : h 2 h 3 h 5 l ( a 5 ) a 5 : h 3 h 5 h 1 – f -houses in green – f -houses are h 1 , h 2 and h 3 82

  60. f -houses and s -houses l For applicant a , f ( a ) denotes his first choice house l House h is an f -house if h = f ( a ) for some a l For applicant a , s ( a ) denotes the first non f -house on his list – s ( a ) is bound to exist (because of l ( a ) ) Example: l (a 1 ) a 1 : h 1 h 3 h 4 a 2 : h 1 h 4 h 2 l (a 2 ) a 3 : h 2 h 1 h 3 l ( a 3 ) l ( a 4 ) a 4 : h 2 h 3 h 5 l ( a 5 ) a 5 : h 3 h 5 h 1 – f -houses in green – f -houses are h 1 , h 2 and h 3 – s -houses in blue – s -houses are l ( a 3 ) , h 4 and h 5 83

  61. Lemmas and Theorem l Lemma 1 : If M is a popular matching, and h is an f -house then M ( h ) = a for some a such that h = f ( a ) . l Lemma 2 : If M is a popular matching, then M ( a ) cannot lie between f ( a ) and s ( a ) on a ’ s preference list. l Lemma 3 : If M is a popular matching, then M ( a ) is never below s ( a ) on a ’ s preference list. l Theorem 1 : M is a popular matching if and only if (i) every f -house is matched in M , and (ii) for each applicant a , M ( a ) = f ( a ) or M ( a ) = s ( a ) . 84

  62. The reduced graph G' l For each applicant vertex a i , delete all incident edges except those to f ( a i ) and s ( a i ) Example l ( a 1 ) h 1 a 1 l (a 1 ) a 1 : h 1 h 3 h 4 l ( a 2 ) h 2 a 2 l (a 2 ) a 2 : h 1 h 4 h 2 l ( a 3 ) h 3 a 3 a 3 : h 2 h 1 h 3 l (a 3 ) h 4 l ( a 4 ) a 4 : h 2 h 3 h 5 l (a 4 ) a 4 a 5 : h 3 h 5 h 1 l (a 5 ) l ( a 5 ) h 5 a 5 f ( a i ) in green ( a i , f ( a i )) in green ( a i , s ( a i )) in blue s ( a i ) in blue 85

  63. The reduced graph G' l Theorem 2 : Matching M is popular if and only if (i) every f -house is matched in M ; and (ii) M is an applicant-complete matching in the reduced graph G' Example l ( a 1 ) h 1 a 1 l (a 1 ) a 1 : h 1 h 3 h 4 l ( a 2 ) h 2 a 2 l (a 2 ) a 2 : h 1 h 4 h 2 l ( a 3 ) h 3 a 3 a 3 : h 2 h 1 h 3 l (a 3 ) h 4 l ( a 4 ) a 4 : h 2 h 3 h 5 l (a 4 ) a 4 l ( a 5 ) l (a 5 ) h 5 a 5 : h 3 h 5 h 1 a 5 86

  64. The reduced graph G' l Theorem 2 : Matching M is popular if and only if (i) every f -house is matched in M ; and (ii) M is an applicant-complete matching in the reduced graph G' Example l ( a 1 ) h 1 a 1 l (a 1 ) a 1 : h 1 h 3 h 4 l ( a 2 ) h 2 a 2 l (a 2 ) a 2 : h 1 h 4 h 2 l ( a 3 ) h 3 a 3 a 3 : h 2 h 1 h 3 l (a 3 ) h 4 l ( a 4 ) a 4 : h 2 h 3 h 5 l (a 4 ) a 4 l ( a 5 ) l (a 5 ) h 5 a 5 : h 3 h 5 h 1 a 5 87

  65. Popular matching algorithm form G = (V = A ∪ H, E), the graph of the instance; form G', the reduced graph of G; if G' admits an applicant-complete matching M (*) for each f-house h unmatched in M a = any applicant in f(h); promote a to h in M; else no popular matching exists; l Complexity: – all steps except (*) are clearly O( m + n ) • O( m ) if n = O( m ) – standard matching algorithm for (*) no better than O( n 3/2 ) 88

  66. Finding an applicant-complete matching in G ' M = ∅ ; while some house h has degree 1 a = unique applicant adjacent to h; M = M ∪ {(a,h)}; G' = G' – {a, h}; // remove a and h from G' while some house h has degree 0 G' = G' – {h}; // every surviving house has degree at least 2 // every surviving applicant also has degree 2 if |surviving houses| < |surviving applicants| no applicant-complete matching exists; else // G' is a family of disjoint cycles return M ∪ any maximum matching of G'; l all steps are O( n + m ) 89

  67. Example execution l (a 1 ) l ( a 1 ) a 1 : h 1 h 3 h 4 h 1 a 1 l (a 2 ) a 2 : h 1 h 4 h 2 l ( a 2 ) h 2 a 2 l (a 3 ) a 3 : h 2 h 1 h 3 l ( a 3 ) h 3 a 3 l (a 4 ) a 4 : h 2 h 3 h 5 h 4 l ( a 4 ) l (a 5 ) a 4 a 5 : h 3 h 5 h 1 l ( a 5 ) h 5 a 5 l M = ∅ – house l ( a 3 ) has degree 1 ; add ( a 3 , l ( a 3 )) to M – remove a 3 and l ( a 3 ) from G' 90

  68. Example execution l (a 1 ) l ( a 1 ) a 1 : h 1 h 3 h 4 h 1 a 1 l (a 2 ) a 2 : h 1 h 4 h 2 l ( a 2 ) h 2 a 2 l (a 3 ) a 3 : h 2 h 1 h 3 h 3 l (a 4 ) a 4 : h 2 h 3 h 5 h 4 l ( a 4 ) l (a 5 ) a 4 a 5 : h 3 h 5 h 1 l ( a 5 ) h 5 a 5 l M = {( a 3 , l ( a 3 ))} – house h 2 has degree 1 ; add ( a 4 , h 2 ) to M – remove a 4 and h 2 from G' 91

  69. Example execution l (a 1 ) l ( a 1 ) a 1 : h 1 h 3 h 4 h 1 a 1 l (a 2 ) a 2 : h 1 h 4 h 2 l ( a 2 ) a 2 l (a 3 ) a 3 : h 2 h 1 h 3 h 3 l (a 4 ) a 4 : h 2 h 3 h 5 h 4 l ( a 4 ) l (a 5 ) a 5 : h 3 h 5 h 1 l ( a 5 ) h 5 a 5 l M = {( a 3 , l ( a 3 )), ( a 4 , h 2 )} – house h 5 has degree 1 ; add ( a 5 , h 5 ) to M – remove a 5 and h 5 from G' 92

  70. Example execution l (a 1 ) l ( a 1 ) a 1 : h 1 h 3 h 4 h 1 a 1 l (a 2 ) a 2 : h 1 h 4 h 2 l ( a 2 ) a 2 l (a 3 ) a 3 : h 2 h 1 h 3 h 3 l (a 4 ) a 4 : h 2 h 3 h 5 h 4 l ( a 4 ) l (a 5 ) a 5 : h 3 h 5 h 1 l ( a 5 ) l M = {( a 3 , l ( a 3 )), ( a 4 , h 2 ), ( a 5 , h 5 )} – remove degree zero houses h 3 , l ( a 1 ) , l ( a 2 ) , l ( a 4 ) , l ( a 5 ) 93

  71. Example execution l (a 1 ) a 1 : h 1 h 3 h 4 h 1 a 1 l (a 2 ) a 2 : h 1 h 4 h 2 a 2 l (a 3 ) a 3 : h 2 h 1 h 3 l (a 4 ) a 4 : h 2 h 3 h 5 h 4 l (a 5 ) a 5 : h 3 h 5 h 1 l M = {( a 3 , l ( a 3 )), ( a 4 , h 2 ), ( a 5 , h 5 )} – no. of surviving houses = no. of surviving applicants – G' consists of just one cycle; – traverse the cycle adding alternate edges to M ; 94

  72. Example execution l (a 1 ) a 1 : h 1 h 3 h 4 h 1 a 1 l (a 2 ) a 2 : h 1 h 4 h 2 a 2 l (a 3 ) a 3 : h 2 h 1 h 3 l (a 4 ) a 4 : h 2 h 3 h 5 h 4 l (a 5 ) a 5 : h 3 h 5 h 1 l M = {( a 1 , h 1 ), ( a 2 , h 4 ), ( a 3 , l ( a 3 )), ( a 4 , h 2 ), ( a 5 , h 5 )} 95

  73. Example execution l (a 1 ) l ( a 1 ) a 1 : h 1 h 3 h 4 h 1 a 1 l (a 2 ) a 2 : h 1 h 4 h 2 l ( a 2 ) h 2 a 2 l (a 3 ) a 3 : h 2 h 1 h 3 l ( a 3 ) h 3 a 3 l (a 4 ) a 4 : h 2 h 3 h 5 h 4 l ( a 4 ) l (a 5 ) a 4 a 5 : h 3 h 5 h 1 l ( a 5 ) h 5 a 5 l M = {( a 1 , h 1 ), ( a 2 , h 4 ), ( a 3 , l ( a 3 )), ( a 4 , h 2 ), ( a 5 , h 5 )} – h 3 is an unmatched f -house in M ; – promote a 5 to h 3 96

  74. Example execution l (a 1 ) l ( a 1 ) a 1 : h 1 h 3 h 4 h 1 a 1 l (a 2 ) a 2 : h 1 h 4 h 2 l ( a 2 ) h 2 a 2 l (a 3 ) a 3 : h 2 h 1 h 3 l ( a 3 ) h 3 a 3 l (a 4 ) a 4 : h 2 h 3 h 5 h 4 l ( a 4 ) l (a 5 ) a 4 a 5 : h 3 h 5 h 1 l ( a 5 ) h 5 a 5 l M = {( a 1 , h 1 ), ( a 2 , h 4 ), ( a 3 , l ( a 3 )), ( a 4 , h 2 ), ( a 5 , h 3 )} l Matching M with last resort edges removed is now popular 97

  75. Example execution l (a 1 ) l ( a 1 ) a 1 : h 1 h 3 h 4 h 1 a 1 l (a 2 ) a 2 : h 1 h 4 h 2 l ( a 2 ) h 2 a 2 l (a 3 ) a 3 : h 2 h 1 h 3 l ( a 3 ) h 3 a 3 l (a 4 ) a 4 : h 2 h 3 h 5 h 4 l ( a 4 ) l (a 5 ) a 4 a 5 : h 3 h 5 h 1 l ( a 5 ) h 5 a 5 l M = {( a 1 , h 1 ), ( a 2 , h 4 ), ( a 4 , h 2 ), ( a 5 , h 3 )} l Matching M is now popular l Theorem: There is an O( n+m ) algorithm that finds a popular matching or reports that none exists, given an instance of HA. l Straightforward extension to find a maximum popular matching l Non-trivial extension to the case of ties in the preference lists ( O( √ nm ) time) – [Abraham, Irving, Kavitha and Mehlhorn, 2005] 98

  76. Tutorial Outline 2.1: Pareto optimal matchings 2.2: Popular matchings 2.3: Profile-based optimal matchings 99

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend