election-methods@mailman.electorama.com

Technical discussion of election methods

View all threads

IRV counting with integers to handle multiple candidates at the same preference level

RT
Richard, the VoteFair guy
Thu, Jan 27, 2022 1:45 AM

I'd like to stop the misconception that IRV -- instant runoff voting,
also called "single-winner ranked choice voting" -- cannot allow a voter
to mark two or more candidates at the same preference level.

In particular, it's ridiculous that the FairVote organization promotes
the practice of tossing out a ballot when the counting reaches a
preference level where the voter has marked more than one candidate.

Although such shared preference levels are easy to handle using
fractions or decimals, that violates the common legal requirement that
votes be allocated to candidates in "whole" numbers.

Instead it can be done using only integers.  It just involves
"grouping."  Here's how:

When there are two ballots that rank candidates A and B at the same
preference level, one of the ballots is allocated to candidate A, and
the other ballot is allocated to candidate B.

When a third ballot with this preference is encountered, it's not yet
allocated.  Then when the fourth arrives the third and fourth ballots
(with this pattern) are allocated to the two candidates, with one ballot
going to each candidate.

When there are 379 ballots with this pattern, 378 will be allocated, and
only one ballot will be uncounted.  That's much better than tossing out
all 379 ballots.

It's that simple.

Writing the software is not difficult.  It just involves grouping
equivalent ballots together.  This grouping must be done separately for
each elimination round because the patterns change as candidates are
eliminated.

If anyone wants to know how the software can do this using only
integers, and simple C-language-like statements, just ask.  I've
implemented it in my vote-counting software on GitHub.

The importance of this issue goes beyond a voter not having a preference
between two (or more) candidates.

Most of us voters want to be able to mark a strongly disliked candidate
at the lowest preference level.  For example, imagine having 9
candidates and 6 ranking levels and strongly disliking candidate "I":

A > B > C+D > E > F+G+H > I

Not being able to rank candidate "I" at the lowest preference level is
unacceptable!  Yet that can't be done if IRV counting can't handle
shared preference levels.

(And having 9 preference levels for 9 candidates puts us on a slippery
slope to how to handle the 135 candidates in the infamous California
gubernatorial recall election.)

Keep in mind that the number of viable candidates in elections will
increase.  That's because vote splitting in general elections is what
caused political parties to limit themselves to just one nominee from
each party.  As more places adopt IRV and other better ranked-choice
methods, vote splitting won't be an issue.

There's yet another reason some political parties will need to offer a
second candidate.  It defeats the election tactic named "blocking."
That's the tactic of giving money to support a weaker candidate in a
primary election so that it's easier to defeat that party during the
general election.  A clear example happened in the 2008 U.S.
presidential election when Hillary Clinton was blocked from reaching the
general election partially because some Republicans gave money to Barack
Obama based on their expectation that he could not possibly win the
general election.

Another reason for political parties offering a second nominee is that
in a gerrymandered district (which applies to most U.S. federal and
state districts) the winner's party is pre-determined, so offering just
one nominee means the district's minority-party voters have no
meaningful choice in the general election.

(By the way, as pointed out in a recent article at the Center for
Election Science, this is why extremist candidates are getting elected
rather easily under our single-nominee election system.  They can get
elected with plurality support from less than half the dominant-party
voters, who themselves only need to be around 55 or 60 percent of the
district's voters.  The single-nominee rule means the extremist
candidate is virtually unopposed in the general election.)

(Of course defeating these tactics won't come from political parties,
and certainly won't come from government initiatives.  Yet ways to
defeat these unfair political-manipulation tactics are waiting to be
adopted.)

(BTW, tiny parties, with fewer than, say 15 percent of the voters
registered in that party, would only get one nominee.  Or they would be
allowed a second nominee when a big party fails to offer a second nominee.)

So, the increase in the number of party nominees, and hopefully an
increase in opposition parties, will increase the number of candidates.
This means the places that get stuck with IRV (in spite of much better
methods), should not also be stuck with ranking each candidate at a
different preference level.

Of course the FairVote organization avoids this fairer approach because
they're trying to use IRV as a stepping-stone to STV, and STV becomes
complex when voters mark ballots this way.  But it's time to reject the
unfairness of tossing out IRV ballots just because counting those
ballots under STV would become complex.

(Also, there are better STV-like methods that don't have the limitations
of STV.)

Now that discussions of IRV are increasing because of the proposed
"Forward Party" endorsing "ranked choice voting," those of us who
understand the math behind vote counting need to make it clear that IRV
does not have the shared-ranking limitation that FairVote imposes in
their certified software.

Probably all of you who write messages on this forum already understand
this concept.

Yet I'm hoping that those who only read this forum's messages will
understand that FairVote's claims (on their website and elsewhere) that
IRV ("single-winner RCV") cannot handle a voter marking more than one
candidate at the same preference level is a request to drink their
Kool-Aid, not an actual limitation in IRV.

Richard Fobes
The VoteFair guy

I'd like to stop the misconception that IRV -- instant runoff voting, also called "single-winner ranked choice voting" -- cannot allow a voter to mark two or more candidates at the same preference level. In particular, it's ridiculous that the FairVote organization promotes the practice of tossing out a ballot when the counting reaches a preference level where the voter has marked more than one candidate. Although such shared preference levels are easy to handle using fractions or decimals, that violates the common legal requirement that votes be allocated to candidates in "whole" numbers. Instead it can be done using only integers. It just involves "grouping." Here's how: When there are two ballots that rank candidates A and B at the same preference level, one of the ballots is allocated to candidate A, and the other ballot is allocated to candidate B. When a third ballot with this preference is encountered, it's not yet allocated. Then when the fourth arrives the third and fourth ballots (with this pattern) are allocated to the two candidates, with one ballot going to each candidate. When there are 379 ballots with this pattern, 378 will be allocated, and only one ballot will be uncounted. That's much better than tossing out all 379 ballots. It's that simple. Writing the software is not difficult. It just involves grouping equivalent ballots together. This grouping must be done separately for each elimination round because the patterns change as candidates are eliminated. If anyone wants to know how the software can do this using only integers, and simple C-language-like statements, just ask. I've implemented it in my vote-counting software on GitHub. The importance of this issue goes beyond a voter not having a preference between two (or more) candidates. Most of us voters want to be able to mark a strongly disliked candidate at the lowest preference level. For example, imagine having 9 candidates and 6 ranking levels and strongly disliking candidate "I": A > B > C+D > E > F+G+H > I Not being able to rank candidate "I" at the lowest preference level is unacceptable! Yet that can't be done if IRV counting can't handle shared preference levels. (And having 9 preference levels for 9 candidates puts us on a slippery slope to how to handle the 135 candidates in the infamous California gubernatorial recall election.) Keep in mind that the number of viable candidates in elections will increase. That's because vote splitting in general elections is what caused political parties to limit themselves to just one nominee from each party. As more places adopt IRV and other better ranked-choice methods, vote splitting won't be an issue. There's yet another reason some political parties will need to offer a second candidate. It defeats the election tactic named "blocking." That's the tactic of giving money to support a weaker candidate in a primary election so that it's easier to defeat that party during the general election. A clear example happened in the 2008 U.S. presidential election when Hillary Clinton was blocked from reaching the general election partially because some Republicans gave money to Barack Obama based on their expectation that he could not possibly win the general election. Another reason for political parties offering a second nominee is that in a gerrymandered district (which applies to most U.S. federal and state districts) the winner's party is pre-determined, so offering just one nominee means the district's minority-party voters have no meaningful choice in the general election. (By the way, as pointed out in a recent article at the Center for Election Science, this is why extremist candidates are getting elected rather easily under our single-nominee election system. They can get elected with plurality support from less than half the dominant-party voters, who themselves only need to be around 55 or 60 percent of the district's voters. The single-nominee rule means the extremist candidate is virtually unopposed in the general election.) (Of course defeating these tactics won't come from political parties, and certainly won't come from government initiatives. Yet ways to defeat these unfair political-manipulation tactics are waiting to be adopted.) (BTW, tiny parties, with fewer than, say 15 percent of the voters registered in that party, would only get one nominee. Or they would be allowed a second nominee when a big party fails to offer a second nominee.) So, the increase in the number of party nominees, and hopefully an increase in opposition parties, will increase the number of candidates. This means the places that get stuck with IRV (in spite of much better methods), should not also be stuck with ranking each candidate at a different preference level. Of course the FairVote organization avoids this fairer approach because they're trying to use IRV as a stepping-stone to STV, and STV becomes complex when voters mark ballots this way. But it's time to reject the unfairness of tossing out IRV ballots just because counting those ballots under STV would become complex. (Also, there are better STV-like methods that don't have the limitations of STV.) Now that discussions of IRV are increasing because of the proposed "Forward Party" endorsing "ranked choice voting," those of us who understand the math behind vote counting need to make it clear that IRV does not have the shared-ranking limitation that FairVote imposes in their certified software. Probably all of you who write messages on this forum already understand this concept. Yet I'm hoping that those who only read this forum's messages will understand that FairVote's claims (on their website and elsewhere) that IRV ("single-winner RCV") cannot handle a voter marking more than one candidate at the same preference level is a request to drink their Kool-Aid, not an actual limitation in IRV. Richard Fobes The VoteFair guy
FS
Forest Simmons
Thu, Jan 27, 2022 3:26 AM

