Negative vote-counting approach for pairwise counting


As an example, suppose there are 10 candidates, and a voter votes A>B. In the usual pairwise counting approach, 9 markings are made to indicate A’s dominance over 9 other candidates on this voter’s ballot, and likewise 8 for B. But note that because A is this voter’s 1st choice, we could’ve simply said “A is 1 voter’s 1st choice”, and then at the central vote-counting place, they can simply “unpack” this to put 1 vote in every matchup A has against other candidates. Note that this naturally allows you to handle write-in candidates.

This approach can be generalized to handle 2nd choices as well: ignoring A, B is this voter’s 1st choice. So the same trick can be applied to B. To prevent A and B from simultaneously getting votes against each other in the A vs B matchup, the precinct vote-counters can put a “negative vote” in the B>A side of the matchup. When the central vote-counters unpack B’s 1st choice support, this will result in the negative vote and the 1st choice support cancelling each other out, leaving only 1 vote for A>B and 0 for B>A. Note that this only required 3 markings, as opposed to 17.

A small issue is if the voter votes A=B; this could mean 1 vote is added to both A>B and B>A, resulting in no change in the margin between the two candidates (good) but a change in the “winning votes” totals for each candidate (potentially bad). So if you want perfectly accurate vote totals, you have to subtract one vote on both sides of this matchup, either by manually putting a negative vote for both sides (2 markings), or making some special marking which indicates the same (1 marking).

See https://electowiki.org/wiki/Pairwise_counting#Negative_vote-counting_approach.

Hi AVA, this is an interestiing idea, though as noted in your electowiki write-up, it is more beneficial when there are many candidates and ballots generally rank only a few. When most ballots rank most candidates, the work is similar, because you have to keep as many negative pairwise votes looking upward in the ranking as you have looking downward in the ranking with the standard scheme. And in fact, if accurate count is required, an additional ranked-above-bottom-and-tied pairwise array would be required.

Regarding write-in candidates, I think the extra ranking work would be similar – in practice, only approval of a write-in would be noted to avoid having to add row/columns to the pairwise array as the precinct count was proceeding, then a recount would be held once all write-ins were found and one of them had approval over some threshold.

However, I think the idea has definite merit, and my own opinion is that voters will likely rate fewer than the entire range of candidates and there would be some cost savings. I also am interested in methods that keep track of tied above-bottom rankings as well.

In fact, if you combine the two approaches, I think you can get roughly a halving of the number of marks required to count ballots that sequentially rank every candidate. This is because when, say, a voter ranks a candidate one rank above last, that can be counted with one positive pairwise vote for that candidate against the last-place candidate, rather than negative pairwise votes against every candidate other than these two along with the mark to indicate that this candidate is ranked by the voter.

In fact, if you combine the two approaches, I think you can get roughly a halving of the number of marks required to count ballots that sequentially rank every candidate. This is because when, say, a voter ranks a candidate one rank above last, that can be counted with one positive pairwise vote for that candidate against the last-place candidate, rather than negative pairwise votes against every candidate other than these two along with the mark to indicate that this candidate is ranked by the voter.

If I understand you correctly, you’re saying to accumulate two pairwise arrays:

Negative preference array for scores in the top half of the ranking, plus positive preference array for scores in the bottom half of the ranking.

And you still have to include a Ties array for equal ranking above last.

This is still a lot of complexity per ballot. In my own codes, the pairwise update is easily done using a matrix outer product. I guess you’re looking to make hand-counting easier?

1 Like