Beat-Path algorithm
Blake Cretney
bcretney at my-dejanews.com
Tue Sep 29 15:24:57 PDT 1998
Here is my attempt at an algorithm for calculating the best beat
path values, as used in methods such as Schulze.
I am assuming this is still an open question.
Start with a matrix M[n][n] This matrix should either have the
margins of victory, or the number of votes on the winning side,
depending on your point of view. Both should have MAXVALUE along
the i=j diagonal.
I have presented it as a C code fragment.
dirty=1;
while(dirty) { /* check if change made */
dirty=0;
for(i=0;i<n;i++) { /* each row */
for(j=0;j<n;j++) { /* each column */
for(k=0;k<n;k++) { /* column in corresponding
candidate's row */
int s=min(M[i][j],M[j][k]);
/* combined path has the
minimum strength of its
components */
if(s>M[i][k]) { /* found a better path */
M[i][k]=s;
dirty=1;
}
}
}
}
}
The idea is simply to find obvious beat-path improvements until
M holds the best beat paths.
This is a polynomial-time algorithm since
1. The for loops all have polynomial bounds
2. The while loop can only continue as changes are made
There are only n^2 cells, and they can only be changed to greater
values existing in the matrix. Since there can only be n^2 such
values, n^4 is an obvious upper bound for the while loop.
So, the whole thing is polynomial-time.
-----== 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