Menu

A deterministic improvement to Hare-Clark Single Transferable Vote

Quick note: I’ve been redesigning this in my head and think I have a version that is both simpler and better. Alas what I don’t have is a keyboard. I’ll write up the improved version when I’m back. For now consider this inspiration rather than a good idea.

I was thinking about my problems with Meek’s method and trying to figure out a way around them when I accidentally hit on what might be a good idea. I don’t have time to sit down and work through the implications just yet, and I’m about to head off on a road trip without my laptop, so this is just me writing it down the details so that I don’t forget them.

It starts from Hare-Clark counting instead of Gregory counting: We don’t transfer fractional votes, but only ever transfer whole votes.

However unlike Hare-Clark it is not randomized but is in fact entirely deterministic modulo one detail (that one details is basically that when two candidates are clones of eachother you might have to break some ties arbitrarily).

For this purpose of this piece I’m assuming that ballots are total orders of all the candidates. This method could doubtless be adapted to handle incomplete ballots, but I’ve not thought through the details yet.

The key idea is this: We start by ordering the candidates according to some rank aggregation voting method. This can be more or less anything you want. It could even be completely random if you want, but you’re probably better off using Borda count or Borda majority judgement or something. All that matters is that you get a total ordering of the candidates though, and I’m not sure how much impact on the end result the specific ordering has. It is however essential for making the process deterministic: Once you have this ordering there is no further randomness involved.

We call a candidate more mainstream than another if they rank higher in this ordering. We call a voter more mainstream than another if on the first entry in their rankings that differs the first’s candidate is more mainstream (i.e. it’s the lexicographic order with respect to the candidate order). Given any two voters, either their ballots are identical or one is more mainstream than the other.

Now, the vote proceeds as follows:

At any given point, every vote is allocated to a single candidate. Initially start by allocating every vote to their first choice candidate.

Now we proceed to reallocate votes so that no candidate has more than the quota required for election allocated to them.

To do that, we go over each candidate in order of decreasing number of allocated votes, breaking ties by starting with the more mainstream candidate.

We will reallocate just enough of the candidate’s votes to try to give them exactly the quota of remaining votes (and we will succeed unless in the course of doing so some other candidate reaches quota) by removing the least loyal voter one at a time.

One voter is less loyal to a candidate than another in the following circumstances (the first one that applies wins):

If they rank the candidate they would transfer to higher than the other voter ranks the candidate they would transfer to (the candidate they transfer to is picked in the usual way – the highest rank candidate in their ballot that has not been disqualified and has not reached quota)

If they rank the current candidate lower than the other voter did

If they are less mainstream than the other voter

If neither voter is less loyal than the other then their ballots are identical so it doesn’t matter which one you pick.

For each vote in turn we transfer it to its next preference. If this causes that preference to reach quota we immediately stop, leave all the remaining votes where we are, and begin the process again from the beginning (this is because changing the set of candidates who have reached quota immediately redraws all the loyalty boundaries).

This process continues until all candidates have no more than the quota of votes allocated to them. If this results in all the seats being filled, stop. If it results in some vacancies, it’s now time to disqualify a loser.

The loser is the candidate with the fewest votes allocated. If multiple candidates have the fewest votes allocated, the loser is the least mainstream amongst them.

What happens now could go in various ways: You could either do a complete restart as per the Wright system (but note that I think that you probably should count disqualified candidates when considering ranks for loyalty). Another way that I think would work well is that you reallocate them to their first choice non-disqualified candidate even if that candidate is currently above quota. Votes will then get reallocated by the normal way as per above. This lowers the impact of tactical voting for spoilers in much the same way as the Wright system does but fits in better with how this system works (and is probably fractionally more efficient but I doubt that matters).

Anyway, that’s how the system works. I haven’t analysed it or written an implementation of it yet, but I suspect it’s actually rather good. I guess I’ll find out when I get back in a week or two.