# [EM] Fwd: Ranked Pairs

Richard, the VoteFair guy electionmethods at votefair.org
Mon Sep 25 20:31:18 PDT 2023

```On 9/24/2023 1:31 PM, Colin Champion wrote:
> Kevin – I'm not sure if you're right about IRV. If someone votes A=B>C,
> I'd attribute half a first-place preference to each of A and B. I don't
> know what other people would do.
>     Colin

Under IRV another counting option is to pair this same-rank ballot
(A=B>C) with another ballot that also reaches the counting round where
the same two candidates (A and B) are top ranked (after ignoring any
higher-ranked candidates who have been eliminated).  Then one of the two
ballots goes to one of the two candidates and the other ballot goes to
the other candidate.

Of course mathematically this is equivalent to splitting each ballot
into 0.5 votes for candidate A and 0.5 votes for candidate B.  However
this decimal interpretation violates what many non-math-savvy voters
would regard as a violation of "one person one vote."  So academic
testing software can use the easier-to-code decimal numbers.  But for
real certifiable election software the non-ballot-splitting method would
be easier to understand as fair.

Detail:  When a ballot can't be paired with a pattern-matching ballot,
that ballot is ignored.  This is equivalent to the decimal option with
rounding non-integer numbers down to the nearest integer.

Of course the pairing concept can be extended to any number of
candidates -- 3, 4, etc. -- being ranked at the same choice level.
However, beyond about 5 or 6 this approach consumes too much memory
because every possible "pairing" must be tracked.  To avoid this issue I
think it's reasonable to have a rule that says the ballot is set aside
until the number of currently same-ranked candidates is 5 or less.

This "pairing" option is what I coded here:

https://github.com/cpsolver/VoteFair-ranking-cpp/blob/master/rcipe_stv.cpp

It calculates these methods:

* RCIPE
* RCIPE STV.
* IRV (for comparison purposes only)
* STV

Richard Fobes
```