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.