1 / 67

Pareto Optimality in House Allocation Problems

David Abraham Computer Science Department Carnegie-Mellon University. Pareto Optimality in House Allocation Problems. Katar í na Cechl á rov á Institute of Mathematics PJ Saf á rik University in Ko š ice. David Manlove Department of Computing Science University of Glasgow. Kurt Mehlhorn

gavivi
Download Presentation

Pareto Optimality in House Allocation Problems

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. David Abraham Computer Science Department Carnegie-Mellon University Pareto Optimality in House Allocation Problems Katarína Cechlárová Institute of Mathematics PJ Safárik University in Košice David Manlove Department of Computing Science University of Glasgow Kurt Mehlhorn Max-Planck-Institut fűr Informatik Saarbrűcken Supported by Royal Society of Edinburgh/Scottish Executive Personal Research Fellowship and Engineering and Physical Sciences Research Council grant GR/R84597/01

  2. House Allocation problem (HA)  • Set of agents A={a1, a2, …, ar} • Set of houses H={h1, h2, …, hs} • Each agent ai has an acceptable set of houses Ai H • ai ranks Ai in strict order of preference • Example: • a1 : h2 h1 • a2 :h3h4 h2 • a3 : h4h3 • a4 : h1h4 • Let n=r+s and let m=total length of preference lists a1 finds h1 and h2 acceptable a3 prefers h4 to h3

  3. Applications • House allocation context: • Large-scale residence exchange in Chinese housing markets • Yuan, 1996 • Allocation of campus housing in American universities, such as Carnegie-Mellon, Rochester and Stanford • Abdulkadiroğlu and Sönmez, 1998 • Other matching problems: • US Naval Academy: students to naval officer positions • Roth and Sotomayor, 1990 • Scottish Executive Teacher Induction Scheme • Assigning students to projects

  4. The underlying graph • Weighted bipartite graph G=(V,E) • Vertex set V=AH • Edge set:{ai,hj}E if and only if ai findshjacceptable • Weight of edge {ai,hj} is rank of hjinai’spreference list • Example • a1 : h2 h1 • a2 :h3h4 h2 • a3 : h4h3 • a4 : h1h4 a1  h1 2 1 a2 h2  3 1 a3 2 h3  2 1 1 a4 h4  2

  5. Matchings in the underlying graph • A matchingM in Gis a subset of E such that each vertex of G is incident to at most one edge of M • Each agent is assigned to at most one house • Each house is assigned at most one agent • An agent is only ever assigned to an acceptable house • Example • a1 : h2 h1 • a2 :h3h4h2 • a3 : h4h3 • a4 : h1h4 a1  h1 2 M(a1)=h1 1 a2 h2  3 1 a3 2 h3  2 1 1 M={(a1, h1), (a2, h4), (a3, h3)} a4 h4  2

  6. Matchings in the underlying graph • A matchingM in Gis a subset of E such that each vertex of G is incident to at most one edge of M • Each agent is assigned to at most one house • Each house is assigned at most one agent • An agent is only ever assigned to an acceptable house • Example • a1 : h2h1 • a2 : h3h4 h2 • a3 : h4h3 • a4 : h1h4 a1  h1 2 1 a2 h2  3 1 a3 2 h3  2 1 1 M={(a1, h2), (a2, h3), (a3, h4), (a4, h1)} a4 h4  2

  7. Pareto optimal matchings • A matchingM1 is Pareto optimal if there is no matching M2 such that: • Some agent is better off in M2 than in M1 • No agent is worse off in M2 than in M1 • Example • M1 is not Pareto optimal since a1 and a2 could swap houses – each would be better off • M2 is Pareto optimal • a1 : h2 h1 • a2 :h1h2 • a3 : h3 • a1 : h2h1 • a2 : h1h2 • a3 : h3 M1 M2

  8. Testing for Pareto optimality • A matchingM is maximal if there is no agent a and house h, each unmatched in M, such that a finds h acceptable • A matching M is trade-in-free if there is no matched agent a and unmatched house h such that a prefers h to M(a) • A matching M is coalition-free if there is no coalition, i.e. a sequence of matched agents a0 ,a1 ,…,ar-1 such that ai prefers M(ai) toM(ai+1) (0ir-1) • a1 : h2 h1 • a2 :h3h4 h2 • a3 : h4h3 • a4 : h1h4 • Proposition: M is Pareto optimal if and only if M is maximal, trade-in-free and coalition-free Mis not maximal due to a3 and h3

  9. Testing for Pareto optimality • A matchingM is maximal if there is no agent a and house h, each unmatched in M, such that a finds h acceptable • A matching M is trade-in-free if there is no matched agent a and unmatched house h such that a prefers h to M(a) • A matching M is coalition-free if there is no coalition, i.e. a sequence of matched agents a0 ,a1 ,…,ar-1 such that ai prefers M(ai) toM(ai+1) (0ir-1) • a1 : h2 h1 • a2 :h3h4 h2 • a3 : h4h3 • a4 : h1h4 • Proposition: M is Pareto optimal if and only if M is maximal, trade-in-free and coalition-free Mis not trade-in-free due to a2 and h3

  10. Testing for Pareto optimality • A matchingM is maximal if there is no agent a and house h, each unmatched in M, such that a finds h acceptable • A matching M is trade-in-free if there is no matched agent a and unmatched house h such that a prefers h to M(a) • A matching M is coalition-free if there is no coalition, i.e. a sequence of matched agents a0 ,a1 ,…,ar-1 such that ai prefers M(ai+1) toM(ai) (0ir-1) • a1 : h2 h1 • a2 :h3h4 h2 • a3 : h4h3 • a4 : h1h4 • Proposition: M is Pareto optimal if and only if M is maximal, trade-in-free and coalition-free a1 h1 Mis not coalition-free due to a1, a2, a4 a2 h2 a3 h3 a4 h4

  11. Testing for Pareto optimality • A matching M is maximal if there is no agent a and house h, each unmatched in M, such that a finds h acceptable • A matching M is trade-in-free if there is no matched agent a and unmatched house h such that a prefers h to M(a) • A matching M is coalition-free if there is no coalition, i.e. a sequence of matched agents a0 ,a1 ,…,ar-1 such that ai prefers M(ai+1) toM(ai) (0  i  r-1) • Lemma:M is Pareto optimal if and only if M is maximal, trade-in-free and coalition-free • Theorem: we may check whether a given matching M is Pareto optimal in O(m) time

  12. Finding a Pareto optimal matching • Simple greedy algorithm, referred to as the serial dictatorship mechanism by economists for each agent a in turn if a has an unmatched house on his list match a to the most-preferred such house; else report a as unmatched; • Theorem: The serial dictatorship mechanism constructs a Pareto optimal matching in O(m) time • Abdulkadiroğlu and Sönmez, 1998 • Example • a1 : h1h2h3 • a2 : h1h2 • a3 : h1h2 M1={(a1,h1), (a2,h2)} • a1 : h1 h2h3 • a2 : h1h2 • a3 : h1h2 M2={(a1,h3), (a2,h2), (a3,h1)}

  13. Related work • Rank maximal matchings • Matching M is rank maximal if, in M • Maximum number of agents obtain their first-choice house; • Subject to (1), maximum number of agents obtain their second-choice house; etc. • Irving, Kavitha, Mehlhorn, Michail, Paluch, SODA 04 • A rank maximal matching is Pareto optimal, but need not be of maximum size • Popular matchings • Matching M is popular if there is no other matching M’such that: • more agents prefer M’ to M than prefer M to M’ • Abraham, Irving, Kavitha, Mehlhorn, SODA 05 • A popular matchingis Pareto optimal, but need not exist • Maximum cardinality minimum weight matchings • Such a matching M may be found in G in O(nmlog n) time • Gabow and Tarjan, 1989 • M is a maximum Pareto optimal matching

  14. Faster algorithm for finding a maximum Pareto optimal matching • Three-phase algorithm with O(nm) overall complexity • Phase 1 – O(nm) time • Find a maximum matching in G • Classical O(nm) augmenting path algorithm • Hopcroft and Karp, 1973 • Phase 2 – O(m) time • Enforce trade-in-free property • Phase 3 – O(m) time • Enforce coalition-free property • Extension of Gale’s Top-Trading Cycles (TTC) algorithm • Shapley and Scarf, 1974

  15. Phase 1 • a1 : h4h5h3h2h1 • a2 : h3h4h5h9h1h2 • a3 : h5h4h1h2h3 • a4 : h3h5h4 • a5 : h4h3h5 • a6 : h2h3h5h8h6h7h1h11h4h10 • a7 : h1h4h3h6h7h2h10h5h11 • a8 : h1h5h4h3h7h6h8 • a9 : h4 h3h5h9 • Maximum matching M in G has size 8 • M must be maximal • No guarantee that M is trade-in-free or coalition-free

  16. Phase 1 • a1 : h4h5h3h2h1 • a2 : h3h4h5h9h1h2 • a3 : h5h4h1h2h3 • a4 : h3h5h4 • a5 : h4h3h5 • a6 : h2h3h5h8h6h7h1h11h4h10 • a7 : h1h4h3h6h7h2h10h5h11 • a8 : h1h5h4h3h7h6h8 • a9 : h4 h3h5h9 • Maximum matching M in G has size 9 • M must be maximal • No guarantee that M is trade-in-free or coalition-free

  17. Phase 1 Mnot coalition-free • a1 : h4h5h3h2h1 • a2 : h3h4h5h9h1h2 • a3 : h5h4h1h2h3 • a4 : h3h5h4 • a5 : h4h3h5 • a6 : h2h3h5h8h6h7h1h11h4h10 • a7 : h1h4h3h6h7h2h10h5h11 • a8 : h1h5h4h3h7h6h8 • a9 : h4 h3h5h9 • Maximum matching M in G has size 9 • M must be maximal • No guarantee that M is trade-in-free or coalition-free Mnot trade-in-free

  18. Phase 2 outline • Repeatedly search for a matched agent a and an unmatched house h such that a prefers h to h’=M(a) • Promote a to h • h’is now unmatched • Example • a1 : h4h5h3h2h1 • a2 : h3h4h5h9h1h2 • a3 : h5h4h1h2h3 • a4 : h3h5h4 • a5 : h4h3h5 • a6 : h2h3h5h8h6h7h1h11h4h10 • a7 : h1h4h3h6h7h2h10h5h11 • a8 : h1h5h4h3h7h6h8 • a9 : h4 h3h5h9

  19. Phase 2 outline • Repeatedly search for a matched agent a and an unmatched house h such that a prefers h to h’=M(a) • Promote a to h • h’is now unmatched • Example • a1 : h4h5h3h2h1 • a2 : h3h4h5h9h1h2 • a3 : h5h4h1h2h3 • a4 : h3h5h4 • a5 : h4h3h5 • a6 : h2h3h5h8h6h7h1h11h4h10 • a7 : h1h4h3h6h7h2h10h5h11 • a8 : h1h5h4h3h7h6h8 • a9 : h4 h3h5h9

  20. Phase 2 outline • Repeatedly search for a matched agent a and an unmatched house h such that a prefers h to h’=M(a) • Promote a to h • h’is now unmatched • Example • a1 : h4h5h3h2h1 • a2 : h3h4h5h9h1h2 • a3 : h5h4h1h2h3 • a4 : h3h5h4 • a5 : h4h3h5 • a6 : h2h3h5h8h6h7h1h11h4h10 • a7 : h1h4h3h6h7h2h10h5h11 • a8 : h1h5h4h3h7h6h8 • a9 : h4 h3h5h9

  21. Phase 2 outline • Repeatedly search for a matched agent a and an unmatched house h such that a prefers h to h’=M(a) • Promote a to h • h’is now unmatched • Example • a1 : h4h5h3h2h1 • a2 : h3h4h5h9h1h2 • a3 : h5h4h1h2h3 • a4 : h3h5h4 • a5 : h4h3h5 • a6 : h2h3h5h8h6h7h1h11h4h10 • a7 : h1h4h3h6h7h2h10h5h11 • a8 : h1h5h4h3h7h6h8 • a9 : h4 h3h5h9

  22. Phase 2 termination • Once Phase 2 terminates, matching is trade-in-free • With suitable data structures, Phase 2 is O(m) • Coalitions may remain… • a1 : h4h5h3h2h1 • a2 : h3h4h5h9h1h2 • a3 : h5h4h1h2h3 • a4 : h3h5h4 • a5 : h4h3h5 • a6 : h2h3h5h8h6h7h1h11h4h10 • a7 : h1h4h3h6h7h2h10h5h11 • a8 : h1h5h4h3h7h6h8 • a9 : h4 h3h5h9

  23. Phase 3 outline • Build a path P of agents (represented by a stack) • Each house is initially unlabelled • Each agent a has a pointer p(a) pointing to M(a) or the first unlabelled house on a’s preference list (whichever comes first) • Keep a counter c(a) for each agent a (initially c(a)=0) • This represents the number of times a appears on the stack • Outer loop iterates over each matched agent a such that p(a)M(a) • Initialise P to contain agent a • Inner loop iterates while P is nonempty • Pop an agent 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’’ wherep(a’)=M(a’’)to the path (EXTEND) • Push a’ and a’’ onto the stack • Increment c(a’’)

  24. Phase 3 termination • Once Phase 3 terminates, matching is coalition-free • a1 : h4h5h3h2h1 • a2 : h3h4h5h9h1h2 • a3 : h5h4h1h2h3 • a4 : h3h5h4 • a5: h4h3h5 • a6 : h2h3h5h8h6h7h1h11h4h10 • a7 : h1h4h3h6h7h2h10h5h11 • a8 : h1h5h4h3h7h6h8 • a9 : h4 h3h5h9 • Phase 3 is O(m) • Theorem:A maximum Pareto optimal matching can be found in O(nm) time

  25. Minimum Pareto optimal matchings • Theorem: Problem of finding a minimum Pareto optimal matching is NP-hard • Result holds even if all preference lists have length 3 • Reduction from Minimum Maximal Matching • Problem is approximable within a factor of 2 • Follows since any Pareto optimal matching is a maximal matching in the underlying graph G • Any two maximal matchings differ in size by at most a factor of 2 • Korte and Hausmann, 1978

  26. Conclusions Open problems - finding a maximum Pareto optimal matching • Ties in the preference lists • Solvable in O(nmlog n) time • Solvable in O(nm) time? • One-many case (houses may have capacity >1) • Non-bipartite case • Solvable in O((n(m, n))mlog3/2 n) time • D.J. Abraham, D.F. Manlove Pareto optimality in the Roommates problem Technical Report TR-2004-182 of the Computing Science Department of Glasgow University • Solvable in O(nm) time? Further details • D.J. Abraham, K. Cechlárová, D.F. Manlove and K. Mehlhorn, Pareto Optimality in House Allocation Problems, In Proceedings of ISAAC 2004, vol 3341 of Lecture Notes in Computer Science

  27. The envy graph • Straightforward to check a given matching M for the maximality and trade-in-free properties in O(m) time • To check for the existence of a coalition: • Form the envy graph of M, denoted by G(M) • Vertex for each matched agent • Edge from ai to aj if and only if ai prefers M(aj) toM(ai) • Example • a1 : h2 h1 • a2 :h3h4 h2 • a3 : h4h3 • a4 : h1h4 • M admits a coalition if and only if G(M) has a directed cycle • Proposition: we may check whether a given matching M is Pareto optimal in O(m) time a2 a1 a4

  28. Phase 2 outline • For each house h, maintain a list Lh , initially containing those pairs (a,r) such that: • a is a matched agent who prefers h to M(a) • r is the rank of h in a’s list • Maintain a stack S of unmatched houses h whose list Lh is nonempty • Each matched agent a maintains a pointer curra to the rank of M(a) • Example • a1 : h4h5h3h2h1 • a2 : h3h4h5h9h1h2 • a3 : h5h4h1h2h3 • a4 : h3h5h4 • a5 : h4h3h5 • a6 : h2h3h5h8h6h7h1h11h4h10 • a7 : h1h4h3h6h7h2h10h5h11 • a8 : h1h5h4h3h7h6h8 • a9 : h4 h3h5h9 Lh6=(a6 , 5), (a7 , 4), (a8 , 6) Lh7=(a6 , 6), (a7 , 5), (a8 , 5) Lh8=(a6 , 4) Lh10=(a7 , 7) Lh11=(a6 , 8) S=h6 , h7 curra6=10 curra7=9

  29. Phase 2 outline while S is nonempty pop a house h from S; remove the first pair (a,r) from the head of Lh; if r < curra// a prefers h to M(a) let h’= M(a); remove (a,h’) from M and add (a,h) to M; curra := h; h := h’; push h onto the stack if Lh is nonempty; • a1 : h4h5h3h2h1 • a2 : h3h4h5h9h1h2 • a3 : h5h4h1h2h3 • a4 : h3h5h4 • a5 : h4h3h5 • a6 : h2h3h5h8h6h7h1h11h4h10 • a7 : h1h4h3h6h7h2h10h5h11 • a8 : h1h5h4h3h7h6h8 • a9 : h4 h3h5h9 Lh6=(a6 , 5), (a7 , 4), (a8 , 6) Lh7=(a6 , 6), (a7 , 5), (a8 , 5) Lh8=(a6 , 4) Lh10=(a7 , 7) Lh11=(a6 , 8) S=h6 , h7 curra6=10 curra7=9

  30. Phase 2 example while S is nonempty pop a house h from S; remove the first pair (a,r) from the head of Lh; if r < curra// a prefers h to M(a) let h’= M(a); remove (a,h’) from M and add (a,h) to M; curra := h; h := h’; push h onto the stack if Lh is nonempty; • a1 : h4h5h3h2h1 • a2 : h3h4h5h9h1h2 • a3 : h5h4h1h2h3 • a4 : h3h5h4 • a5 : h4h3h5 • a6 : h2h3h5h8h6h7h1h11h4h10 • a7 : h1h4h3h6h7h2h10h5h11 • a8 : h1h5h4h3h7h6h8 • a9 : h4 h3h5h9 Lh6=(a6 , 5), (a7 , 4), (a8 , 6) Lh7=(a6 , 6), (a7 , 5), (a8 , 5) Lh8=(a6 , 4) Lh10=(a7 , 7) Lh11=(a6 , 8) S=h6 , h7 curra6=10 curra7=9

  31. Phase 2 example while S is nonempty pop a house h from S; remove the first pair (a,r) from the head of Lh; if r < curra// a prefers h to M(a) let h’= M(a); remove (a,h’) from M and add (a,h) to M; curra := h; h := h’; push h onto the stack if Lh is nonempty; • a1 : h4h5h3h2h1 • a2 : h3h4h5h9h1h2 • a3 : h5h4h1h2h3 • a4 : h3h5h4 • a5 : h4h3h5 • a6 : h2h3h5h8h6h7h1h11h4h10 • a7 : h1h4h3h6h7h2h10h5h11 • a8 : h1h5h4h3h7h6h8 • a9 : h4 h3h5h9 Lh6=(a6 , 5), (a7 , 4), (a8 , 6) Lh7=(a7 , 5), (a8 , 5) Lh8=(a6 , 4) Lh10=(a7 , 7) Lh11=(a6 , 8) S=h6 , h10 curra6=6 curra7=9

  32. Phase 2 example while S is nonempty pop a house h from S; remove the first pair (a,r) from the head of Lh; if r < curra// a prefers h to M(a) let h’= M(a); remove (a,h’) from M and add (a,h) to M; curra := h; h := h’; push h onto the stack if Lh is nonempty; • a1 : h4h5h3h2h1 • a2 : h3h4h5h9h1h2 • a3 : h5h4h1h2h3 • a4 : h3h5h4 • a5 : h4h3h5 • a6 : h2h3h5h8h6h7h1h11h4h10 • a7 : h1h4h3h6h7h2h10h5h11 • a8 : h1h5h4h3h7h6h8 • a9 : h4 h3h5h9 Lh6=(a6 , 5), (a7 , 4), (a8 , 6) Lh7=(a7 , 5), (a8 , 5) Lh8=(a6 , 4) Lh10=(a7 , 7) Lh11=(a6 , 8) S=h6 , h10 curra6=6 curra7=9

  33. Phase 2 example while S is nonempty pop a house h from S; remove the first pair (a,r) from the head of Lh; if r < curra// a prefers h to M(a) let h’= M(a); remove (a,h’) from M and add (a,h) to M; curra := h; h := h’; push h onto the stack if Lh is nonempty; • a1 : h4h5h3h2h1 • a2 : h3h4h5h9h1h2 • a3 : h5h4h1h2h3 • a4 : h3h5h4 • a5 : h4h3h5 • a6 : h2h3h5h8h6h7h1h11h4h10 • a7 : h1h4h3h6h7h2h10h5h11 • a8 : h1h5h4h3h7h6h8 • a9 : h4 h3h5h9 Lh6=(a6 , 5), (a7 , 4), (a8 , 6) Lh7=(a7 , 5), (a8 , 5) Lh8=(a6 , 4) Lh10= Lh11=(a6 , 8) S=h6 , h11 curra6=6 curra7=7

  34. Phase 2 example while S is nonempty pop a house h from S; remove the first pair (a,r) from the head of Lh; if r < curra// a prefers h to M(a) let h’= M(a); remove (a,h’) from M and add (a,h) to M; curra := h; h := h’; push h onto the stack if Lh is nonempty; • a1 : h4h5h3h2h1 • a2 : h3h4h5h9h1h2 • a3 : h5h4h1h2h3 • a4 : h3h5h4 • a5 : h4h3h5 • a6 : h2h3h5h8h6h7h1h11h4h10 • a7 : h1h4h3h6h7h2h10h5h11 • a8 : h1h5h4h3h7h6h8 • a9 : h4 h3h5h9 Lh6=(a6 , 5), (a7 , 4), (a8 , 6) Lh7=(a7 , 5), (a8 , 5) Lh8=(a6 , 4) Lh10= Lh11=(a6 , 8) S=h6 , h11 curra6=6 curra7=7

  35. Phase 2 example while S is nonempty pop a house h from S; remove the first pair (a,r) from the head of Lh; if r < curra// a prefers h to M(a) let h’= M(a); remove (a,h’) from M and add (a,h) to M; curra := h; h := h’; push h onto the stack if Lh is nonempty; • a1 : h4h5h3h2h1 • a2 : h3h4h5h9h1h2 • a3 : h5h4h1h2h3 • a4 : h3h5h4 • a5 : h4h3h5 • a6 : h2h3h5h8h6h7h1h11h4h10 • a7 : h1h4h3h6h7h2h10h5h11 • a8 : h1h5h4h3h7h6h8 • a9 : h4 h3h5h9 Lh6=(a6 , 5), (a7 , 4), (a8 , 6) Lh7=(a7 , 5), (a8 , 5) Lh8=(a6 , 4) Lh10= Lh11= S=h6 curra6=6 curra7=7

  36. Phase 2 example while S is nonempty pop a house h from S; remove the first pair (a,r) from the head of Lh; if r < curra// a prefers h to M(a) let h’= M(a); remove (a,h’) from M and add (a,h) to M; curra := h; h := h’; push h onto the stack if Lh is nonempty; • a1 : h4h5h3h2h1 • a2 : h3h4h5h9h1h2 • a3 : h5h4h1h2h3 • a4 : h3h5h4 • a5 : h4h3h5 • a6 : h2h3h5h8h6h7h1h11h4h10 • a7 : h1h4h3h6h7h2h10h5h11 • a8 : h1h5h4h3h7h6h8 • a9 : h4 h3h5h9 Lh6=(a7 , 4), (a8 , 6) Lh7=(a7 , 5), (a8 , 5) Lh8=(a6 , 4) Lh10= Lh11= S=h7 curra6=5 curra7=7

  37. Phase 2 example while S is nonempty pop a house h from S; remove the first pair (a,r) from the head of Lh; if r < curra// a prefers h to M(a) let h’= M(a); remove (a,h’) from M and add (a,h) to M; curra := h; h := h’; push h onto the stack if Lh is nonempty; • a1 : h4h5h3h2h1 • a2 : h3h4h5h9h1h2 • a3 : h5h4h1h2h3 • a4 : h3h5h4 • a5 : h4h3h5 • a6 : h2h3h5h8h6h7h1h11h4h10 • a7 : h1h4h3h6h7h2h10h5h11 • a8 : h1h5h4h3h7h6h8 • a9 : h4 h3h5h9 Lh6=(a7 , 4), (a8 , 6) Lh7=(a7 , 5), (a8 , 5) Lh8=(a6 , 4) Lh10= Lh11= S=h7 curra6=5 curra7=7

  38. Phase 2 example while S is nonempty pop a house h from S; remove the first pair (a,r) from the head of Lh; if r < curra// a prefers h to M(a) let h’= M(a); remove (a,h’) from M and add (a,h) to M; curra := h; h := h’; push h onto the stack if Lh is nonempty; • a1 : h4h5h3h2h1 • a2 : h3h4h5h9h1h2 • a3 : h5h4h1h2h3 • a4 : h3h5h4 • a5 : h4h3h5 • a6 : h2h3h5h8h6h7h1h11h4h10 • a7 : h1h4h3h6h7h2h10h5h11 • a8 : h1h5h4h3h7h6h8 • a9 : h4 h3h5h9 Lh6=(a7 , 4), (a8 , 6) Lh7=(a8 , 5) Lh8=(a6 , 4) Lh10= Lh11= S= curra6=5 curra7=5

  39. Phase 2 example while S is nonempty pop a house h from S; remove the first pair (a,r) from the head of Lh; if r < curra// a prefers h to M(a) let h’= M(a); remove (a,h’) from M and add (a,h) to M; curra := h; h := h’; push h onto the stack if Lh is nonempty; • a1 : h4h5h3h2h1 • a2 : h3h4h5h9h1h2 • a3 : h5h4h1h2h3 • a4 : h3h5h4 • a5 : h4h3h5 • a6 : h2h3h5h8h6h7h1h11h4h10 • a7 : h1h4h3h6h7h2h10h5h11 • a8 : h1h5h4h3h7h6h8 • a9 : h4 h3h5h9 Lh6=(a7 , 4), (a8 , 6) Lh7=(a8 , 5) Lh8=(a6 , 4) Lh10= Lh11= S= curra6=5 curra7=5

  40. Phase 2 termination • a1 : h4h5h3h2h1 • a2 : h3h4h5h9h1h2 • a3 : h5h4h1h2h3 • a4 : h3h5h4 • a5 : h4h3h5 • a6 : h2h3h5h8h6h7h1h11h4h10 • a7 : h1h4h3h6h7h2h10h5h11 • a8 : h1h5h4h3h7h6h8 • a9 : h4 h3h5h9

  41. Phase 2 termination • Once Phase 2 terminates, matching is trade-in-free • Phase 2 is O(m) • Coalitions may remain… • a1 : h4h5h3h2h1 • a2 : h3h4h5h9h1h2 • a3 : h5h4h1h2h3 • a4 : h3h5h4 • a5 : h4h3h5 • a6 : h2h3h5h8h6h7h1h11h4h10 • a7 : h1h4h3h6h7h2h10h5h11 • a8 : h1h5h4h3h7h6h8 • a9 : h4 h3h5h9

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

  43. Phase 3: example Agent counter House label • a1 : h4h5h3h2h1 • a2 : h3h4h5h9h1h2 • a3 : h5h4h1h2h3 • a4 : h3h5h4 • a5 : h4h3h5 • a6 : h2h3h5h8h6h7h1h11h4h10 • a7 : h1h4h3h6h7h2h10h5h11 • a8 : h1h5h4h3h7h6h8 • a9 : h4 h3h5h9 a1 1 h1 a2 0 h2 a3 0 h3 a4 0 h4 a5 0 h5 a6 0 h6 a7 0 h7 a8 0 h8 a9 0 h9 a1 P=a1

  44. Phase 3: example Agent counter House label • a1 : h4h5h3h2h1 • a2 : h3h4h5h9h1h2 • a3 : h5h4h1h2h3 • a4 : h3h5h4 • a5 : h4h3h5 • a6 : h2h3h5h8h6h7h1h11h4h10 • a7 : h1h4h3h6h7h2h10h5h11 • a8 : h1h5h4h3h7h6h8 • a9 : h4 h3h5h9 a1 1 h1 a2 0 h2 a3 0 h3 a4 1 h4 a5 0 h5 a6 0 h6 a7 0 h7 a8 0 h8 a9 0 h9 a4 a1 EXTEND P=a1,a4

  45. Phase 3: example Agent counter House label • a1 : h4h5h3h2h1 • a2 : h3h4h5h9h1h2 • a3 : h5h4h1h2h3 • a4 : h3h5h4 • a5 : h4h3h5 • a6 : h2h3h5h8h6h7h1h11h4h10 • a7 : h1h4h3h6h7h2h10h5h11 • a8 : h1h5h4h3h7h6h8 • a9 : h4 h3h5h9 a1 1 h1 a2 0 h2 a3 1 h3 a4 1 h4 a5 0 h5 a6 0 h6 a7 0 h7 a8 0 h8 a9 0 h9 a4 a1 EXTEND a3 P=a1,a4 , a3

  46. Phase 3: example Agent counter House label • a1 : h4h5h3h2h1 • a2 : h3h4h5h9h1h2 • a3 : h5h4h1h2h3 • a4 : h3h5h4 • a5 : h4h3h5 • a6 : h2h3h5h8h6h7h1h11h4h10 • a7 : h1h4h3h6h7h2h10h5h11 • a8 : h1h5h4h3h7h6h8 • a9 : h4 h3h5h9 a1 1 h1 a2 0 h2 a3 1 h3 a4 1 h4 a5 1 h5 a6 0 h6 a7 0 h7 a8 0 h8 a9 0 h9 a4 a1 EXTEND a3 P=a1,a4 , a3 , a5  a5

  47. Phase 3: example Agent counter House label • a1 : h4h5h3h2h1 • a2 : h3h4h5h9h1h2 • a3 : h5h4h1h2h3 • a4 : h3h5h4 • a5 : h4h3h5 • a6 : h2h3h5h8h6h7h1h11h4h10 • a7 : h1h4h3h6h7h2h10h5h11 • a8 : h1h5h4h3h7h6h8 • a9 : h4 h3h5h9 a1 1 h1 a2 0 h2 a3 1 h3 a4 2h4 a5 1 h5 a6 0 h6 a7 0 h7 a8 0 h8 a9 0 h9 a4 a1 EXTEND a3 P=a1,a4 , a3 , a5 ,a4 a5

  48. Phase 3: example Agent counter House label • a1 : h4h5h3h2h1 • a2 : h3h4h5h9h1h2 • a3 : h5h4h1h2h3 • a4 : h3h5h4 • a5 : h4h3h5 • a6 : h2h3h5h8h6h7h1h11h4h10 • a7 : h1h4h3h6h7h2h10h5h11 • a8 : h1h5h4h3h7h6h8 • a9 : h4 h3h5h9 a1 1 h1 a2 0 h2 a3 1 h3 a42 h4 a5 1 h5 a6 0 h6 a7 0 h7 a8 0 h8 a9 0 h9 a4 a1 CYCLE a3 P=a1,a4, a3 , a5 a5

  49. Phase 3: example Agent counter House label • a1 : h4h5h3h2h1 • a2 : h3h4h5h9h1h2 • a3 : h5h4h1h2h3 • a4 : h3h5h4 • a5: h4h3h5 • a6 : h2h3h5h8h6h7h1h11h4h10 • a7 : h1h4h3h6h7h2h10h5h11 • a8 : h1h5h4h3h7h6h8 • a9 : h4 h3h5h9 a1 1 h1 a2 0 h2 a30h3 a40 h4 a50h5 a6 0 h6 a7 0 h7 a8 0 h8 a9 0 h9 a4 a1 CYCLE a3 P=a1,a4, a3 , a5 a5

More Related