While I prefer utilitarian methods, if I had to chose a Condorcet method, I
would prefer a Condorcet method that at least passes FBC.
Warren, as you describe on your site (
https://www.rangevoting.org/VenzkePf.html),
Kevin Venzke proved why it is impossible for even Condorcet methods
that include equal preferences to pass the favorite betrayal criterion.
However,
there is a loophole. He did not prove that all Condorcet methods that
include strategically omitted preferences to pass the favorite betrayal
criterion. There is a difference between an equal preference, and a
strategically omitted preference.
The
definition of a Condorcet winner is a candidate that will win a head to
head runoff to any other candidate. This means that if voters vote as
such:
A > B
A > B
A = B
B = A
B > A
A
would be the Condorcet winner because in a head to head runoff, A would
get 2 votes, B would get 1 vote, and 2 voters would abstain. However,
if voters voters instead voted this way:
A > B
A > B
A ? B
B ? A
B > A
Then
A is no longer guaranteed to be a Condorcet winner because we don't
know how A ? B voters would vote in a head to head runoff between A and
B.
By using ballots in which voters can
omit preferences instead of submitting equal preferences, we can give a
semi-Condorcet method enough flexibility to pass the favorite betrayal
criterion.
Consider the fallowing 3 candidate voting method:
Compare(A, B) = voters who rank A higher then B
+ voters who omit a preference between A and B but rank both of them
above the third candidate C - voters who omit a preference between A and
B but rank both of them below the third candidate C - voters who rank B higher then A.
Note that Compare(A, B) ≠ -1 * Compare(B, A)
Elect
the candidate with the maximum minimum value produced from comparing
that candidate to other candidates with the compare function.
This
method is essentially mini-max but with a twist: when determining what
candidate X's worst defeat is, all ballots that that list X as a
possible favorite are temporally converted into ballots in which X is a
definitive favorite, and all ballots that that list X as a possible
least favorite are temporally converted into ballots in which X is a
definitive least favorite.
So, when calculating A's worst defeat
A ? B > C
and
A ? C > B
ballots are temporarily converted into
A > B > C
ballots. Similarly,
C > B ? A
and
B > C ? A
ballots are temporarily converted into
C > B > A
and
B > C > A
ballots.
Because
voters who prefer A but don't want to hurt B can omit their preferences
between A and B such that ranking A higher then B doesn't help A defeat
any non-B candidate anymore then omitting a ranking between the two
would help A defeat that candidate, this method passes the favorite
betrayal criterion. It also passes the anti-favorite betrayal criterion
for similar reasoning.
But is it a Condorcet
method? Well, technically it isn't because approval voting also has
omitted preferences and it isn't a Condorcet method. However unlike
approval voting, it does not require the user to submit omitted
preferences, so I shall refer to it as a semi-Condorcet.
While
it passes some impressive criteria for a rank ordinal method (fav
betrayal and anti fav betrayal), it is not yet defined however for
elections with more then 3 candidates, because in those elections, the
current algorithm breaks down. Consider that a voter votes:
A > B ? C > D
How shall this vote be counted when calculating B's minimum maximum defeat?
Like this? A > B > C > D
Or like this? A > C > B > D
It
is not clear whether the voter wants to maximize or minimize B's
minimum maximum defeat. If we define it one way, we lose the favorite
betrayal criterion, and if we define it the other way, we loose the
anti-favorite betrayal criterion.
So in order
to not lose FBC or anti-FBC, we need an entirely new algorithm that
reduces to the old algorithm in the 3 candidate case. Consider the
fallowing n candidate voting method:
Quality(candidate X, [list of candidates], ballots)
{
1.
If there are only 2 candidates in the list of candidates, return the
number of X > Y (other candidate) and X ?+ Y ballots minus the number
of X < Y and X ?- Y ballots.
2. ballots = clone(ballots)
3. remove all the candidates not in the list of candidates from the ballot
4. for each ballot, replace the ? signs between candidates tied for possible favorite on a given ballot with ?+ signs
5. for each ballot, replace the ? signs between candidates tied for
possible least favorite on a given ballot with ?- signs
6. return min( Quality(X, [list of all candidates from previous
list except the first non-X candidate], ballots), Quality(X, [all but the second
non-X candidate], ballots), ... )
}
Elect
the candidate with the highest value of Quality(that candidate, [list
of all candidates in the race], ballots)