```Administrative info
HW2 due tomorrow!
PA1 due Friday!

Review
So far, we've seen how to express statements precisely using
propositional logic.

Once we knew how to express a statement, we were then interested in
how to prove that a statement is true or false. We saw many
different types of proofs: direct, contraposition, contradiction,
cases, simple induction, and strong induction.

Now that we know how to prove facts, the next step is to be able to
look at actual algorithms and prove facts about them. In this class,
we will look at one algorithm in particular that has many
applications in the real world. It is used by some dating services,
to match medical interns to hospitals, to match jobs to web servers,
to match organ donors to recipients, and so on. Essentially, the
algorithm can be applied to match a set of one type of item to a set
of another type of item.

Note that while the algorithm we will look at is important in and of
itself, the main reason we are looking at it is to demonstrate how
the proof techniques we have learned can be applied to reason about
computer science algorithms in general.

Problem statement
Suppose we have a small town of n single men and n single women.
They all know each other, and they all are looking for love, so
naturally, each of them has formed a set of preferences ranking the
members of the opposite sex. Each preference list contains every
member of the opposite sex, with no ties in the list.

How should we match the men and women?

I don't know what the best criteria are, but at a minimum, we have
to ensure that there are no mutual love affairs; in other words, we
do not want there to be a man and a woman who aren't paired but like
each other more than their partners. If this happens, then
eventually, the two of them will run off with each other, causing a
great scandal which we don't want in our small town.

Here is an example. Suppose we have the following matching:
BillyBob ---- Angelina
Now suppose they had the following preference lists:
BillyBob: Angelina > Jennifer
What do you suppose will happen? Brad and Angelina will start spending
more and more time with each other instead of their partners, until
one day they decide to run off together.

We call Brad and Angelina a "rogue couple." Any pairing that has a
rogue couple is doomed to failure, since the rogue couple will
eventually become dissatisfied with their own partners and run off
for a better life together.

Thus, at the minimum, we want a pairing with no rogue couples. Such a
pairing is called "stable."

Our problem is to find a stable pairing given n men and n women and
their preference lists.

But wait! We don't even know whether a stable pairing always exists!
In fact, of we were looking at forming pairs out of a single set of
people (e.g. roommates), we could demonstrate that no stable pairing
exists.

We will demonstrate an algorithm for the problem and show that it
always produces a stable pairing. Thus, a stable pairing always
exists. (Proof by algorithm!)

Tranditional Marriage Algorithm
Our algorithm is based on a model of dating you might see in a movie
for the 1950s, hence the name "Traditional Marriage Algorithm."
Here's how it works:
- Each morning, each boy stands under the balcony of his favorite girl
whom he hasn't yet crossed off his list and declares his love for
her (think Romeo and Juliet!). If there are no girls left on his
list, he stays home and does CS70 homework.
- Each afternoon, every girl who has at least one suitor outside
serenading her under her balcony picks her favorite from among
them. She tells everyone else, "No, I will never marry you!" She
tells here favorite, "Maybe; ask me again tomorrow."
- Each evening, every boy who is rejected and dejected crosses the
girl who rejected him off his list.
The algorithm stops one every girl has at most one suitor, and each
girl is paired off with her current suitor.

Example:
Angie: Nate > Max > Oscar
Betty: Max > Nate > Oscar
Carol: Max > Nate > Oscar
(Poor Oscar! Maybe if he wasn't such a grouch?)
Max: Angie > Betty > Carol
Nate: Betty > Angie > Carol
Oscar: Angie > Betty > Carol

On first day:
Angie: Max, Oscar propose
Betty: Nate proposes
Carol: stays home and washes her hair

Angie tells Oscar, "I won't marry you, but we can be just
friends..." She tells Max, "I need some more time to think about
it. Come back tomorrow."
Betty also stalls with Nate.

On second day:
Angie: Max proposes (again)
Betty: Nate, Oscar propose
Carol: orders out for pizza

Betty tells Oscar, "I'm sorry. It's not you, it's me." She once
again tells Nate that she needs more time.

On third day:
Angie: Max proposes (again)
Betty: Nate proposes (again)
Carol: Oscar proposes

We're done! Time for the party...

First question: does TMA always terminate, or is poor Max condemned
to do his best Sisyphus impression and propose to Angie every day
for the rest of his life?

Theorem: TMA terminates within n^2 + 1 days.
Proof: On any day that TMA doesn't terminate, there must be at least
one girl with at least two suitors. Then she rejects at least one,
who crosses her off her list. So on each day that TMA doesn't
terminate, at least one girl gets crossed off one list. Since
there are only n^2 list entries to cross off (n entries for each
of n boys), there can be at most n^2 days before which TMA
terminates.

Does everyone end up with a partner? In order to answer this, let's
first show the following:

Improvement Lemma: If a woman W says "Maybe" to man M on jth day,
then on every subsequent day she will say "Maybe" to a man she
likes at least as much as M.
(Intuitively, she only rejects M if someone better comes along, so
she only trades upwards on her preference list.)
Proof: By induction on the day k, k >= j.
Base case: Man chosen on day j at least as good as man on day j.
Obviously true!
Inductive hypothesis: Man chosen on day k at least as good as M.
Inductive step: On day k+1, the man chosen on day k will come back
and propose to W again. Since W chooses her best suitor, she will
choose someone at least as good as the man from day k. Since this
man is at least as good as M (by inductive hypothesis), she
chooses someone who is also at least as good as M.

Corollary: Every woman will marry her favorite of all the men who
ever propose to her.

Lemma: No man can be rejected by all the women.
Proof: Suppose poor Oscar is rejected by every woman. This means
that he proposed to each woman at some point. Each of these women
rejected him for someone better, so by the improvement lemma, they
each end up with someone better than Oscar. But since there are n
women, that means that there must be n men other than Oscar, or
n+1 total, which is a contradiction!

Corollary: TMA terminates with a complete pairing.

Now we prove that the output of TMA is always stable.

Theorem: TMA outputs a stable pairing.
Proof: Consider an arbitrary couple (Jacob, Renesmee) in the pairing
produced by TMA. Suppose that Jacob prefers some woman Bella to
his partner Renesmee. Thus, he must have proposed to Bella before
settling for Renesmee, who rejected him for someone better (say
Edward). By the improvement lemma, Bella must end up with someone
she likes at least as much as Edward, so she ends up with someone
she likes more than Jacob. Thus, Jacob and Bella cannot be a rogue
couple.

We have now seen that not only does TMA produce a pairing, but it
produces a stable pairing. How many stable pairings are there for a
particular set of men and women and preferences? It turns out that
there may be more than (see reader for an example). The obvious
question then is, which one does TMA produce?

Let's consider all stable pairings and define the "optimal" woman
for man M to be his favorite partner from among all those stable
pairings. Similarly, his "pessimal" woman is his least favorite
from among those pairing. We can define each woman's optimal and
pessimal man in the same way.

Then if a stable pairing exists in which every main is paired to his
optimal woman, we call this pairing "male-optimal." We can similarly
define a "male-pessimal" pairing.

Question: What pairing do you imagine TMA produces?

It turns out that TMA always produces a male-optimal pairing!
Proof: Suppose for the sake of contradiction that the output of TMA
is not male-optimal. This means that at some point, there is a man
who is rejected by his optimal wife. Let's consider the first
instance in which this happens. Let's call the rejected man Jacob,
the woman who rejected him Bella, i.e. Jacob's optimal woman, and
Edward the man whom she rejected Jacob for. Thus, Bella likes
Edward > Jacob. Now since Jacob was the first to be rejected by
his optimal woman, we know that Edward likes Bella at least as
much as his optimal woman, and in fact, any woman who he is paired
with in a stable pairing. But if Jacob were matched with Bella in
a stable pairing, then Bella -- Edward would be a rogue couple,
since Bella likes Edward > Jacob and Edward likes Bella better
than the woman whom he is matched with. Contradiction!

OK, that covers the men. What about the women? Do they get it good

Theorem: Any male-optimal pairing is female-pessimal.
Proof: Let T by the male-optimal pairing, and consider an arbitrary
couple (John, Jennifer) in T. Now consider any stable pairing S in
which John and Jennifer are paired with someone else, say (John,
Jessica), (Vince, Jennifer). Since T is male-optimal, we know that
John prefers Jennifer > Jessica. Since S is stable, we know that
(John, Jennifer) is not a rogue couple, so Jennifer must prefer
Vince > John. Thus, Jennifer prefers S to T. Since we made no
assumptions about S, she must prefer any other stable pairing to
must prefer any other stable pairing to T.

Application
Hospital/intern matching
- Each hotel has a specified number of slots to fill. Hospitals
prefer most qualified students, students preferred hospitals in
favorable locations.
- Intern salary and working conditions are standardized.
- In 1940s, hospitals began to compete by sending out offers earlier
and earlier to students. Eventually it got to the point where some
students were being asked to commit to a hospital in their junior
or even sophomore year, and getting worse. Crazy.
- Led hospitals to adopt TMA for matching students to hospitals.
- Hospitals used to use TMA in hospital-optimal form, until very
recently; now they use TMA in student-optimal form. As it turns
out, hospital- vs intern- optimal doesn't matter much in that
application.
- Some speculation that "the match" might be contributing to low
salaries, because students don't have the option to say that
they'd accept a lower-preference location in exchange for a higher
salary.

Why did I show you this?  It's an example of applying proof techniques
to analysis of algorithms and processes.

```