CS 70
Discrete Mathematics for CS
Spring 2008
David Wagner
Note 8
Cake Cutting and Fair Division Algorithms
The cake-cutting problem is as follows. We have a cake, to be shared among
n
of us, and we want to split
it amongst themselves fairly. However, each person might value different portions of the cake differently.
(I like flowers; you hate them. I hate icing; you prefer it.) What’s worse, everyone is greedy and will try
to end up with as much cake if they can do so without noticeably deviating from the rules of the game.
Nonetheless, we want some way to split the cake that everyone will agree is fair. What can we do?
First, let’s try to make the problem statement more precise. We assume that each person has their own
measure of the value of parts of the cake. If
X
is one of the participants, and
S
represents a portion of the
cake, let
m
X
(
S
)
denote the value that
X
associates to
S
. We will assume that 0
≤
m
X
(
S
)
≤
1, that measures
are scaled so that every person values the whole cake at exactly 1, and that measures are additive, so that
m
X
(
S
∪
T
) =
m
X
(
S
)+
m
X
(
T
)
if
S
,
T
are two disjoint pieces of the cake. Each participant knows their own
measure, but not necessarily the measure of anyone else (we can’t read other people’s minds).
A cake-cutting protocol specifies how each of the
n
participants is supposed to behave. Each participant
might follow the protocol, or he might deviate from the protocol if the participant thinks he can get more
cake by deviating. We assume that no participant will behave in a way that detectably deviates from the
protocol (for instance, no participant will just grab the whole cake and run away with it), perhaps for fear of
retribution. However, if a participant can behave in a way that appears to everyone else to follow the protocol,
but actually deviates from the protocol, then a participant might well do so. We classify a participant as
honest
if she follows the protocol, or
dishonest
otherwise. Of course, there is no way for any participant to
know which of the other participants may be honest or dishonest.
First, we need to define what we mean by “fair.”
Definition.
A cake-cutting protocol for
n
participants is
fair for X
if the following property is true: If par-
ticipant
X
follows the protocol, then
X
is guaranteed to receive at least 1
/
n
-th of the cake (by
X
’s measure),
no matter what happens. A cake-cutting protocol is
fair
if it is fair for every participant.
In general, we will try to ensure that honest participants receive their just desserts; but dishonest participants
are not promised anything. In other words, a fair cake-cutting protocol is supposed to ensure that each honest
participant receives a piece of the cake that he thinks is worth at least 1
/
n
, by his own measure.
Here is a simple and classic protocol for splitting a cake between