Kathy Dopp wrote:
On Fri, Jul 16, 2010 at 7:39 AM, Kristofer Munsterhjelm

Therefore, my program needs some form of sampling. As impartial culture
seems to do reasonably well in the full-rank case, yet I cannot test
criteria that may need truncated ballots for a disproof, I was wondering how
to generalize it.


Could you give each of the more than 120^30 (e.g.) possible unique
voter-ballot combinations equal probability of sampling and choose
that way?

I think that's what happens with impartial culture, since that sampling has equal probability for each possible ballot. If we consider giving each possible assignment of ballots to 30 voters a distinct number, so that we could "look them up" by simply drawing a number between 0 and 120^30 out of a hat, then the probability that the first voter votes, say, A>B>C is equal to the probability that it votes B>C>A (1/120). Therefore, drawing permutations, where each permutation is equally likely, 30 times, should give the same result as picking a random number between 0 and 120^30 and translating that into a ballot group. The advantage of doing it in the former way is, of course, that you don't need to have 256-bit integers to do it nor memory to store every possible combination.

Or could you simply sample each possible unique
voter-ballot combination one at a time and keep a simple array of
success or failure at meeting the criterion so as not to run up
against computer limitations?

If I could devise a bijection between the integer range [0..120^30> and all possible ballot groups, then that could work; all I would have to do would be to make a 208-bit cipher, then encrypt 0, 1, etc, up, and reject all numbers greater than 120^30. This would work because of the pigeonhole principle: say the encryption algorithm maps 0 to 6. Then it can't map any other integer to 6 because then it would be impossible to decrypt "6" again. There would be no need to keep an array, just an index number meaning "passed criterion for all below this number" - once one finds a failure, that's the disproof and there's no reason to search further.

However, this would still require very large integers and so would be slow -- and I would have to build the 208-bit cipher and the bijective function. A method of drawing a truncated permutation with equal probability for each would be better.

Is the computer limitation, the time it takes to run the program or
the memory space?  I would be inclined to simply chug away at all the
possible combinations because if you randomly select some, you may
miss the criterion failures since you do not know how many criterion
failures there may be out of the total you would not know how large
the sample size has to be to hit them.

If you're talking about exhaustive search - trying every single one - then the problem is speed. Say I can generate and test a billion ballot groups a second. To test all 120^30 I would then have to work for... 7.5*10^45 years. The cipher solution would shuffle the ballot groups around enough to make sampling work, but it wouldn't be exhaustive.

For similar reasons, simply storing all 120^30 explicitly and shuffling the indices around would be impossible - there wouldn't be enough memory to go around, nor time to even finish the shuffling pass.
----
Election-Methods mailing list - see http://electorama.com/em for list info

Reply via email to