Here's how to make even IRV precinct summable in a practical way, even when
there are 135 candidates with 135 factorial permutations, and many more
when you take equal rankings an truncations into account:

Encode each ballot as a string, just as we do on EM list election profiles.
Add the ballot strings together algebraically as though each string were a
variable name. Algebra software easily adds these strings together
algebraically (as opposed to string concatenation) by collecting like terms
on the fly. The precinct sums are added together, as well, again by
collecting like terms. The coefficients of the collected terms tell how
many ballots in each faction, just as in our EM example profiles.

You don't need to initialize 135 factorial bins, when almost all of the
would end up empty, anyway!

El mié., 26 de ene. de 2022 5:46 p. m., Richard, the VoteFair guy <
electionmethods@votefair.org> escribió:

I'd like to stop the misconception that IRV -- instant runoff voting,
also called "single-winner ranked choice voting" -- cannot allow a voter
to mark two or more candidates at the same preference level.

In particular, it's ridiculous that the FairVote organization promotes
the practice of tossing out a ballot when the counting reaches a
preference level where the voter has marked more than one candidate.

Although such shared preference levels are easy to handle using
fractions or decimals, that violates the common legal requirement that
votes be allocated to candidates in "whole" numbers.

Instead it can be done using only integers.  It just involves
"grouping."  Here's how:

When there are two ballots that rank candidates A and B at the same
preference level, one of the ballots is allocated to candidate A, and
the other ballot is allocated to candidate B.

When a third ballot with this preference is encountered, it's not yet
allocated.  Then when the fourth arrives the third and fourth ballots
(with this pattern) are allocated to the two candidates, with one ballot
going to each candidate.

When there are 379 ballots with this pattern, 378 will be allocated, and
only one ballot will be uncounted.  That's much better than tossing out
all 379 ballots.

It's that simple.

Writing the software is not difficult.  It just involves grouping
equivalent ballots together.  This grouping must be done separately for
each elimination round because the patterns change as candidates are
eliminated.

If anyone wants to know how the software can do this using only
integers, and simple C-language-like statements, just ask.  I've
implemented it in my vote-counting software on GitHub.

The importance of this issue goes beyond a voter not having a preference
between two (or more) candidates.

Most of us voters want to be able to mark a strongly disliked candidate
at the lowest preference level.  For example, imagine having 9
candidates and 6 ranking levels and strongly disliking candidate "I":

A > B > C+D > E > F+G+H > I

Not being able to rank candidate "I" at the lowest preference level is
unacceptable!  Yet that can't be done if IRV counting can't handle
shared preference levels.

(And having 9 preference levels for 9 candidates puts us on a slippery
slope to how to handle the 135 candidates in the infamous California
gubernatorial recall election.)

Keep in mind that the number of viable candidates in elections will
increase.  That's because vote splitting in general elections is what
caused political parties to limit themselves to just one nominee from
each party.  As more places adopt IRV and other better ranked-choice
methods, vote splitting won't be an issue.

There's yet another reason some political parties will need to offer a
second candidate.  It defeats the election tactic named "blocking."
That's the tactic of giving money to support a weaker candidate in a
primary election so that it's easier to defeat that party during the
general election.  A clear example happened in the 2008 U.S.
presidential election when Hillary Clinton was blocked from reaching the
general election partially because some Republicans gave money to Barack
Obama based on their expectation that he could not possibly win the
general election.

Another reason for political parties offering a second nominee is that
in a gerrymandered district (which applies to most U.S. federal and
state districts) the winner's party is pre-determined, so offering just
one nominee means the district's minority-party voters have no
meaningful choice in the general election.

(By the way, as pointed out in a recent article at the Center for
Election Science, this is why extremist candidates are getting elected
rather easily under our single-nominee election system.  They can get
elected with plurality support from less than half the dominant-party
voters, who themselves only need to be around 55 or 60 percent of the
district's voters.  The single-nominee rule means the extremist
candidate is virtually unopposed in the general election.)

(Of course defeating these tactics won't come from political parties,
and certainly won't come from government initiatives.  Yet ways to
defeat these unfair political-manipulation tactics are waiting to be
adopted.)

(BTW, tiny parties, with fewer than, say 15 percent of the voters
registered in that party, would only get one nominee.  Or they would be
allowed a second nominee when a big party fails to offer a second nominee.)

So, the increase in the number of party nominees, and hopefully an
increase in opposition parties, will increase the number of candidates.
This means the places that get stuck with IRV (in spite of much better
methods), should not also be stuck with ranking each candidate at a
different preference level.

Of course the FairVote organization avoids this fairer approach because
they're trying to use IRV as a stepping-stone to STV, and STV becomes
complex when voters mark ballots this way.  But it's time to reject the
unfairness of tossing out IRV ballots just because counting those
ballots under STV would become complex.

(Also, there are better STV-like methods that don't have the limitations
of STV.)

Now that discussions of IRV are increasing because of the proposed
"Forward Party" endorsing "ranked choice voting," those of us who
understand the math behind vote counting need to make it clear that IRV
does not have the shared-ranking limitation that FairVote imposes in
their certified software.

Probably all of you who write messages on this forum already understand
this concept.

Yet I'm hoping that those who only read this forum's messages will
understand that FairVote's claims (on their website and elsewhere) that
IRV ("single-winner RCV") cannot handle a voter marking more than one
candidate at the same preference level is a request to drink their
Kool-Aid, not an actual limitation in IRV.

Richard Fobes
The VoteFair guy

Election-Methods mailing list - see https://electorama.com/em for list
info

