690 likes | 935 Vues
Student-Project Allocation with Preferences over Projects. David Manlove University of Glasgow Department of Computing Science Joint work with Gregg O’Malley. S upported by E PSR C grant GR/R84597/01, RSE / Scottish Exec Personal Research Fellowship. Background and motivation.
E N D
Student-Project Allocation withPreferences over Projects David Manlove University of GlasgowDepartment of Computing Science Joint work with Gregg O’Malley Supported by EPSRC grant GR/R84597/01,RSE / Scottish Exec Personal Research Fellowship
Background and motivation • Students may undertake project work during degree course • Set of students, projects and lecturers • Typically a wide range of projects – exceeding number of students • Students may rank projects in preference order • Lecturers may have preferences over students / projects • Projects / lecturers may have capacities
Related work (1) • Growing interest in automating the allocation process • Efficient algorithms are important • Formalise the matching problem • The Student-Project Allocation problem (SPA) • No explicit lecturer preferences • University of Southampton • Proll (1972), bottleneck assignment problem • Teo and Ho (1998), greedy approach • Anwar and Bahaj (2003), integer programming • Harper et al (2005), genetic algorithm
Related work (2) • Lecturer preferences over students • Project and lecturer capacities equal to 1 • University of York, Department of Computer Science • Constraint programming for stable marriage variants • Dye (2001), Kazakov (2002), Thorn (2003) • Arbitrary project and lecturer capacities • Linear-time combinatorial algorithms • Abraham, Irving and DFM, “The student-project allocation problem”, Proc. ISAAC 2003, LNCS • Abraham, Irving and DFM, “Two algorithms for the student-project allocation problem”, 2004, submitted
Lecturer preferencesover projects • Lecturer preferences over students • Defaults to academic merit order? • Weaker students obtain less preferable projects • Lecturer preferences over projects • Ranking could reflect research interests, for example • Lecturer implicitly indifferent among all students who find a given project acceptable • Student-Project Allocation problem with Project preferences (SPA-P) • DFM and O’Malley, “Student-Project Allocation with Preferences over Projects”, Proc. ACID 2005, to appear • Seek a stable matching as a solution • Roth (1984)
Formal definition of SPA-P • Set of students S={s1, s2, …, sn} • Set of projects P={p1, p2, …, pm} • Set of lecturers L={l1, l2, …, lq} • Each student sifinds acceptable a set of projects Ai P • si ranks Ai in strict order of preference • Each project pjhas a capacitycj • Each lecturer lkhas a capacitydk • Each lecturer lkoffers a set of projects Pk P • lk ranks Pk in strict order of preference • assume that P1, P2, …, PqpartitionsP
Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p4 p3 l1 : p1p2p3 3 s2 :p5p1 Project capacities: 1 2 1 s3 :p2p5 s4 : p4p2 l2 : p4p5 2 s5 : p5 p2 Project capacities: 1 2 Lecturer capacities:d1= 3, d2 = 2 Project capacities: c1 = 1;c2 = 2;c3 = 1;c4 = 2;c5 = 1
Definition of a matching • An assignment M is a subset of S×P such that if(si, pj)Mthensi findspjacceptable
Definition of a matching • An assignment M is a subset of S×P such that if(si, pj)Mthensi findspjacceptable • If (si, pj)M, where lk offers pj, we say that • siis assigned topj • siis assigned tolk • pj isassignedsi • lk is assignedsi
Definition of a matching • An assignment M is a subset of S×P such that if(si, pj)Mthensi findspjacceptable • If (si, pj)M, where lk offers pj, we say that • siis assigned topj • siis assigned tolk • pj isassignedsi • lk is assignedsi • For any student si , M(si) denotes the set of projects thatsi is assigned to • For any project pj , M(pj) denotes the set of students assigned topj • For any lecturer lk , M(lk) denotes the set of students assigned to(projects offered by)lk
Definition of a matching • An assignment M is a subset of S×P such that if(si, pj)Mthensi findspjacceptable • If (si, pj)M, where lk offers pj, we say that • siis assigned topj • siis assigned tolk • pj isassignedsi • lk is assignedsi • For any student si , M(si) denotes the set of projects thatsi is assigned to • For any project pj , M(pj) denotes the set of students assigned topj • For any lecturer lk , M(lk) denotes the set of students assigned to(projects offered by)lk • A matching M is an assignment such that |M(si)|1, |M(pj)|cjand|M(lk)|dk
Example matching Student preferences Lecturer preferences Lecturer capacities s1 : p1p4 p3 l1 : p1p2p32/3 s2 :p5p1 Project capacities:0/11/21/1 s3 :p2p5 s4 : p4p2l2 : p4p52/2 s5 :p5p2 Project capacities:0/12/2 Lecturer capacities:d1= 3, d2 = 2 Project capacities: c1 = 1;c2 = 2;c3 = 1;c4 = 1;c5 = 2
Stable matchings • (si, pj) is a blocking pair of a matchingMif: • pj Ai • Either si is unmatched in M, or si prefers pj to M(si) • pjis under-subscribed and either • si M(lk) and lk prefers pj to M(si) • si M(lk) and lk is under-subscribed • si M(lk) and lk preferspj to his worst non-empty project where lk is the lecturer who offerspj • A matching M is stable if it admits no blocking pair
Example blocking pair (1) Student preferences Lecturer preferences Lecturer capacities s1 : p1p4 p3 l1 : p1p2p32/3 s2 :p5p1 Project capacities:0/11/21/1 s3 :p2p5 s4 : p4p2l2 : p4p52/2 s5 :p5p2 Project capacities:0/12/2 (s1, p1) is a blocking pair, since 3.p1is under-subscribed and • s1M(l1) and l1 prefers p1 to M(s1)=p3
Example blocking pair (2) Student preferences Lecturer preferences Lecturer capacities s1 : p1p4 p3 l1 : p1p2p32/3 s2 :p5p1 Project capacities:0/11/21/1 s3 :p2p5 s4 : p4p2l2 : p4p52/2 s5 :p5p2 Project capacities:0/12/2 (s2, p1) is a blocking pair, since 3.p1is under-subscribed and • s2M(l1) and l1 is under-subscribed
Example blocking pair (3) Student preferences Lecturer preferences Lecturer capacities s1 : p1p4 p3 l1 : p1p2p32/3 s2 :p5p1 Project capacities:0/11/21/1 s3 :p2p5 s4 : p4p2l2 : p4p52/2 s5 :p5p2 Project capacities:0/12/2 (s4, p4) is a blocking pair, since 3.p4is under-subscribed and • s4M(l2) and l2 prefersp4 to his worst non-empty project
Example stable matching Student preferences Lecturer preferences Lecturer capacities s1: p1p4 p3 l1 : p1p2p3 2/3 s2 :p5p1 Project capacities:1/11/20/1 s3 :p2p5 s4 : p4p2 l2 : p4p52/2 s5 :p5p2 Project capacities:1/11/2
Sizes of stable matchings • Every instance of SPA-P admits at least one stable matching
Sizes of stable matchings • Every instance of SPA-P admits at least one stable matching • But, stable matchings can have different sizes, e.g. Student preferences Lecturer preferences s1 : p1p2 l1 : p1 s2 :p1 l2 : p2 (each project and lecturer has capacity 1)
Sizes of stable matchings • Every instance of SPA-P admits at least one stable matching • But, stable matchings can have different sizes, e.g. Student preferences Lecturer preferences s1 : p1p2l1 : p1 s2 :p1 l2 : p2 (each project and lecturer has capacity 1) M1={(s1, p1)}
Sizes of stable matchings • Every instance of SPA-P admits at least one stable matching • But, stable matchings can have different sizes, e.g. Student preferences Lecturer preferences s1 : p1p2l1 : p1 s2 :p1 l2 : p2 (each project and lecturer has capacity 1) M1={(s1, p1)} Student preferences Lecturer preferences s1 : p1p2 l1 : p1 s2 :p1l2 : p2(each project and lecturer has capacity 1) M2={(s1, p2), (s2, p1)}
Maximisation problem • MAX-SPA-P denotes the problem of finding a maximum cardinality stable matching, given an instance of SPA-P • ALL-SPA-P denotes the problem of deciding whether an instance of SPA-P admits a stable matching in which every student is matched • We show that ALL-SPA-P is NP-complete • Immediate corollary is that MAX-SPA-P is NP-hard • Result holds even if each project and lecturer has capacity 1
u1 w1 w2 u2 w3 u3 Exact Maximal Matching • A matching M in a graph G is maximal if M{e} is not a matching for any edge eM u1 w1 w2 u2 w3 u3 • The following problem is NP-complete: • EXACT-MM • Input: Bipartite graph G and integer K • Question: does G contain a maximal matching of size (exactly) K?
Overview of the reduction must ensure that uior wj matched ui EXACT-MM instance wj assume n2 RH vertices assume n1 LH vertices
Overview of the reduction must ensure that uior wj matched ui EXACT-MM instance wj assume n2 RH vertices assume n1 LH vertices Student preferences Lecturer preferences ALL-SPA-P instance si : pj … y1…yn1-K qj : pjzj (1jn2) (1in1) rj : yj ti : z1…zn2 (1in2-K) (1jn1-K) Each project and lecturer has capacity 1
Overview of the reduction must ensure that uior wj matched ui EXACT-MM instance wj assume n2 RH vertices assume n1 LH vertices Student preferences Lecturer preferences ALL-SPA-P instance si : pj … y1…yn1-K qj : pjzj (1jn2) (1in1) rj : yj ti : z1…zn2 (1in2-K) (1jn1-K) Each project and lecturer has capacity 1
Approximation algorithm M = M {(si, pj)}; /* si is provisionally assigned to pj and to lk */ if (lk is full){ pz = lk’s worst non-empty project ; for (each successor pt of pz on lk’s list) for (each student sr such that srAt) delete pt from sr’s list ; } } M = ; while (some student si is free and sihas a nonempty list) { pj = first project on si’s list ; lk = lecturer who offers pj ; /* si applies to pj */ if (pj is full) delete pj from si’s list ; else if (lk is full){ pz = lk’s worst non-empty project ; if (pz = pj ) delete pj from si’s list ; else { sr = some student in M(pz); M = M \ {(sr , pz)} ; delete pz from sr’s list ;
Approximation algorithm M = M {(si, pj)}; /* si is provisionally assigned to pj and to lk */ if (lk is full){ pz = lk’s worst non-empty project ; for (each successor pt of pz on lk’s list) for (each student sr such that srAt) delete pt from sr’s list ; } } M = ; while (some student si is free and sihas a nonempty list) { pj = first project on si’s list ; lk = lecturer who offers pj ; /* si applies to pj */ if (pj is full) delete pj from si’s list ; else if (lk is full){ pz = lk’s worst non-empty project ; if (pz = pj ) delete pj from si’s list ; else { sr = some student in M(pz); M = M \ {(sr , pz)} ; delete pz from sr’s list ;
Approximation algorithm M = M {(si, pj)}; /* si is provisionally assigned to pj and to lk */ if (lk is full){ pz = lk’s worst non-empty project ; for (each successor pt of pz on lk’s list) for (each student sr such that srAt) delete pt from sr’s list ; } } M = ; while (some student si is free and sihas a nonempty list) { pj = first project on si’s list ; lk = lecturer who offers pj ; /* si applies to pj */ if (pj is full) delete pj from si’s list ; else if (lk is full){ pz = lk’s worst non-empty project ; if (pz = pj ) delete pj from si’s list ; else { sr = some student in M(pz); M = M \ {(sr , pz)} ; delete pz from sr’s list ;
Approximation algorithm M = M {(si, pj)}; /* si is provisionally assigned to pj and to lk */ if (lk is full){ pz = lk’s worst non-empty project ; for (each successor pt of pz on lk’s list) for (each student sr such that srAt) delete pt from sr’s list ; } } M = ; while (some student si is free and sihas a nonempty list) { pj = first project on si’s list ; lk = lecturer who offers pj ; /* si applies to pj */ if (pj is full) delete pj from si’s list ; else if (lk is full){ pz = lk’s worst non-empty project ; if (pz = pj ) delete pj from si’s list ; else { sr = some student in M(pz); M = M \ {(sr , pz)} ; delete pz from sr’s list ;
Approximation algorithm M = M {(si, pj)}; /* si is provisionally assigned to pj and to lk */ if (lk is full){ pz = lk’s worst non-empty project ; for (each successor pt of pz on lk’s list) for (each student sr such that srAt) delete pt from sr’s list ; } } } } M = ; while (some student si is free and sihas a nonempty list) { pj = first project on si’s list ; lk = lecturer who offers pj ; /* si applies to pj */ if (pj is full) delete pj from si’s list ; else if (lk is full){ pz = lk’s worst non-empty project ; if (pz = pj ) delete pj from si’s list ; else { sr = some student in M(pz); M = M \ {(sr , pz)} ; delete pz from sr’s list ;
Approximation algorithm M = M {(si, pj)}; /* si is provisionally assigned to pj and to lk */ if (lk is full){ pz = lk’s worst non-empty project ; for (each successor pt of pz on lk’s list) for (each student sr such that srAt) delete pt from sr’s list ; } } } } M = ; while (some student si is free and sihas a nonempty list) { pj = first project on si’s list ; lk = lecturer who offers pj ; /* si applies to pj */ if (pj is full) delete pj from si’s list ; else if (lk is full){ pz = lk’s worst non-empty project ; if (pz = pj ) delete pj from si’s list ; else { sr = some student in M(pz); M = M \ {(sr , pz)} ; delete pz from sr’s list ;
Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p2 p6 l1 : p3p1p2p4 3 s2 :p1p4 Project capacities: 1 2 2 1 s3 :p1p2p5 s4 : p3 l2 : p5p6 3 s5 : p3 p5 Project capacities: 1 2 s6 : p5 p3 p6 Lecturer capacities:d1= 3, d2 = 3 Project capacities: c1 = 2;c2 = 2;c3 = 1;c4 = 1;c5 = 1;c6 = 2
Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p2 p6 l1 : p3p1p2p4 1/3 s2 :p1p4 Project capacities: 0/11/20/2 0/1 s3 :p1p2p5 s4 : p3 l2 : p5p6 0/3 s5 : p3 p5 Project capacities:0/1 0/2 s6 : p5 p3 p6 s1applies top1 p1 remains under-subscribed; l1 remains under-subscribed
Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p2 p6 l1 : p3p1p2p4 2/3 s2 :p1p4 Project capacities: 0/12/20/2 0/1 s3 :p1p2p5 s4 : p3 l2 : p5p6 0/3 s5 : p3 p5 Project capacities:0/1 0/2 s6 : p5 p3 p6 s2applies top1 p1 becomes full ; l1 remains under-subscribed
Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p2 p6 l1 : p3p1p2p4 2/3 s2 :p1p4 Project capacities: 0/12/20/2 0/1 s3 :p1p2p5 s4 : p3 l2 : p5p6 0/3 s5 : p3 p5 Project capacities:0/1 0/2 s6 : p5 p3 p6 s3applies top1 p1 is already full
Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p2 p6 l1 : p3p1p2p4 2/3 s2 :p1p4 Project capacities: 0/12/20/2 0/1 s3 :p1p2p5 s4 : p3 l2 : p5p6 0/3 s5 : p3 p5 Project capacities:0/1 0/2 s6 : p5 p3 p6 s3applies top1 p1 is already full ; p1 is deleted from s3’s list
Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p2 p6 l1 : p3p1p2p4 3/3 s2 :p1p4 Project capacities: 0/12/21/2 0/1 s3 :p1p2p5 s4 : p3 l2 : p5p6 0/3 s5 : p3 p5 Project capacities:0/1 0/2 s6 : p5 p3 p6 s3applies top2 p2 remains under-subscribed ; l1 becomes full
Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p2 p6 l1 : p3p1p2p43/3 s2 :p1p4 Project capacities: 0/12/21/2 0/1 s3 :p1p2p5 s4 : p3 l2 : p5p6 0/3 s5 : p3 p5 Project capacities:0/1 0/2 s6 : p5 p3 p6 s3applies top2 p2 remains under-subscribed ; l1 becomes full ; p4 is deleted from s2’s list
Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p2 p6 l1 : p3p1p2p4 3/3 s2 :p1p4 Project capacities: 0/12/21/2 0/1 s3 :p1p2p5 s4 : p3l2 : p5p6 0/3 s5 : p3 p5 Project capacities:0/1 0/2 s6 : p5 p3 p6 s4applies top3 l1 is already full
Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p2 p6 l1 : p3p1p2p4 3/3 s2 :p1p4 Project capacities: 1/12/20/2 0/1 s3 :p1p2p5 s4 : p3l2 : p5p6 0/3 s5 : p3 p5 Project capacities:0/1 0/2 s6 : p5 p3 p6 s4applies top3 l1 is already full ; s3 is rejected from p2 ; p3 becomes full
Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p2 p6 l1 : p3p1p2p4 3/3 s2 :p1p4 Project capacities: 1/12/20/2 0/1 s3 :p1p2p5 s4 : p3l2 : p5p6 0/3 s5 : p3 p5 Project capacities:0/1 0/2 s6 : p5 p3 p6 s4applies top3 l1 is already full ; s3 is rejected from p2 ; s3 is rejected from p2 ; p2 is deleted from s1’s list
Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p2 p6 l1 : p3p1p2p4 3/3 s2 :p1p4 Project capacities: 1/12/20/2 0/1 s3 :p1p2p5 s4 : p3l2 : p5p6 1/3 s5 : p3 p5 Project capacities:1/1 0/2 s6 : p5 p3 p6 s3applies top5 p5 becomes full; l2 remains under-subscribed
Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p2 p6 l1 : p3p1p2p4 3/3 s2 :p1p4 Project capacities: 1/12/20/2 0/1 s3 :p1p2p5 s4 : p3l2 : p5p6 1/3 s5 :p3p5 Project capacities:1/1 0/2 s6 : p5 p3 p6 s5applies top3 p3 is already full
Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p2 p6 l1 : p3p1p2p4 3/3 s2 :p1p4 Project capacities: 1/12/20/2 0/1 s3 :p1p2p5 s4 : p3l2 : p5p6 1/3 s5 : p3 p5 Project capacities:1/1 0/2 s6 : p5 p3 p6 s5applies top3 p3 is already full ; p3 is deleted from s5’s list
Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p2 p6 l1 : p3p1p2p4 3/3 s2 :p1p4 Project capacities: 1/12/20/2 0/1 s3 :p1p2p5 s4 : p3l2 : p5p6 1/3 s5 : p3 p5Project capacities:1/1 0/2 s6 : p5 p3 p6 s5applies top5 p5 is already full
Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p2 p6 l1 : p3p1p2p4 3/3 s2 :p1p4 Project capacities: 1/12/20/2 0/1 s3 :p1p2p5 s4 : p3l2 : p5p6 1/3 s5 : p3 p5 Project capacities:1/1 0/2 s6 : p5 p3 p6 s5applies top5 p5 is already full ; p5 is deleted from s5’s list
Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p2 p6 l1 : p3p1p2p4 3/3 s2 :p1p4 Project capacities: 1/12/20/2 0/1 s3 :p1p2p5 s4 : p3l2 : p5p6 1/3 s5 : p3 p5 Project capacities:1/1 0/2 s6 :p5p3 p6 s6applies top5 p5 is already full
Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p2 p6 l1 : p3p1p2p4 3/3 s2 :p1p4 Project capacities: 1/12/20/2 0/1 s3 :p1p2p5 s4 : p3l2 : p5p6 1/3 s5 : p3 p5 Project capacities:1/1 0/2 s6 : p5 p3 p6 s6applies top5 p5 is already full ; p5 is deleted from s6’s list
Example SPA-P instance Student preferences Lecturer preferences Lecturer capacities s1 : p1p2 p6 l1 : p3p1p2p4 3/3 s2 :p1p4 Project capacities: 1/12/20/2 0/1 s3 :p1p2p5 s4 : p3l2 : p5p6 1/3 s5 : p3 p5 Project capacities:1/1 0/2 s6 : p5 p3 p6 s6applies top3 p3 is already full