Goldfish (single-winner method)

Blake Cretney bcretney at my-dejanews.com
Tue Aug 25 21:43:54 PDT 1998


My previous posting turns out to be incorrect as an implementation of original Tideman.  However, I still like it better than Goldfish 0.2, so I am calling this algorithm Goldfish 0.3.  I also like it better than Tideman, and it passes the GMC test from the archive.  The arguments I made for GITC and MIIAC for Goldfish 0.1 still seem to hold here.  I think its probably a lot like Schulze, as I understand it.  I'm working on a proof or counter-example.

Here's the algorithm in almost pseudo-code form.  I resolve ties using the random ballot method I've been discussing.

Start with array (M) size nXn, where M[x][y] is the number of voters who chose x over y, if x beats y, otherwise 0.  Set M[j][j]=MAXINT, where MAXINT is any number higher than the number of votes.

Start with an array (D) size n, where D[j] is set to "false".  D stands either for Dead or Defeated.

While there is more than one undefeated candidate
FIND
1   Find the highest value in the matrix less than MAXINT, from among the rows for which D[i] is "false".  Call the cell containing this value ballot i,j.  If there is more than one such cell, arbitrarily choose one of those whose row appears first on the tie-breaking ballot.
KILL
2   Set D[j]=true, it might be already.
EAT, I also call this the merge step.
3   For k=1 to n, if M[i][k]<M[j][k] set M[i][k]=M[j][k]
That is copy all greater values in the losing row to the winning row.




-----== Sent via Deja News, The Discussion Network ==-----
http://www.dejanews.com/  Easy access to 50,000+ discussion forums



More information about the Election-Methods mailing list