Here's how to make even IRV precinct summable in a practical way, even when there are 135 candidates with 135 factorial permutations, and many more when you take equal rankings an truncations into account: Encode each ballot as a string, just as we do on EM list election profiles. Add the ballot strings together algebraically as though each string were a variable name. Algebra software easily adds these strings together algebraically (as opposed to string concatenation) by collecting like terms on the fly. The precinct sums are added together, as well, again by collecting like terms. The coefficients of the collected terms tell how many ballots in each faction, just as in our EM example profiles. You don't need to initialize 135 factorial bins, when almost all of the would end up empty, anyway! El mié., 26 de ene. de 2022 5:46 p. m., Richard, the VoteFair guy < electionmethods@votefair.org> escribió: > I'd like to stop the misconception that IRV -- instant runoff voting, > also called "single-winner ranked choice voting" -- cannot allow a voter > to mark two or more candidates at the same preference level. > > In particular, it's ridiculous that the FairVote organization promotes > the practice of tossing out a ballot when the counting reaches a > preference level where the voter has marked more than one candidate. > > Although such shared preference levels are easy to handle using > fractions or decimals, that violates the common legal requirement that > votes be allocated to candidates in "whole" numbers. > > Instead it can be done using only integers. It just involves > "grouping." Here's how: > > When there are two ballots that rank candidates A and B at the same > preference level, one of the ballots is allocated to candidate A, and > the other ballot is allocated to candidate B. > > When a third ballot with this preference is encountered, it's not yet > allocated. Then when the fourth arrives the third and fourth ballots > (with this pattern) are allocated to the two candidates, with one ballot > going to each candidate. > > When there are 379 ballots with this pattern, 378 will be allocated, and > only one ballot will be uncounted. That's much better than tossing out > all 379 ballots. > > It's that simple. > > Writing the software is not difficult. It just involves grouping > equivalent ballots together. This grouping must be done separately for > each elimination round because the patterns change as candidates are > eliminated. > > If anyone wants to know how the software can do this using only > integers, and simple C-language-like statements, just ask. I've > implemented it in my vote-counting software on GitHub. > > The importance of this issue goes beyond a voter not having a preference > between two (or more) candidates. > > Most of us voters want to be able to mark a strongly disliked candidate > at the lowest preference level. For example, imagine having 9 > candidates and 6 ranking levels and strongly disliking candidate "I": > > A > B > C+D > E > F+G+H > I > > Not being able to rank candidate "I" at the lowest preference level is > unacceptable! Yet that can't be done if IRV counting can't handle > shared preference levels. > > (And having 9 preference levels for 9 candidates puts us on a slippery > slope to how to handle the 135 candidates in the infamous California > gubernatorial recall election.) > > Keep in mind that the number of viable candidates in elections will > increase. That's because vote splitting in general elections is what > caused political parties to limit themselves to just one nominee from > each party. As more places adopt IRV and other better ranked-choice > methods, vote splitting won't be an issue. > > There's yet another reason some political parties will need to offer a > second candidate. It defeats the election tactic named "blocking." > That's the tactic of giving money to support a weaker candidate in a > primary election so that it's easier to defeat that party during the > general election. A clear example happened in the 2008 U.S. > presidential election when Hillary Clinton was blocked from reaching the > general election partially because some Republicans gave money to Barack > Obama based on their expectation that he could not possibly win the > general election. > > Another reason for political parties offering a second nominee is that > in a gerrymandered district (which applies to most U.S. federal and > state districts) the winner's party is pre-determined, so offering just > one nominee means the district's minority-party voters have no > meaningful choice in the general election. > > (By the way, as pointed out in a recent article at the Center for > Election Science, this is why extremist candidates are getting elected > rather easily under our single-nominee election system. They can get > elected with plurality support from less than half the dominant-party > voters, who themselves only need to be around 55 or 60 percent of the > district's voters. The single-nominee rule means the extremist > candidate is virtually unopposed in the general election.) > > (Of course defeating these tactics won't come from political parties, > and certainly won't come from government initiatives. Yet ways to > defeat these unfair political-manipulation tactics are waiting to be > adopted.) > > (BTW, tiny parties, with fewer than, say 15 percent of the voters > registered in that party, would only get one nominee. Or they would be > allowed a second nominee when a big party fails to offer a second nominee.) > > So, the increase in the number of party nominees, and hopefully an > increase in opposition parties, will increase the number of candidates. > This means the places that get stuck with IRV (in spite of much better > methods), should not also be stuck with ranking each candidate at a > different preference level. > > Of course the FairVote organization avoids this fairer approach because > they're trying to use IRV as a stepping-stone to STV, and STV becomes > complex when voters mark ballots this way. But it's time to reject the > unfairness of tossing out IRV ballots just because counting those > ballots under STV would become complex. > > (Also, there are better STV-like methods that don't have the limitations > of STV.) > > Now that discussions of IRV are increasing because of the proposed > "Forward Party" endorsing "ranked choice voting," those of us who > understand the math behind vote counting need to make it clear that IRV > does not have the shared-ranking limitation that FairVote imposes in > their certified software. > > Probably all of you who write messages on this forum already understand > this concept. > > Yet I'm hoping that those who only read this forum's messages will > understand that FairVote's claims (on their website and elsewhere) that > IRV ("single-winner RCV") cannot handle a voter marking more than one > candidate at the same preference level is a request to drink their > Kool-Aid, not an actual limitation in IRV. > > Richard Fobes > The VoteFair guy > ---- > Election-Methods mailing list - see https://electorama.com/em for list > info >
KM
Kristofer Munsterhjelm
Thu, Jan 27, 2022 10:44 AM

On 27.01.2022 04:26, Forest Simmons wrote:

Here's how to make even IRV precinct summable in a practical way, even
when there are 135 candidates with 135 factorial permutations, and many
more when you take equal rankings an truncations into account:

Encode each ballot as a string, just as we do on EM list election
profiles. Add the ballot strings together algebraically as though each
string were a variable name. Algebra software easily adds these strings
together algebraically (as opposed to string concatenation) by
collecting like terms on the fly. The precinct sums are added together,
as well, again by collecting like terms. The coefficients of the
collected terms tell how many ballots in each faction, just as in our EM
example profiles.

You don't need to initialize 135 factorial bins, when almost all of the
would end up empty, anyway!

It has always been known that any method is summable in O(V) space :-)
Summable in the sense of the criterion means more like O(log V) * O(C^k).

Strictly speaking, yes, you could store all the votes on a memory card.
Suppose the election has a billion voters and there are 10 candidates.
We need 22 bits to store the permutation index since log_2(10!) =
21.791... (Arithmetic coding might get you even closer, but ignore for now.)
This times a billion voters gives 22 gigabit = 3 gigabytes, simple and
easy. And that's before compression, so it's a worst bound. Most likely
there are a lot of voters who would vote from left to right or vice
versa, and considerably fewer who would vote far right first, far left
second.

So, if this is easy, then what are the downsides? I guess there are two.
First, that detailed ballot information makes it easier to buy and sell
votes, because you could use the ranking as a signature to prove that
you're voting the way your benefactor wants you to.

Second, transparency: a matrix can be printed out on paper and it's
obvious what it means. A memory card requires a computer, where anything
might happen to your ballot. If observing the process is itself
important, and paper recounts need to be possible, then summable methods
have an advantage.

-km

On 27.01.2022 04:26, Forest Simmons wrote: > Here's how to make even IRV precinct summable in a practical way, even > when there are 135 candidates with 135 factorial permutations, and many > more when you take equal rankings an truncations into account: > > Encode each ballot as a string, just as we do on EM list election > profiles. Add the ballot strings together algebraically as though each > string were a variable name. Algebra software easily adds these strings > together algebraically (as opposed to string concatenation) by > collecting like terms on the fly. The precinct sums are added together, > as well, again by collecting like terms. The coefficients of the > collected terms tell how many ballots in each faction, just as in our EM > example profiles. > > You don't need to initialize 135 factorial bins, when almost all of the > would end up empty, anyway! It has always been known that any method is summable in O(V) space :-) Summable in the sense of the criterion means more like O(log V) * O(C^k). Strictly speaking, yes, you could store all the votes on a memory card. Suppose the election has a billion voters and there are 10 candidates. We need 22 bits to store the permutation index since log_2(10!) = 21.791... (Arithmetic coding might get you even closer, but ignore for now.) This times a billion voters gives 22 gigabit = 3 gigabytes, simple and easy. And that's before compression, so it's a worst bound. Most likely there are a lot of voters who would vote from left to right or vice versa, and considerably fewer who would vote far right first, far left second. So, if this is easy, then what are the downsides? I guess there are two. First, that detailed ballot information makes it easier to buy and sell votes, because you could use the ranking as a signature to prove that you're voting the way your benefactor wants you to. Second, transparency: a matrix can be printed out on paper and it's obvious what it means. A memory card requires a computer, where anything might happen to your ballot. If observing the process is itself important, and paper recounts need to be possible, then summable methods have an advantage. -km
KM
Kristofer Munsterhjelm
Thu, Jan 27, 2022 10:49 AM

