Title: Student-Project Allocation with Preferences over Projects
1Student-Project Allocation withPreferences over
Projects
- David Manlove
- University of GlasgowDepartment of Computing
Science - Joint work with Gregg OMalley
Supported by EPSRC grant GR/R84597/01,RSE /
Scottish Exec Personal Research Fellowship
2Background 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
3Related 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
4Related 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
5Lecturer 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 OMalley, Student-Project Allocation
with Preferences over Projects, Proc. ACID 2005,
to appear - Seek a stable matching as a solution
- Roth (1984)
6Formal definition of SPA-P
- Set of students Ss1, s2, , sn
- Set of projects Pp1, p2, , pm
- Set of lecturers Ll1, l2, , lq
- Each student si finds acceptable a set of
projects Ai ? P - si ranks Ai in strict order of preference
- Each project pj has a capacity cj
- Each lecturer lk has a capacity dk
- Each lecturer lk offers a set of projects Pk ? P
- lk ranks Pk in strict order of preference
- assume that P1, P2, , Pq partitions P
7Example SPA-P instance
- Student preferences Lecturer preferences Lecturer
capacities - s1 p1 p4 p3 l1 p1 p2 p3
3 - s2 p5 p1 Project capacities 1 2
1 - s3 p2 p5
- s4 p4 p2 l2 p4 p5 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
8Definition of a matching
- An assignment M is a subset of SP such that if
(si, pj)?M then si finds pj acceptable
9Definition of a matching
- An assignment M is a subset of SP such that if
(si, pj)?M then si finds pj acceptable - If (si, pj)?M , where lk offers pj , we say that
- si is assigned to pj
- si is assigned to lk
- pj is assigned si
- lk is assigned si
10Definition of a matching
- An assignment M is a subset of SP such that if
(si, pj)?M then si finds pj acceptable - If (si, pj)?M , where lk offers pj , we say that
- si is assigned to pj
- si is assigned to lk
- pj is assigned si
- lk is assigned si
- For any student si , M(si) denotes the set of
projects that si is assigned to - For any project pj , M(pj) denotes the set of
students assigned to pj - For any lecturer lk , M(lk) denotes the set of
students assigned to (projects offered by) lk
11Definition of a matching
- An assignment M is a subset of SP such that if
(si, pj)?M then si finds pj acceptable - If (si, pj)?M , where lk offers pj , we say that
- si is assigned to pj
- si is assigned to lk
- pj is assigned si
- lk is assigned si
- For any student si , M(si) denotes the set of
projects that si is assigned to - For any project pj , M(pj) denotes the set of
students assigned to pj - 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)?cj and M(lk)?dk
12Example matching
- Student preferences Lecturer preferences Lecturer
capacities - s1 p1 p4 p3 l1 p1 p2
p3 2/3 - s2 p5 p1 Project capacities 0/1 1/2
1/1 - s3 p2 p5
- s4 p4 p2 l2 p4 p5 2/2
- s5 p5 p2 Project capacities 0/1 2/2
- Lecturer capacities d1 3, d2 2
- Project capacities c1 1 c2 2 c3 1 c4
1 c5 2
13Stable matchings
- (si, pj) is a blocking pair of a matching M if
- pj ? Ai
- Either si is unmatched in M, or si prefers pj to
M(si) - pj is 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 prefers pj to his worst
non-empty project - where lk is the lecturer who offers pj
- A matching M is stable if it admits no blocking
pair
14Example blocking pair (1)
- Student preferences Lecturer preferences Lecturer
capacities - s1 p1 p4 p3 l1 p1 p2
p3 2/3 - s2 p5 p1 Project capacities 0/1 1/2
1/1 - s3 p2 p5
- s4 p4 p2 l2 p4 p5 2/2
- s5 p5 p2 Project capacities 0/1 2/2
- (s1, p1) is a blocking pair, since
- 3. p1 is under-subscribed and
- s1 ?M(l1) and l1 prefers p1 to M(s1)p3
15Example blocking pair (2)
- Student preferences Lecturer preferences Lecturer
capacities - s1 p1 p4 p3 l1 p1 p2
p3 2/3 - s2 p5 p1 Project capacities 0/1 1/2
1/1 - s3 p2 p5
- s4 p4 p2 l2 p4 p5 2/2
- s5 p5 p2 Project capacities 0/1 2/2
- (s2, p1) is a blocking pair, since
- 3. p1 is under-subscribed and
- s2 ?M(l1) and l1 is under-subscribed
16Example blocking pair (3)
- Student preferences Lecturer preferences Lecturer
capacities - s1 p1 p4 p3 l1 p1 p2
p3 2/3 - s2 p5 p1 Project capacities 0/1 1/2
1/1 - s3 p2 p5
- s4 p4 p2 l2 p4 p5 2/2
- s5 p5 p2 Project capacities 0/1 2/2
- (s4, p4) is a blocking pair, since
- 3. p4 is under-subscribed and
- s4 ?M(l2) and l2 prefers p4 to his worst
non-empty project
17Example stable matching
- Student preferences Lecturer preferences Lecturer
capacities - s1 p1 p4 p3 l1 p1 p2
p3 2/3 - s2 p5 p1 Project capacities 1/1 1/2
0/1 - s3 p2 p5
- s4 p4 p2 l2 p4 p5 2/2
- s5 p5 p2 Project capacities 1/1 1/2
18Sizes of stable matchings
- Every instance of SPA-P admits at least one
stable matching
19Sizes 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 p1 p2 l1 p1
- s2 p1 l2 p2 (each project and lecturer
has capacity 1)
20Sizes 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 p1 p2 l1 p1
- s2 p1 l2 p2 (each project and lecturer
has capacity 1) - M1(s1, p1)
21Sizes 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 p1 p2 l1 p1
- s2 p1 l2 p2 (each project and lecturer
has capacity 1) - M1(s1, p1)
- Student preferences Lecturer preferences
- s1 p1 p2 l1 p1
- s2 p1 l2 p2 (each project and lecturer
has capacity 1) - M2(s1, p2), (s2, p1)
22Maximisation 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
23Exact Maximal Matching
- A matching M in a graph G is maximal if M?e is
not a matching for any edge e?M
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?
24Overview of the reduction
must ensure that ui or wj matched
ui
EXACT-MM instance
wj
assume n2 RH vertices
assume n1 LH vertices
25Overview of the reduction
must ensure that ui or 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 y1yn1-K
qj pj zj
(1 ? j ? n2)
(1 ? i ? n1)
ti z1zn2
rj yj
(1 ? i ? n2-K)
(1 ? j ? n1-K)
Each project and lecturer has capacity 1
26Overview of the reduction
must ensure that ui or 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 y1yn1-K
qj pj zj
(1 ? j ? n2)
(1 ? i ? n1)
ti z1zn2
rj yj
(1 ? i ? n2-K)
(1 ? j ? n1-K)
Each project and lecturer has capacity 1
27Approximation algorithm
M M ? (si, pj) / si is
provisionally assigned to pj and to lk / if
(lk is full) pz lks worst non-empty
project for (each successor pt of pz on
lks list) for (each student sr such
that sr?At) delete pt from srs
list
- M ?
- while (some student si is free and
- si has a nonempty list)
- pj first project on sis list
- lk lecturer who offers pj
- / si applies to pj /
- if (pj is full)
- delete pj from sis list
- else if (lk is full)
- pz lks worst non-empty project
- if (pz pj )
- delete pj from sis list
- else
- sr some student in M(pz)
- M M \ (sr , pz)
- delete pz from srs list
28Approximation algorithm
M M ? (si, pj) / si is
provisionally assigned to pj and to lk / if
(lk is full) pz lks worst non-empty
project for (each successor pt of pz on
lks list) for (each student sr such
that sr?At) delete pt from srs
list
- M ?
- while (some student si is free and
- si has a nonempty list)
- pj first project on sis list
- lk lecturer who offers pj
- / si applies to pj /
- if (pj is full)
- delete pj from sis list
- else if (lk is full)
- pz lks worst non-empty project
- if (pz pj )
- delete pj from sis list
- else
- sr some student in M(pz)
- M M \ (sr , pz)
- delete pz from srs list
29Approximation algorithm
M M ? (si, pj) / si is
provisionally assigned to pj and to lk / if
(lk is full) pz lks worst non-empty
project for (each successor pt of pz on
lks list) for (each student sr such
that sr?At) delete pt from srs
list
- M ?
- while (some student si is free and
- si has a nonempty list)
- pj first project on sis list
- lk lecturer who offers pj
- / si applies to pj /
- if (pj is full)
- delete pj from sis list
- else if (lk is full)
- pz lks worst non-empty project
- if (pz pj )
- delete pj from sis list
- else
- sr some student in M(pz)
- M M \ (sr , pz)
- delete pz from srs list
30Approximation algorithm
M M ? (si, pj) / si is
provisionally assigned to pj and to lk / if
(lk is full) pz lks worst non-empty
project for (each successor pt of pz on
lks list) for (each student sr such
that sr?At) delete pt from srs
list
- M ?
- while (some student si is free and
- si has a nonempty list)
- pj first project on sis list
- lk lecturer who offers pj
- / si applies to pj /
- if (pj is full)
- delete pj from sis list
- else if (lk is full)
- pz lks worst non-empty project
- if (pz pj )
- delete pj from sis list
- else
- sr some student in M(pz)
- M M \ (sr , pz)
- delete pz from srs list
31Approximation algorithm
M M ? (si, pj) / si is
provisionally assigned to pj and to lk / if
(lk is full) pz lks worst non-empty
project for (each successor pt of pz on
lks list) for (each student sr such
that sr?At) delete pt from srs
list
- M ?
- while (some student si is free and
- si has a nonempty list)
- pj first project on sis list
- lk lecturer who offers pj
- / si applies to pj /
- if (pj is full)
- delete pj from sis list
- else if (lk is full)
- pz lks worst non-empty project
- if (pz pj )
- delete pj from sis list
- else
- sr some student in M(pz)
- M M \ (sr , pz)
- delete pz from srs list
32Approximation algorithm
M M ? (si, pj) / si is
provisionally assigned to pj and to lk / if
(lk is full) pz lks worst non-empty
project for (each successor pt of pz on
lks list) for (each student sr such
that sr?At) delete pt from srs
list
- M ?
- while (some student si is free and
- si has a nonempty list)
- pj first project on sis list
- lk lecturer who offers pj
- / si applies to pj /
- if (pj is full)
- delete pj from sis list
- else if (lk is full)
- pz lks worst non-empty project
- if (pz pj )
- delete pj from sis list
- else
- sr some student in M(pz)
- M M \ (sr , pz)
- delete pz from srs list
33Example SPA-P instance
- Student preferences Lecturer preferences
Lecturer capacities - s1 p1 p2 p6 l1 p3 p1 p2
p4 3 - s2 p1 p4 Project capacities 1 2
2 1 - s3 p1 p2 p5
- s4 p3 l2 p5 p6 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
34Example SPA-P instance
- Student preferences Lecturer preferences
Lecturer capacities - s1 p1 p2 p6 l1 p3 p1 p2
p4 1/3 - s2 p1 p4 Project capacities 0/1 1/2
0/2 0/1 - s3 p1 p2 p5
- s4 p3 l2 p5 p6 0/3
- s5 p3 p5 Project capacities 0/1
0/2 - s6 p5 p3 p6
- s1 applies to p1
- p1 remains under-subscribed l1 remains
under-subscribed
35Example SPA-P instance
- Student preferences Lecturer preferences
Lecturer capacities - s1 p1 p2 p6 l1 p3 p1 p2
p4 2/3 - s2 p1 p4 Project capacities 0/1 2/2
0/2 0/1 - s3 p1 p2 p5
- s4 p3 l2 p5 p6 0/3
- s5 p3 p5 Project capacities 0/1
0/2 - s6 p5 p3 p6
- s2 applies to p1
- p1 becomes full l1 remains under-subscribed
36Example SPA-P instance
- Student preferences Lecturer preferences
Lecturer capacities - s1 p1 p2 p6 l1 p3 p1 p2
p4 2/3 - s2 p1 p4 Project capacities 0/1 2/2
0/2 0/1 - s3 p1 p2 p5
- s4 p3 l2 p5 p6 0/3
- s5 p3 p5 Project capacities 0/1
0/2 - s6 p5 p3 p6
- s3 applies to p1
- p1 is already full
37Example SPA-P instance
- Student preferences Lecturer preferences
Lecturer capacities - s1 p1 p2 p6 l1 p3 p1 p2
p4 2/3 - s2 p1 p4 Project capacities 0/1 2/2
0/2 0/1 - s3 p1 p2 p5
- s4 p3 l2 p5 p6 0/3
- s5 p3 p5 Project capacities 0/1
0/2 - s6 p5 p3 p6
- s3 applies to p1
- p1 is already full p1 is deleted from s3s list
?
38Example SPA-P instance
- Student preferences Lecturer preferences
Lecturer capacities - s1 p1 p2 p6 l1 p3 p1 p2
p4 3/3 - s2 p1 p4 Project capacities 0/1 2/2
1/2 0/1 - s3 p1 p2 p5
- s4 p3 l2 p5 p6 0/3
- s5 p3 p5 Project capacities 0/1
0/2 - s6 p5 p3 p6
- s3 applies to p2
- p2 remains under-subscribed l1 becomes full
?
39Example SPA-P instance
- Student preferences Lecturer preferences
Lecturer capacities - s1 p1 p2 p6 l1 p3 p1 p2
p4 3/3 - s2 p1 p4 Project capacities 0/1 2/2
1/2 0/1 - s3 p1 p2 p5
- s4 p3 l2 p5 p6 0/3
- s5 p3 p5 Project capacities 0/1
0/2 - s6 p5 p3 p6
- s3 applies to p2
- p2 remains under-subscribed l1 becomes full
p4 is deleted from s2s list
?
?
40Example SPA-P instance
- Student preferences Lecturer preferences
Lecturer capacities - s1 p1 p2 p6 l1 p3 p1 p2
p4 3/3 - s2 p1 p4 Project capacities 0/1 2/2
1/2 0/1 - s3 p1 p2 p5
- s4 p3 l2 p5 p6 0/3
- s5 p3 p5 Project capacities 0/1
0/2 - s6 p5 p3 p6
- s4 applies to p3
- l1 is already full
?
?
41Example SPA-P instance
- Student preferences Lecturer preferences
Lecturer capacities - s1 p1 p2 p6 l1 p3 p1 p2
p4 3/3 - s2 p1 p4 Project capacities 1/1 2/2
0/2 0/1 - s3 p1 p2 p5
- s4 p3 l2 p5 p6 0/3
- s5 p3 p5 Project capacities 0/1
0/2 - s6 p5 p3 p6
- s4 applies to p3
- l1 is already full s3 is rejected from p2 p3
becomes full
?
?
?
42Example SPA-P instance
- Student preferences Lecturer preferences
Lecturer capacities - s1 p1 p2 p6 l1 p3 p1 p2
p4 3/3 - s2 p1 p4 Project capacities 1/1 2/2
0/2 0/1 - s3 p1 p2 p5
- s4 p3 l2 p5 p6 0/3
- s5 p3 p5 Project capacities 0/1
0/2 - s6 p5 p3 p6
- s4 applies to p3
- l1 is already full s3 is rejected from p2 s3
is rejected from p2 - p2 is deleted from s1s list
?
?
?
?
43Example SPA-P instance
- Student preferences Lecturer preferences
Lecturer capacities - s1 p1 p2 p6 l1 p3 p1 p2
p4 3/3 - s2 p1 p4 Project capacities 1/1 2/2
0/2 0/1 - s3 p1 p2 p5
- s4 p3 l2 p5 p6 1/3
- s5 p3 p5 Project capacities 1/1
0/2 - s6 p5 p3 p6
- s3 applies to p5
- p5 becomes full l2 remains under-subscribed
?
?
?
?
44Example SPA-P instance
- Student preferences Lecturer preferences
Lecturer capacities - s1 p1 p2 p6 l1 p3 p1 p2
p4 3/3 - s2 p1 p4 Project capacities 1/1 2/2
0/2 0/1 - s3 p1 p2 p5
- s4 p3 l2 p5 p6 1/3
- s5 p3 p5 Project capacities 1/1
0/2 - s6 p5 p3 p6
- s5 applies to p3
- p3 is already full
?
?
?
?
45Example SPA-P instance
- Student preferences Lecturer preferences
Lecturer capacities - s1 p1 p2 p6 l1 p3 p1 p2
p4 3/3 - s2 p1 p4 Project capacities 1/1 2/2
0/2 0/1 - s3 p1 p2 p5
- s4 p3 l2 p5 p6 1/3
- s5 p3 p5 Project capacities 1/1
0/2 - s6 p5 p3 p6
- s5 applies to p3
- p3 is already full p3 is deleted from s5s list
?
?
?
?
?
46Example SPA-P instance
- Student preferences Lecturer preferences
Lecturer capacities - s1 p1 p2 p6 l1 p3 p1 p2
p4 3/3 - s2 p1 p4 Project capacities 1/1 2/2
0/2 0/1 - s3 p1 p2 p5
- s4 p3 l2 p5 p6 1/3
- s5 p3 p5 Project capacities 1/1
0/2 - s6 p5 p3 p6
- s5 applies to p5
- p5 is already full
?
?
?
?
?
47Example SPA-P instance
- Student preferences Lecturer preferences
Lecturer capacities - s1 p1 p2 p6 l1 p3 p1 p2
p4 3/3 - s2 p1 p4 Project capacities 1/1 2/2
0/2 0/1 - s3 p1 p2 p5
- s4 p3 l2 p5 p6 1/3
- s5 p3 p5 Project capacities 1/1
0/2 - s6 p5 p3 p6
- s5 applies to p5
- p5 is already full p5 is deleted from s5s list
?
?
?
?
?
?
48Example SPA-P instance
- Student preferences Lecturer preferences
Lecturer capacities - s1 p1 p2 p6 l1 p3 p1 p2
p4 3/3 - s2 p1 p4 Project capacities 1/1 2/2
0/2 0/1 - s3 p1 p2 p5
- s4 p3 l2 p5 p6 1/3
- s5 p3 p5 Project capacities 1/1
0/2 - s6 p5 p3 p6
- s6 applies to p5
- p5 is already full
?
?
?
?
?
?
49Example SPA-P instance
- Student preferences Lecturer preferences
Lecturer capacities - s1 p1 p2 p6 l1 p3 p1 p2
p4 3/3 - s2 p1 p4 Project capacities 1/1 2/2
0/2 0/1 - s3 p1 p2 p5
- s4 p3 l2 p5 p6 1/3
- s5 p3 p5 Project capacities 1/1
0/2 - s6 p5 p3 p6
- s6 applies to p5
- p5 is already full p5 is deleted from s6s list
?
?
?
?
?
?
?
50Example SPA-P instance
- Student preferences Lecturer preferences
Lecturer capacities - s1 p1 p2 p6 l1 p3 p1 p2
p4 3/3 - s2 p1 p4 Project capacities 1/1 2/2
0/2 0/1 - s3 p1 p2 p5
- s4 p3 l2 p5 p6 1/3
- s5 p3 p5 Project capacities 1/1
0/2 - s6 p5 p3 p6
- s6 applies to p3
- p3 is already full
?
?
?
?
?
?
?
51Example SPA-P instance
- Student preferences Lecturer preferences
Lecturer capacities - s1 p1 p2 p6 l1 p3 p1 p2
p4 3/3 - s2 p1 p4 Project capacities 1/1 2/2
0/2 0/1 - s3 p1 p2 p5
- s4 p3 l2 p5 p6 1/3
- s5 p3 p5 Project capacities 1/1
0/2 - s6 p5 p3 p6
- s6 applies to p3
- p3 is already full p3 is deleted from s6s list
?
?
?
?
?
?
?
?
52Example SPA-P instance
- Student preferences Lecturer preferences
Lecturer capacities - s1 p1 p2 p6 l1 p3 p1 p2
p4 3/3 - s2 p1 p4 Project capacities 1/1 2/2
0/2 0/1 - s3 p1 p2 p5
- s4 p3 l2 p5 p6 2/3
- s5 p3 p5 Project capacities 1/1
1/2 - s6 p5 p3 p6
- s6 applies to p6
- p6 remains under-subscribed l2 remains
under-subscribed
?
?
?
?
?
?
?
?
53Example SPA-P instance
- Student preferences Lecturer preferences
Lecturer capacities - s1 p1 p2 p6 l1 p3 p1 p2
p4 3/3 - s2 p1 p4 Project capacities 1/1 2/2
0/2 0/1 - s3 p1 p2 p5
- s4 p3 l2 p5 p6 2/3
- s5 p3 p5 Project capacities 1/1
1/2 - s6 p5 p3 p6
-
?
?
?
?
?
?
?
?
54Example SPA-P instance
- Student preferences Lecturer preferences
Lecturer capacities - s1 p1 p2 p6 l1 p3 p1 p2
p4 3/3 - s2 p1 p4 Project capacities 1/1 2/2
0/2 0/1 - s3 p1 p2 p5
- s4 p3 l2 p5 p6 2/3
- s5 p3 p5 Project capacities 1/1
1/2 - s6 p5 p3 p6
- Algorithm terminates with a stable matching of
size 5
55Example SPA-P instance
- Student preferences Lecturer preferences
Lecturer capacities - s1 p1 p2 p6 l1 p3 p1 p2
p4 3/3 - s2 p1 p4 Project capacities 1/1 2/2
0/2 0/1 - s3 p1 p2 p5
- s4 p3 l2 p5 p6 3/3
- s5 p3 p5 Project capacities 1/1
2/2 - s6 p5 p3 p6
- Stable matching of size 6
56Theoretical results
- Algorithm produces a stable matching, given an
instance of SPA-P - So every instance of SPA-P admits a stable
matching - Approximation algorithm has a performance
guarantee of 2 - Algorithm may be implemented to run in O(L) time,
where L is total length of the students
preference lists - The constructed matching admits no
exchange-blocking coalition
57A worst-case example
Student preferences Lecturer preferences s1 p1
p2 l1 p1 s2 p1 l2 p2 s3 p3 p4
l3 p3 s4 p3 l4 p4 s2n-1 p2n-1
p2n l2n-1 p2n-1 s2n p2n-1 l2n
p2n Each project and lecturer has capacity 1
58A worst-case example
Student preferences Lecturer preferences s1 p1
p2 l1 p1 s2 p1 l2 p2 s3 p3 p4
l3 p3 s4 p3 l4 p4 s2n-1 p2n-1
p2n l2n-1 p2n-1 s2n p2n-1 l2n
p2n Each project and lecturer has capacity
1 Students apply to projects in increasing
indicial order M1(s1, p1), (s3, p3), ,
(s2n-1, p2n-1), M1n
59A worst-case example
Student preferences Lecturer preferences s1 p1
p2 l1 p1 s2 p1 l2 p2 s3 p3 p4
l3 p3 s4 p3 l4 p4 s2n-1 p2n-1
p2n l2n-1 p2n-1 s2n p2n-1 l2n
p2n Each project and lecturer has capacity
1 Students apply to projects in decreasing
indicial order M2(s1, p2), (s2, p1), ,
(s2n-1, p2n), (s2n, p2n-1), M22n
60Open problems
- Improved approximation algorithm?
- Extend to the case where lecturers have
preferences over (student, project) pairs - E.g. l1 (s1, p2) (s2, p2) (s1, p3)
- Ties in the preference lists
- Lower bounds on projects