In 1962, David Gale and Lloyd Shapley asked the question: Could one design a college admissions process, or a job recruiting process, that was self-enforcing? Self-enforcing, in this case, means that a system based on self interest prevents offers from being retracted or rejected and thus causes a stable system. The question ended up being: “Given a set of preferences among employers and applicants, can we assign applicants to employers so that for every employer E, and every applicant A who is not scheduled to work for E, at least one of the following two things is the case : I. E prefers every one of its accepted applicants to A; or II. A prefers her current situation over working for employer E.

It is implemented as follows:

  Initially all m that are elements of M and w that are elements of W          are free.
  While there is a man m who is free and hasn't proposed to every woman
      Choose such a man m
      Let w be the highest ranked woman in m's preference list to whom m has not yet proposed
      If w is free then
          (m, w) become engaged
      Else w is currently engaged to m(prime)
          If w prefers m(prime) to m then
              m remains free
          Else w prefers m to m(prime)
              (m, w) become engaged
              m(prime) becomes free
  return the set S of engaged pairs

This runtime in worst case is O(n^2), because the while loop runs through both all men and all those men's preferences - n * n.

Interestingly enough, every time this algorithm is run, it results in the same set S - that is, everyone is as happy as they could be according to their preferences.

This section was very interesting, giving quite a few new perspectives on problems faced in algorithm design. 8.5/10

courses/cs211/winter2014/journals/stephen/home/chapter-1.1.txt · Last modified: 2014/01/14 01:28 by rowleys
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0