On 27.01.2022 02:45, Richard, the VoteFair guy wrote:

I'd like to stop the misconception that IRV -- instant runoff voting,
also called "single-winner ranked choice voting" -- cannot allow a voter
to mark two or more candidates at the same preference level.

In particular, it's ridiculous that the FairVote organization promotes
the practice of tossing out a ballot when the counting reaches a
preference level where the voter has marked more than one candidate.

Although such shared preference levels are easy to handle using
fractions or decimals, that violates the common legal requirement that
votes be allocated to candidates in "whole" numbers.

Instead it can be done using only integers.  It just involves
"grouping."  Here's how:

This seems to be using fractional rank, i.e. that if you vote A=B, your
vote should count a half for A and a half for B.

Electowiki has some other alternatives. One is "equal vote without
elimination support" (my wording) which is basically this: A vote of the
type A=B does neither counts toward A or B as long as both are in the
race. As long as all candidates ranked equally, but one, are eliminated,
the ballot then counts maximally for the remaining candidate.

The idea, I think, is that if you express A=B>C on an IRV ballot, that
would be interpreted as you having no opinion of whether A or B
continues on, as long as one of them does. So you don't mind B being
eliminated if IRV then counts you as supporting A.

Such an approach would need no division at all and sidestep the problem
entirely :-)

-km

On 27.01.2022 02:45, Richard, the VoteFair guy wrote: > I'd like to stop the misconception that IRV -- instant runoff voting, > also called "single-winner ranked choice voting" -- cannot allow a voter > to mark two or more candidates at the same preference level. > > In particular, it's ridiculous that the FairVote organization promotes > the practice of tossing out a ballot when the counting reaches a > preference level where the voter has marked more than one candidate. > > Although such shared preference levels are easy to handle using > fractions or decimals, that violates the common legal requirement that > votes be allocated to candidates in "whole" numbers. > > Instead it can be done using only integers.  It just involves > "grouping."  Here's how: This seems to be using fractional rank, i.e. that if you vote A=B, your vote should count a half for A and a half for B. Electowiki has some other alternatives. One is "equal vote without elimination support" (my wording) which is basically this: A vote of the type A=B does neither counts toward A or B as long as both are in the race. As long as all candidates ranked equally, but one, are eliminated, the ballot then counts maximally for the remaining candidate. The idea, I think, is that if you express A=B>C on an IRV ballot, that would be interpreted as you having no opinion of whether A or B continues on, as long as one of them does. So you don't mind B being eliminated if IRV then counts you as supporting A. Such an approach would need no division at all and sidestep the problem entirely :-) -km
FS
Forest Simmons
Thu, Jan 27, 2022 7:49 PM

El jue., 27 de ene. de 2022 2:44 a. m., Kristofer Munsterhjelm <
km_elmet@t-online.de> escribió:

On 27.01.2022 04:26, Forest Simmons wrote:

Here's how to make even IRV precinct summable in a practical way, even
when there are 135 candidates with 135 factorial permutations, and many
more when you take equal rankings an truncations into account:

Encode each ballot as a string, just as we do on EM list election
profiles. Add the ballot strings together algebraically as though each
string were a variable name. Algebra software easily adds these strings
together algebraically (as opposed to string concatenation) by
collecting like terms on the fly. The precinct sums are added together,
as well, again by collecting like terms. The coefficients of the
collected terms tell how many ballots in each faction, just as in our EM
example profiles.

You don't need to initialize 135 factorial bins, when almost all of the
would end up empty, anyway!

It has always been known that any method is summable in O(V) space :-)
Summable in the sense of the criterion means more like O(log V) * O(C^k).

Strictly speaking, yes, you could store all the votes on a memory card.
Suppose the election has a billion voters and there are 10 candidates.
We need 22 bits to store the permutation index since log_2(10!) =
21.791... (Arithmetic coding might get you even closer, but ignore for
now.)
This times a billion voters gives 22 gigabit = 3 gigabytes, simple and
easy. And that's before compression, so it's a worst bound. Most likely
there are a lot of voters who would vote from left to right or vice
versa, and considerably fewer who would vote far right first, far left
second.

So, if this is easy, then what are the downsides? I guess there are two.
First, that detailed ballot information makes it easier to buy and sell
votes, because you could use the ranking as a signature to prove that
you're voting the way your benefactor wants you to.

The precinct summary would be something like

150 ABCDEFG+920BADEFG+ ...13GFED

The coefficients add up to the number who voted in the precinct.

That could easily be printed out with terms arranged in alpha numerical
order (in case you want to put in equal signs)

In a billion voter election, states print out the algebraic sum of all
their precinct expressions ...again, each expression will have one term per
actual faction, not per possible faction.

And nothing to stop them from making pairwise summaries as well.

The final algebraic expression in a billion ballot election would probably
have fewer than a million terms, ordered alphabetically for easy searching
online.

I'm not recommending STV, but like Richard The Vote Fair guy, I think the
STV people are making too many excuses for unjustifiable limitations.

Second, transparency: a matrix can be printed out on paper and it's
obvious what it means. A memory card requires a computer, where anything
might happen to your ballot. If observing the process is itself
important, and paper recounts need to be possible, then summable methods
have an advantage.

-km

El jue., 27 de ene. de 2022 2:44 a. m., Kristofer Munsterhjelm < km_elmet@t-online.de> escribió: > On 27.01.2022 04:26, Forest Simmons wrote: > > Here's how to make even IRV precinct summable in a practical way, even > > when there are 135 candidates with 135 factorial permutations, and many > > more when you take equal rankings an truncations into account: > > > > Encode each ballot as a string, just as we do on EM list election > > profiles. Add the ballot strings together algebraically as though each > > string were a variable name. Algebra software easily adds these strings > > together algebraically (as opposed to string concatenation) by > > collecting like terms on the fly. The precinct sums are added together, > > as well, again by collecting like terms. The coefficients of the > > collected terms tell how many ballots in each faction, just as in our EM > > example profiles. > > > > You don't need to initialize 135 factorial bins, when almost all of the > > would end up empty, anyway! > > It has always been known that any method is summable in O(V) space :-) > Summable in the sense of the criterion means more like O(log V) * O(C^k). > > Strictly speaking, yes, you could store all the votes on a memory card. > Suppose the election has a billion voters and there are 10 candidates. > We need 22 bits to store the permutation index since log_2(10!) = > 21.791... (Arithmetic coding might get you even closer, but ignore for > now.) > This times a billion voters gives 22 gigabit = 3 gigabytes, simple and > easy. And that's before compression, so it's a worst bound. Most likely > there are a lot of voters who would vote from left to right or vice > versa, and considerably fewer who would vote far right first, far left > second. > > So, if this is easy, then what are the downsides? I guess there are two. > First, that detailed ballot information makes it easier to buy and sell > votes, because you could use the ranking as a signature to prove that > you're voting the way your benefactor wants you to. > The precinct summary would be something like 150 ABCDEFG+920BADEFG+ ...13GFED The coefficients add up to the number who voted in the precinct. That could easily be printed out with terms arranged in alpha numerical order (in case you want to put in equal signs) In a billion voter election, states print out the algebraic sum of all their precinct expressions ...again, each expression will have one term per actual faction, not per possible faction. And nothing to stop them from making pairwise summaries as well. The final algebraic expression in a billion ballot election would probably have fewer than a million terms, ordered alphabetically for easy searching online. I'm not recommending STV, but like Richard The Vote Fair guy, I think the STV people are making too many excuses for unjustifiable limitations. > > Second, transparency: a matrix can be printed out on paper and it's > obvious what it means. A memory card requires a computer, where anything > might happen to your ballot. If observing the process is itself > important, and paper recounts need to be possible, then summable methods > have an advantage. > > -km >
KM
Kristofer Munsterhjelm
Sat, Jan 29, 2022 1:28 PM

