# IRV Prime

**IRV Prime** is a voting method variation of instant-runoff voting (classic IRV) developed by Marcos Boyington that selects a single winner using votes that express each voter's order of preference, like IRV. It is a generalization of Condorcet IRV that works when there is no Condorcet winner.

Classic IRV eliminates candidates which had a chance of winning the election while preserving candidates that will lose. IRV Prime finds every candidate which has a chance of winning (candidates in the Schwartz set) & eliminates candidates we know won't win (those losing in the final round).

## Procedure[edit | edit source]

- Find the instant-runoff voting (IRV) winners using the classic/standard rounds, where the candidate with least votes is eliminated & their votes redistributed (call this set
*Winners*) - Find the candidates which satisfy the Schwartz set
- Re-run the IRV election once for each candidate in the Schwartz set, preserving that candidate as well as all candidates in
*Winners*set; each candidate in the Schwartz set which defeats one of the*Winners*is added to the*Winners-Prime*set. - Re-run the IRV election preserving all
*Winners*and all*Winners-Prime*, proceeding with normal elimination when they are all that remain

Note that using the Schwartz set is simply to reduce the number of rounds; the results are the same if the set of all candidates or the Smith set is used instead.

### Algorithm[edit | edit source]

GetWinner(NumWinners, PrefSchedule) { // Step 1: Classic IRV, find classic winners RemainingCandidates = PrefSchedule while (RemainingCandidates.Length > NumWinners) { RemainingCandidates = RemainingCandidates.EliminateLeast() } Winners = RemainingCandidates.TopCandidates(NumWinners) // Step 2: Build round where only candidates remaining are // classic winners & schwartz set PrefMatrix = getPreferenceMatrix(PrefSchedule) SchwartzSet = getSchwartz(PrefMatrix) Keepers = union(Winners, SchwartzSet) PrimeRound = PrefSchedule.EliminateAllExcept(Keepers) // Step 3: Find candidates who can win against classic winners WinnersPrime = {} for (S in SchwartzSet) { Keepers = union(S, Winners) PossibleWinner = PrimeRound.EliminateAllExcept(Keepers) WinnersPrime = union(WinnersPrime, PossibleWinner.TopCandidates(1)) } // Step 4: Run final round from prime round eliminating all who // lose against classic winners RemainingCandidates = PrimeRound.EliminateAllExcept(union(Winners, WinnersPrime)) while (RemainingCandidates.Length > NumWinners) { RemainingCandidates = RemainingCandidates.EliminateLeast() } return RemainingCandidates.TopCandidates(NumWinners) }

## Proof of failing later-no-harm[edit | edit source]

Consider the following votes:

102 A 101 B 100 C 5 A>B>C 5 B>C>A 5 C>A>B

A wins IRV (after C is eliminated)
The Schwarz set is {ABC}
A wins AB. C wins AC. So, WinnersPrime is {AC}.
C wins {AC}
Thus, C is overall winner.

....

Now, some C voters add a later preference:

102 A 101 B 100 C>B 5 A>B>C 5 B>C>A 5 C>A>B

B wins IRV (after C is eliminated). The Schwarz set is B. So B wins overall. This violates later-no-harm.

## An example[edit | edit source]

Imagine the following vote preferences:

Preference | Number of Votes |
---|---|

L, CR | 47 |

R, CR | 39 |

R | 5 |

CR, R | 5 |

Resulting in the following preference matrix:

Candidate Preference | R | CR | L |
---|---|---|---|

R over | 39 | 45 | |

CR over | 52 | 44 | |

L over | 47 | 47 |

In instant-runoff voting, R is elected as CR is eliminated:

Candidate | Votes |
---|---|

R | 49 |

L | 47 |

In RCV Prime, because L does not end up in *Winners-Prime* but CR does, the final round instead looks like:

Candidate | Votes |
---|---|

CR | 52 |

R | 49 |

And CR wins with a larger majority than the candidate that would win with IRV

## Strategy[edit | edit source]

Voters are left with only a single honest rank strategy to best serve their favorite candidate while minimizing the possibility of getting a less preferred candidate:

1-3) Favorite candidates 4) Favorite frontrunner (if not already covered in 1-3) 5) Least-hated who is a frontrunner with opposing views

This voting strategy guarantees that a voter's favorite candidate will win if they are preferred by the largest number of voters; it also guarantees that if those candidates cannot win (do not have the largest number of voters), that a preferred candidate will win as long as they have the largest number of voters.

## Comparison to cardinal systems[edit | edit source]

*See also: Left, Center, Right*

Cardinal methods always pick the utilitarian winner (B in the example below) even in theoretical scenarios where that candidate is never preferred:

Preference | Number of Votes |
---|---|

Group 1 (C > B > A) | N |

Group 2 (A > B > C) | N + 1 |

In this theoretical example, IRV Prime would pick A. In practice, however, a non-0 percentage of voters will rank B first. As long as C and B voters combined have more voters, the method will pick the utilitarian winner since it is a Condorcet method.