Hacker News new | ask | show | jobs
by tzs 3107 days ago
Interesting idea. It has a some troubling flaws, though.

First, in order to make the lockout in #5 work it would seem that the votes need to be tallied in real time as they are cast.

This could be addressed in a couple of ways.

(A) Allow votes of the form:

  Vote for candidate C1
  If C1 is locked out, vote for C2
  If C2 is locked out, vote for C3
  ...
That would allow processing votes in batches, ordered by time stamp.

(B) Instead of a lockout, allow a candidate to receive more votes than the #voters/#congresspeople threshold. Each voter starts with a weighted vote with weight 1, and provides a list of alternative candidates similar to from (A).

If C1 gets a total weighted vote above the election threshold, choose t such that if each voters weight is multiplied by t the total for C1 will exactly equal the threshold.

For each C1 voter, split their vote giving t of it to C1, and 1-t of it to their C2.

Iterate through this until it converges. (I think it must converge, but offhand do not have a proof).

Second, you need to know the number of voters in advance to set the threshold. Note that you need the actual number of people who will vote, not just the number of eligible voters, because if you use the later you will be setting the threshold too high.

Third, if the number of people running is large, it is quite possible nobody reaches the election threshold. You need a procedure to whittle down the number of candidates.

1 comments

Congratulations, you've just devised the single transferable vote used in Ireland, Malta and Australia. Assuming that "the procedure to whittle down the number of candidates" is "exclude the worst-performing candidate and continue to their C2".