On 27.01.2022 20:49, Forest Simmons wrote:

El jue., 27 de ene. de 2022 2:44 a. m., Kristofer Munsterhjelm
<km_elmet@t-online.de mailto:km_elmet@t-online.de> escribió:

 On 27.01.2022 04:26, Forest Simmons wrote:

Here's how to make even IRV precinct summable in a practical way, even
when there are 135 candidates with 135 factorial permutations, and

 many

more when you take equal rankings an truncations into account:

Encode each ballot as a string, just as we do on EM list election
profiles. Add the ballot strings together algebraically as though each
string were a variable name. Algebra software easily adds these

 strings

together algebraically (as opposed to string concatenation) by
collecting like terms on the fly. The precinct sums are added

 together,

as well, again by collecting like terms. The coefficients of the
collected terms tell how many ballots in each faction, just as in

 our EM

example profiles.

You don't need to initialize 135 factorial bins, when almost all

 of the

would end up empty, anyway!

 It has always been known that any method is summable in O(V) space :-)
 Summable in the sense of the criterion means more like O(log V) *
 O(C^k).

 Strictly speaking, yes, you could store all the votes on a memory card.
 Suppose the election has a billion voters and there are 10 candidates.
 We need 22 bits to store the permutation index since log_2(10!) =
 21.791... (Arithmetic coding might get you even closer, but ignore
 for now.)
 This times a billion voters gives 22 gigabit = 3 gigabytes, simple and
 easy. And that's before compression, so it's a worst bound. Most likely
 there are a lot of voters who would vote from left to right or vice
 versa, and considerably fewer who would vote far right first, far left
 second.

 So, if this is easy, then what are the downsides? I guess there are two.
 First, that detailed ballot information makes it easier to buy and sell
 votes, because you could use the ranking as a signature to prove that
 you're voting the way your benefactor wants you to.

The precinct summary would be something like

150 ABCDEFG+920BADEFG+ ...13GFED

Yes. That is an explicit compression version of my method, and using
text instead of binary.

If you want to put every bit to maximum use, then instead of the string
"ABCDEFG", you can use a 13 bit integer field; in this case, the field
would have value 0. GFEDCBA would correspond to value 5039. Truncation
and equal rank make it a bit harder; I tried to construct a bijection
between truncated/equal-rank ballots and integers once but didn't quite
manage to do it.

If V >> c!, then the best format is an array c! long that gives how many
voters voted for each particular ranked ballot. If V << c!, then the
best approach is just a list of the rank indices for each voter (this
list should probably be sorted so as not to leak information about what
the tenth voter voted).

If the number of distinct orders is small, then it may pay off to, in
effect, RLE encode by index number. The fields would then look like:

(index number, number of voters voting this way)

for every index where there's at least one vote. E.g. if 1024 people
vote ABCDEFG, then the pair is (0, 1024). The loss here is that you use
some bits explicitly denoting the index.

-km

On 27.01.2022 20:49, Forest Simmons wrote: > > > El jue., 27 de ene. de 2022 2:44 a. m., Kristofer Munsterhjelm > <km_elmet@t-online.de <mailto:km_elmet@t-online.de>> escribió: > > On 27.01.2022 04:26, Forest Simmons wrote: > > Here's how to make even IRV precinct summable in a practical way, even > > when there are 135 candidates with 135 factorial permutations, and > many > > more when you take equal rankings an truncations into account: > > > > Encode each ballot as a string, just as we do on EM list election > > profiles. Add the ballot strings together algebraically as though each > > string were a variable name. Algebra software easily adds these > strings > > together algebraically (as opposed to string concatenation) by > > collecting like terms on the fly. The precinct sums are added > together, > > as well, again by collecting like terms. The coefficients of the > > collected terms tell how many ballots in each faction, just as in > our EM > > example profiles. > > > > You don't need to initialize 135 factorial bins, when almost all > of the > > would end up empty, anyway! > > It has always been known that any method is summable in O(V) space :-) > Summable in the sense of the criterion means more like O(log V) * > O(C^k). > > Strictly speaking, yes, you could store all the votes on a memory card. > Suppose the election has a billion voters and there are 10 candidates. > We need 22 bits to store the permutation index since log_2(10!) = > 21.791... (Arithmetic coding might get you even closer, but ignore > for now.) > This times a billion voters gives 22 gigabit = 3 gigabytes, simple and > easy. And that's before compression, so it's a worst bound. Most likely > there are a lot of voters who would vote from left to right or vice > versa, and considerably fewer who would vote far right first, far left > second. > > So, if this is easy, then what are the downsides? I guess there are two. > First, that detailed ballot information makes it easier to buy and sell > votes, because you could use the ranking as a signature to prove that > you're voting the way your benefactor wants you to. > > > The precinct summary would be something like > > 150 ABCDEFG+920BADEFG+ ...13GFED Yes. That is an explicit compression version of my method, and using text instead of binary. If you want to put every bit to maximum use, then instead of the string "ABCDEFG", you can use a 13 bit integer field; in this case, the field would have value 0. GFEDCBA would correspond to value 5039. Truncation and equal rank make it a bit harder; I tried to construct a bijection between truncated/equal-rank ballots and integers once but didn't quite manage to do it. If V >> c!, then the best format is an array c! long that gives how many voters voted for each particular ranked ballot. If V << c!, then the best approach is just a list of the rank indices for each voter (this list should probably be sorted so as not to leak information about what the tenth voter voted). If the number of distinct orders is small, then it may pay off to, in effect, RLE encode by index number. The fields would then look like: (index number, number of voters voting this way) for every index where there's at least one vote. E.g. if 1024 people vote ABCDEFG, then the pair is (0, 1024). The loss here is that you use some bits explicitly denoting the index. -km
RT
Richard, the VoteFair guy
Mon, Jan 31, 2022 2:12 AM

On 1/29/2022 5:28 AM, Kristofer Munsterhjelm wrote:

On 27.01.2022 20:49, Forest Simmons wrote:

El jue., 27 de ene. de 2022 2:44 a. m., Kristofer Munsterhjelm
<km_elmet@t-online.de mailto:km_elmet@t-online.de> escribió:
On 27.01.2022 04:26, Forest Simmons wrote:
The precinct summary would be something like

150 ABCDEFG+920BADEFG+ ...13GFED

Yes. That is an explicit compression version of my method, and using
text instead of binary.

If you want to put every bit to maximum use, then instead of the string
"ABCDEFG", you can use a 13 bit integer field; in this case, the field
would have value 0. GFEDCBA would correspond to value 5039. Truncation
and equal rank make it a bit harder; I tried to construct a bijection
between truncated/equal-rank ballots and integers once but didn't quite
manage to do it.

Thank you Forest and Kristofer for answering my question.

