Imagine that all students are assigned dorm rooms in some ad-hoc
way. After each one has a room, two students might find that they both
prefer the room the other one has, thus they could switch rooms and
both be happier. Similarly, three students (A,B, and C) might find
that A prefer's B's room, B prefers C's room, and C prefers A's
room. These three students might also trade rooms in a cycle. This can
go on for even larger cycles. But, how do we find these
cycles?
A very simple algorithm, proposed back in the seventies, is to have
each agent point to its most preferred choice. If the resulting graph
has any loops (it will) then all the agents in the loops exchange
rooms and drop out of the game. The remaining agents then point to
their most preferred room and we repeat the process until there are no
more agents left.
I have implemented a simple demonstration of this top
trading cycle algorithm using a simple distributed cycle detection
protocol. Its fun to watch!
Putting the magic in the machine since 1980.