Let’s say you have four people running for mayor. Rachel, Ishmael, Quon, and
Gnome Ann. You ask all 60 people in the town to rank the candidates. You get
these results:

# Votes:

12

15

19

14

Best

R

G

I

Q

Good

G

R

R

G

Bad

I

Q

Q

R

Worst

Q

I

G

I

Who should win the election?

In common plurality rule, Ishmael would win. More people voted him best than
any other candidate. But 41 of the 60 people think he is bad or worst for mayor!
Maybe we should see if he really is the best candidate…

What if we did this: Assign a number to each ranking. Being best is 3 points,
being good is 2 points, being bad is 1 point, being worst is 0 points. Then
count up each candidates points and the largest number wins. Rachel has 12x3 +
15x2 + 19x2 + 14x1 = 118. Ishmael only has 69, Quon has 90, and Gnome Ann
has 97. Maybe Rachel deserves the seat.

Here’s another method to pick a candidate, it’s called Single Transferable
Vote. If more than half the voters rank the same candidate as best, then that
candidate wins. If no candidate reaches majority, then we kill the least
popular candidate. Here that’s Rachel. The new table looks like this:

# Votes:

12

15

19

14

Best

G

G

I

Q

Okay

I

Q

Q

G

Worst

Q

I

G

I

Gnome Ann still only has 27 out of 60 possible votes, so we kill another
candidate. Quon. We transfer his votes to Gnome Ann, she reaches a clear
majority with 41 votes, and wins the election.

We looked at the same votes and the same candidates with three different voting
schemes. How you analyze your votes matters.

Further Reading

CGP Grey has a great set of videos explaining problems with plurality rule and why single transferable vote is better

The Handbook of Computational Social Choice is a real book that really covers this and a lot more from a research perspective. Could be a fun project to code some algorithms from it.