I'm interpreting your replies to mean that of course we can summarize
the ranked choice ballot data in the way that IRV counting requires.  Is
that right?

As Kristofer says" "Truncation and equal rank make it a bit harder."

I believe it might be useful to summarize the ballot info in four ways:

  1. Counts and encoded rankings for ballots that rank each candidate at a
    different preference level.  Using the method above.

  2. Separate counts and encoded rankings for the ballots that have shared
    ranking levels, but just sending a subset of these, and truncated to
    only show the ranks for the most popular candidates (omitting the
    clearly can't-win candidates)

  3. Sending the pairwise vote counts -- both for use in finding pairwise
    losing candidates, and as a complete summary of all the ballot data (but
    not sufficient to track IRV or STV vote transfers).

  4. Maybe also sending counts for how many ballots mark each oval in the
    pattern.  This is like saying 236 ballots have a mark in column 1 and
    row 1, 932 ballots have a mark in column 2 and row 1, etc.  (If a ballot
    marks more than one oval for the same candidate, only the higher-ranked
    oval would be counted.)  Of course this is equivalent to how Score
    ballots can be summarized.

Regarding type 2, namely shared-preference-level ballots, if a precinct
has say 50,000 voters, is there a way to estimate whether the upload
time is hours versus minutes (at normal internet speeds)?

Obviously there can be huge numbers of possible marking patterns when
shared-preference-level ballots are involved, but how many of those
patterns would appear on more than just a few ballots?

Would it be reasonable to allow the precinct software to estimate the
possible winners and truncate the detailed pattern data to only include
the possible winners (based on this precinct-level estimate).  Or should
the central counting location be the only source for requesting this
kind of truncation?

Does anyone recognize whether summary method 4 offers any meaningful way
to eliminate some of the candidates as can't win candidates?

I continue to believe there must be ways to overcome the IRV limitation
of not being precinct summable.  At least for gathering enough
information within an hour of poll closing time to either:

  • tentatively reveal enough data to reveal a winner, ...

  • or else reveal the election is very close, and a day or two is needed
    to collect the full detailed vote counts.

Richard Fobes
The VoteFair guy

On 1/29/2022 5:28 AM, Kristofer Munsterhjelm wrote:

On 27.01.2022 20:49, Forest Simmons wrote:

El jue., 27 de ene. de 2022 2:44 a. m., Kristofer Munsterhjelm
<km_elmet@t-online.de mailto:km_elmet@t-online.de> escribió:

 On 27.01.2022 04:26, Forest Simmons wrote:

Here's how to make even IRV precinct summable in a practical way, even
when there are 135 candidates with 135 factorial permutations, and

 many

more when you take equal rankings an truncations into account:

Encode each ballot as a string, just as we do on EM list election
profiles. Add the ballot strings together algebraically as though each
string were a variable name. Algebra software easily adds these

 strings

together algebraically (as opposed to string concatenation) by
collecting like terms on the fly. The precinct sums are added

 together,

as well, again by collecting like terms. The coefficients of the
collected terms tell how many ballots in each faction, just as in

 our EM

example profiles.

You don't need to initialize 135 factorial bins, when almost all

 of the

would end up empty, anyway!

 It has always been known that any method is summable in O(V) space :-)
 Summable in the sense of the criterion means more like O(log V) *
 O(C^k).

 Strictly speaking, yes, you could store all the votes on a memory card.
 Suppose the election has a billion voters and there are 10 candidates.
 We need 22 bits to store the permutation index since log_2(10!) =
 21.791... (Arithmetic coding might get you even closer, but ignore
 for now.)
 This times a billion voters gives 22 gigabit = 3 gigabytes, simple and
 easy. And that's before compression, so it's a worst bound. Most likely
 there are a lot of voters who would vote from left to right or vice
 versa, and considerably fewer who would vote far right first, far left
 second.

 So, if this is easy, then what are the downsides? I guess there are two.
 First, that detailed ballot information makes it easier to buy and sell
 votes, because you could use the ranking as a signature to prove that
 you're voting the way your benefactor wants you to.

The precinct summary would be something like

150 ABCDEFG+920BADEFG+ ...13GFED

Yes. That is an explicit compression version of my method, and using
text instead of binary.

If you want to put every bit to maximum use, then instead of the string
"ABCDEFG", you can use a 13 bit integer field; in this case, the field
would have value 0. GFEDCBA would correspond to value 5039. Truncation
and equal rank make it a bit harder; I tried to construct a bijection
between truncated/equal-rank ballots and integers once but didn't quite
manage to do it.

If V >> c!, then the best format is an array c! long that gives how many
voters voted for each particular ranked ballot. If V << c!, then the
best approach is just a list of the rank indices for each voter (this
list should probably be sorted so as not to leak information about what
the tenth voter voted).

If the number of distinct orders is small, then it may pay off to, in
effect, RLE encode by index number. The fields would then look like:

(index number, number of voters voting this way)

for every index where there's at least one vote. E.g. if 1024 people
vote ABCDEFG, then the pair is (0, 1024). The loss here is that you use
some bits explicitly denoting the index.

-km

