[EM] extending fpA-fpC

Kevin Venzke stepjak at yahoo.fr
Sat Dec 26 13:25:43 PST 2020

Hi Kristofer,

Le jeudi 24 décembre 2020 à 20:56:20 UTC−6, Kristofer Munsterhjelm <km_elmet at t-online.de> a écrit : 
>About fpA-fpC, one way to get an idea of what a four-candidate fpA-fpC
>method may be like could be to investigate elections where clone
>independence demands that some candidate wins (e.g. you can get to the
>election by cloning A, and B wins in the original three-candidate
>fpA-fpC election; then A must win in the new election).
>One of the problems of extending fpA-fpC is that there's no obvious
>cloneproof way to do first preferences (apart from DAC/DSC). Perhaps
>such "clone continuations" could give some ideas.
>(But fpA-fpC could also be an uncontinuable dead end. I'll have to check
>when I get more RAM to run my manipulability simulations on.)

I took a look at this problem. You can use a different route to get to the same 3-candidate scores, while trying to make sense of what the fpA-fpC metric represents. I think it's a measure of doubt as to whether the A>B win is genuine. An A-top ballot is definitely a genuine expression of A>B. A C-top ballot may not be. A B-top ballot is irrelevant. (A C>A=B or C>B>A vote would also be irrelevant. There could be a possible refinement to be found in this point, though so far I haven't had much luck.)

My best attempt to extend the method has better monotonicity than C//IRV, has a few Plurality failures, and appears to satisfy Schwartz without imposing it explicitly... I'm not sure if that's correct though. It could be that with a large number of candidates it becomes possible to make a scenario that fails Schwartz.

Here is the definition:

Define singlescore(a,b,c) like this:
If candidate C doesn't beat A, return positive infinity.
Otherwise, return:
( number of votes preferring A to both of B and C ) minus ( number of votes preferring C to both of A and B).

Define combinedscore(a,b) like this:
The lowest possible singlescore(a,b,x) where a/b/x are distinct candidates.
If there are no values to consider, return positive infinity.

Define winscore(a,b) like this:
Undefined if A doesn't beat B pairwise. Otherwise combinedscore(a,b).

Define candidatescore(a) like this:
The greatest value of winscore(a,x) given some other candidate x.
If there are no values to consider, return negative infinity.

Elect the candidate with the greatest candidatescore.

There are perhaps some options available to change whether min or max is used in various places, but the above seemed to work the best. For example combinedscore could return the *greatest* value (though this seems illogical to me), and the candidatescore could use the *least* value of winscore as the measure of a candidate.

I originally intended to run the scored contests through the River mechanism, but that doesn't match how fpA-fpC simply elects the candidate with the best score. My extension interprets the score to belong originally to a contest, not the candidate. There could be implications for clone independence and Plurality.

The Plurality failures aren't common, but here is an example of one:
0.331: D
0.307: B>C
0.270: C>A
0.089: A

All candidates are in Schwartz. There are only a couple of positive singlescores: singlescore(b,c,a) is the highest (signifying that the B>C win was not fabricated by A voters, who don't even express it), followed by (d,b,c) indicating that D>B was not fabricated by C voters. But none of the combinedscores are positive. The final candidate scores are:
B: -.024 for singlescore(b,c,d)
D: -.028 for ss(d,b,a).
C: -.037 for either (c,a,b) or (c,d,b)
A: -.181 for (a,b,c)

So B wins. The algorithm seems to get lost in specific details, I'd say, and doesn't really assess candidates' overall merit. But maybe there's a way to redesign it.


More information about the Election-Methods mailing list