On 1/29/2022 5:28 AM, Kristofer Munsterhjelm wrote: > On 27.01.2022 20:49, Forest Simmons wrote: >> El jue., 27 de ene. de 2022 2:44 a. m., Kristofer Munsterhjelm >> <km_elmet@t-online.de <mailto:km_elmet@t-online.de>> escribió: >> On 27.01.2022 04:26, Forest Simmons wrote: >> The precinct summary would be something like >> >> 150 ABCDEFG+920BADEFG+ ...13GFED > > Yes. That is an explicit compression version of my method, and using > text instead of binary. > > If you want to put every bit to maximum use, then instead of the string > "ABCDEFG", you can use a 13 bit integer field; in this case, the field > would have value 0. GFEDCBA would correspond to value 5039. Truncation > and equal rank make it a bit harder; I tried to construct a bijection > between truncated/equal-rank ballots and integers once but didn't quite > manage to do it. Thank you Forest and Kristofer for answering my question. I'm interpreting your replies to mean that of course we can summarize the ranked choice ballot data in the way that IRV counting requires. Is that right? As Kristofer says" "Truncation and equal rank make it a bit harder." I believe it might be useful to summarize the ballot info in four ways: 1. Counts and encoded rankings for ballots that rank each candidate at a different preference level. Using the method above. 2. Separate counts and encoded rankings for the ballots that have shared ranking levels, but just sending a subset of these, and truncated to only show the ranks for the most popular candidates (omitting the clearly can't-win candidates) 3. Sending the pairwise vote counts -- both for use in finding pairwise losing candidates, and as a complete summary of all the ballot data (but not sufficient to track IRV or STV vote transfers). 4. Maybe also sending counts for how many ballots mark each oval in the pattern. This is like saying 236 ballots have a mark in column 1 and row 1, 932 ballots have a mark in column 2 and row 1, etc. (If a ballot marks more than one oval for the same candidate, only the higher-ranked oval would be counted.) Of course this is equivalent to how Score ballots can be summarized. Regarding type 2, namely shared-preference-level ballots, if a precinct has say 50,000 voters, is there a way to estimate whether the upload time is hours versus minutes (at normal internet speeds)? Obviously there can be huge numbers of possible marking patterns when shared-preference-level ballots are involved, but how many of those patterns would appear on more than just a few ballots? Would it be reasonable to allow the precinct software to estimate the possible winners and truncate the detailed pattern data to only include the possible winners (based on this precinct-level estimate). Or should the central counting location be the only source for requesting this kind of truncation? Does anyone recognize whether summary method 4 offers any meaningful way to eliminate some of the candidates as can't win candidates? I continue to believe there must be ways to overcome the IRV limitation of not being precinct summable. At least for gathering enough information within an hour of poll closing time to either: * tentatively reveal enough data to reveal a winner, ... * or else reveal the election is very close, and a day or two is needed to collect the full detailed vote counts. Richard Fobes The VoteFair guy On 1/29/2022 5:28 AM, Kristofer Munsterhjelm wrote: > On 27.01.2022 20:49, Forest Simmons wrote: >> >> >> El jue., 27 de ene. de 2022 2:44 a. m., Kristofer Munsterhjelm >> <km_elmet@t-online.de <mailto:km_elmet@t-online.de>> escribió: >> >> On 27.01.2022 04:26, Forest Simmons wrote: >> > Here's how to make even IRV precinct summable in a practical way, even >> > when there are 135 candidates with 135 factorial permutations, and >> many >> > more when you take equal rankings an truncations into account: >> > >> > Encode each ballot as a string, just as we do on EM list election >> > profiles. Add the ballot strings together algebraically as though each >> > string were a variable name. Algebra software easily adds these >> strings >> > together algebraically (as opposed to string concatenation) by >> > collecting like terms on the fly. The precinct sums are added >> together, >> > as well, again by collecting like terms. The coefficients of the >> > collected terms tell how many ballots in each faction, just as in >> our EM >> > example profiles. >> > >> > You don't need to initialize 135 factorial bins, when almost all >> of the >> > would end up empty, anyway! >> >> It has always been known that any method is summable in O(V) space :-) >> Summable in the sense of the criterion means more like O(log V) * >> O(C^k). >> >> Strictly speaking, yes, you could store all the votes on a memory card. >> Suppose the election has a billion voters and there are 10 candidates. >> We need 22 bits to store the permutation index since log_2(10!) = >> 21.791... (Arithmetic coding might get you even closer, but ignore >> for now.) >> This times a billion voters gives 22 gigabit = 3 gigabytes, simple and >> easy. And that's before compression, so it's a worst bound. Most likely >> there are a lot of voters who would vote from left to right or vice >> versa, and considerably fewer who would vote far right first, far left >> second. >> >> So, if this is easy, then what are the downsides? I guess there are two. >> First, that detailed ballot information makes it easier to buy and sell >> votes, because you could use the ranking as a signature to prove that >> you're voting the way your benefactor wants you to. >> >> >> The precinct summary would be something like >> >> 150 ABCDEFG+920BADEFG+ ...13GFED > > Yes. That is an explicit compression version of my method, and using > text instead of binary. > > If you want to put every bit to maximum use, then instead of the string > "ABCDEFG", you can use a 13 bit integer field; in this case, the field > would have value 0. GFEDCBA would correspond to value 5039. Truncation > and equal rank make it a bit harder; I tried to construct a bijection > between truncated/equal-rank ballots and integers once but didn't quite > manage to do it. > > If V >> c!, then the best format is an array c! long that gives how many > voters voted for each particular ranked ballot. If V << c!, then the > best approach is just a list of the rank indices for each voter (this > list should probably be sorted so as not to leak information about what > the tenth voter voted). > > If the number of distinct orders is small, then it may pay off to, in > effect, RLE encode by index number. The fields would then look like: > > (index number, number of voters voting this way) > > for every index where there's at least one vote. E.g. if 1024 people > vote ABCDEFG, then the pair is (0, 1024). The loss here is that you use > some bits explicitly denoting the index. > > -km >
KM
Kristofer Munsterhjelm
Mon, Jan 31, 2022 9:04 PM

On 31.01.2022 03:12, Richard, the VoteFair guy wrote:

On 1/29/2022 5:28 AM, Kristofer Munsterhjelm wrote:

If you want to put every bit to maximum use, then instead of the string
"ABCDEFG", you can use a 13 bit integer field; in this case, the field
would have value 0. GFEDCBA would correspond to value 5039. Truncation
and equal rank make it a bit harder; I tried to construct a bijection
between truncated/equal-rank ballots and integers once but didn't quite
manage to do it.

Thank you Forest and Kristofer for answering my question.

I'm interpreting your replies to mean that of course we can summarize
the ranked choice ballot data in the way that IRV counting requires.  Is
that right?

Essentially, what we're saying is that IRV maximally fails the
summability criterion, but computers make storagge cheap.

Summability is still better (it's easier to keep control of a paper
tally than all the computers that the SD card will be visiting), but if
summability is off the table for some reason, it's not the end of the
world. At least not as far as storage requirements are concerned.

As Kristofer says" "Truncation and equal rank make it a bit harder."

I believe it might be useful to summarize the ballot info in four ways:

  1. Counts and encoded rankings for ballots that rank each candidate at a
    different preference level.  Using the method above.

  2. Separate counts and encoded rankings for the ballots that have shared
    ranking levels, but just sending a subset of these, and truncated to
    only show the ranks for the most popular candidates (omitting the
    clearly can't-win candidates)

  3. Sending the pairwise vote counts -- both for use in finding pairwise
    losing candidates, and as a complete summary of all the ballot data (but
    not sufficient to track IRV or STV vote transfers).

  4. Maybe also sending counts for how many ballots mark each oval in the
    pattern.  This is like saying 236 ballots have a mark in column 1 and
    row 1, 932 ballots have a mark in column 2 and row 1, etc.  (If a ballot
    marks more than one oval for the same candidate, only the higher-ranked
    oval would be counted.)  Of course this is equivalent to how Score
    ballots can be summarized.

This is called, I think, a positional matrix. Once you have it, you can
calculate the result according to any weighted positional method (like
Borda, Plurality, Antiplurality, etc.) and also Bucklin.

Regarding type 2, namely shared-preference-level ballots, if a precinct
has say 50,000 voters, is there a way to estimate whether the upload
time is hours versus minutes (at normal internet speeds)?

The number of distinct ballots when truncation and equal-rank are both
allowed is, I think, https://oeis.org/A000629. To store an index of
maximum value n, we need ceil(log_2(n)) bits[1]. So the ballot format
that just gives the first voter's ballot, the second voter's ballot, and
so on, requires v * ceil(log2(n)) bits in total. This is a worst case
format: in most cases there will be more than one voter voting a
particular way, in which case the duplication can be compressed.

(https://electowiki.org/wiki/Space_of_possible_elections#Full_rankings,_equality_allowed
has information about how many distinct ballot types there are for
various ballot types, but it doesn't yet have both truncation and equal
rank at the same time.)

So let's take an example with 50k voters -- and 10 candidates.

With 10 candidates, the table says that there are 204495126 different
ballots, so we need 28 bits per voter. The total space required is 1 400
000 bits, or 175 KB. This would take less than a second to transfer on a
normal internet connection. You could easily fit the data on an 1.44MB
floppy, for that matter.

With 20 candidates, you'd need 73 bits per voter and the total election
image would come to 457 KB. That's the worst case. A global election
(7.9 billion voters) with 20 candidates is 72 GB.

So if a lack of summability is a problem, it's not raw storage that
makes it troublesome: it's keeping the people who'd want to corrupt the
results from doing so, and in particular from doing so undetectably.

Obviously there can be huge numbers of possible marking patterns when
shared-preference-level ballots are involved, but how many of those
patterns would appear on more than just a few ballots?

Would it be reasonable to allow the precinct software to estimate the
possible winners and truncate the detailed pattern data to only include
the possible winners (based on this precinct-level estimate).  Or should
the central counting location be the only source for requesting this
kind of truncation?

Does anyone recognize whether summary method 4 offers any meaningful way
to eliminate some of the candidates as can't win candidates?

IRV advocates often use this observation to propose a method that (IIRC)
is used in Australia. Basically, each round of IRV is summable. So the
precincts can send the center the Plurality counts (one number per
candidate); then the center says "X lost, eliminate him", and they do
and recalculate, send their new counts to the center, and the process
repeats.

Thus if you allow interactivity, not much storage is required at all.

I don't think it's possible to definitely exclude any candidates on a
precinct level when doing IRV. Imagine that the first precinct has
everybody voting for candidate A (i.e. an unanimous result). Meanwhile,
A is the loser in every other precinct but the first one doesn't know
this. Then there's no way for the first precinct to know it should
eliminate A.

So however you do this early elimination, it has to be from the center's
point of view. Hence there must be communication between the precincts
(telling the center what it needs to know in order to know who to
eliminate), and then communication back to the precinct about who should
be eliminated. But at that point you have pretty much the Australian
protocol and you can just use that.

Determining whether the election is close can be done by the kind of
statistics used in polls in general. Suppose the precincts record a
thousand ballots at random. At each stage of the count, they will know
what the likely margin for the true count will be. If it's possible for
the counts to be somewhere inside the margin and X be eliminated, or for
them to be somewhere else inside the margin and Y be eliminated, then
it's too close to tentatively call. Note that X may be eliminated no
matter what the results are within the margin, and yet by bad luck the
sample just happened to be unrepresentative: so this can't be used to
definitively call an election, only to tentatively do so.

(One problem with IRV is that ties may amplify in unpredictable ways.
If, at any stage in the elimination process, either X or Y may plausibly
be eliminated, the differences in ballots can cascade down and change
the result completely depending on whether X or Y was actually
eliminated. In some cases, e.g. when there's a CW with >1/3 first
preferences, or a majority favorite, IRV is stable, but it's not in full
generality.)

-km

[1] As I mentioned earlier, I think it's possible to get this down to
ceil(log_2(n)*v) by using arithmetic coding, but that would just
complicate my argument so I don't bother.

On 31.01.2022 03:12, Richard, the VoteFair guy wrote: > On 1/29/2022 5:28 AM, Kristofer Munsterhjelm wrote: >> If you want to put every bit to maximum use, then instead of the string >> "ABCDEFG", you can use a 13 bit integer field; in this case, the field >> would have value 0. GFEDCBA would correspond to value 5039. Truncation >> and equal rank make it a bit harder; I tried to construct a bijection >> between truncated/equal-rank ballots and integers once but didn't quite >> manage to do it. > > Thank you Forest and Kristofer for answering my question. > > I'm interpreting your replies to mean that of course we can summarize > the ranked choice ballot data in the way that IRV counting requires.  Is > that right? Essentially, what we're saying is that IRV maximally fails the summability criterion, but computers make storagge cheap. Summability is still better (it's easier to keep control of a paper tally than all the computers that the SD card will be visiting), but if summability is off the table for some reason, it's not the end of the world. At least not as far as storage requirements are concerned. > As Kristofer says" "Truncation and equal rank make it a bit harder." > > I believe it might be useful to summarize the ballot info in four ways: > > 1. Counts and encoded rankings for ballots that rank each candidate at a > different preference level.  Using the method above. > > 2. Separate counts and encoded rankings for the ballots that have shared > ranking levels, but just sending a subset of these, and truncated to > only show the ranks for the most popular candidates (omitting the > clearly can't-win candidates) > > 3. Sending the pairwise vote counts -- both for use in finding pairwise > losing candidates, and as a complete summary of all the ballot data (but > not sufficient to track IRV or STV vote transfers). > > 4. Maybe also sending counts for how many ballots mark each oval in the > pattern.  This is like saying 236 ballots have a mark in column 1 and > row 1, 932 ballots have a mark in column 2 and row 1, etc.  (If a ballot > marks more than one oval for the same candidate, only the higher-ranked > oval would be counted.)  Of course this is equivalent to how Score > ballots can be summarized. This is called, I think, a positional matrix. Once you have it, you can calculate the result according to any weighted positional method (like Borda, Plurality, Antiplurality, etc.) and also Bucklin. > Regarding type 2, namely shared-preference-level ballots, if a precinct > has say 50,000 voters, is there a way to estimate whether the upload > time is hours versus minutes (at normal internet speeds)? The number of distinct ballots when truncation and equal-rank are both allowed is, I think, https://oeis.org/A000629. To store an index of maximum value n, we need ceil(log_2(n)) bits[1]. So the ballot format that just gives the first voter's ballot, the second voter's ballot, and so on, requires v * ceil(log2(n)) bits in total. This is a worst case format: in most cases there will be more than one voter voting a particular way, in which case the duplication can be compressed. (https://electowiki.org/wiki/Space_of_possible_elections#Full_rankings,_equality_allowed has information about how many distinct ballot types there are for various ballot types, but it doesn't yet have both truncation and equal rank at the same time.) So let's take an example with 50k voters -- and 10 candidates. With 10 candidates, the table says that there are 204495126 different ballots, so we need 28 bits per voter. The total space required is 1 400 000 bits, or 175 KB. This would take less than a second to transfer on a normal internet connection. You could easily fit the data on an 1.44MB floppy, for that matter. With 20 candidates, you'd need 73 bits per voter and the total election image would come to 457 KB. That's the worst case. A global election (7.9 billion voters) with 20 candidates is 72 GB. So if a lack of summability is a problem, it's not raw storage that makes it troublesome: it's keeping the people who'd want to corrupt the results from doing so, and in particular from doing so undetectably. > Obviously there can be huge numbers of possible marking patterns when > shared-preference-level ballots are involved, but how many of those > patterns would appear on more than just a few ballots? > > Would it be reasonable to allow the precinct software to estimate the > possible winners and truncate the detailed pattern data to only include > the possible winners (based on this precinct-level estimate).  Or should > the central counting location be the only source for requesting this > kind of truncation? > > Does anyone recognize whether summary method 4 offers any meaningful way > to eliminate some of the candidates as can't win candidates? IRV advocates often use this observation to propose a method that (IIRC) is used in Australia. Basically, each round of IRV is summable. So the precincts can send the center the Plurality counts (one number per candidate); then the center says "X lost, eliminate him", and they do and recalculate, send their new counts to the center, and the process repeats. Thus if you allow interactivity, not much storage is required at all. I don't think it's possible to definitely exclude any candidates on a precinct level when doing IRV. Imagine that the first precinct has everybody voting for candidate A (i.e. an unanimous result). Meanwhile, A is the loser in every other precinct but the first one doesn't know this. Then there's no way for the first precinct to know it should eliminate A. So however you do this early elimination, it has to be from the center's point of view. Hence there must be communication between the precincts (telling the center what it needs to know in order to know who to eliminate), and then communication back to the precinct about who should be eliminated. But at that point you have pretty much the Australian protocol and you can just use that. Determining whether the election is close can be done by the kind of statistics used in polls in general. Suppose the precincts record a thousand ballots at random. At each stage of the count, they will know what the likely margin for the true count will be. If it's possible for the counts to be somewhere inside the margin and X be eliminated, or for them to be somewhere else inside the margin and Y be eliminated, then it's too close to tentatively call. Note that X may be eliminated no matter what the results are within the margin, and yet by bad luck the sample just happened to be unrepresentative: so this can't be used to definitively call an election, only to tentatively do so. (One problem with IRV is that ties may amplify in unpredictable ways. If, at any stage in the elimination process, either X or Y may plausibly be eliminated, the differences in ballots can cascade down and change the result completely depending on whether X or Y was actually eliminated. In some cases, e.g. when there's a CW with >1/3 first preferences, or a majority favorite, IRV is stable, but it's not in full generality.) -km [1] As I mentioned earlier, I think it's possible to get this down to ceil(log_2(n)*v) by using arithmetic coding, but that would just complicate my argument so I don't bother.