On Thu, Jul 28, 2011 at 6:50 AM, Warren Smith wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">To draw districts using a multiwinner voting system:<br>
Let there be V people, whose coordinates are known.<br>
Let the "candidates" be the same set as the people (V candidates).<br>
Each voter "votes" by ranking the "candidates" in order of increasing distance<br>
away from her, or somehow scoring them (in a score-based voting<br>
system) using some decreasing function of distance. (Actually, all<br>
these votes are fake in the<br>
sense that they are automatically generated from the coordinates; no<br>
humans actually vote.) We then "elect" W winners.<br>
These winners will be the centers of the districts. [Once the<br>
district centers are selected there is a known polytime algorithm for<br>
finding the best assignment of the people to the districts such that<br>
the sum of the distances (or squared distances) to the district<br>
centers is minimized subject to the equipopulousness constraint.]<br></blockquote><div><br></div><div>Good idea. Hadn't thought of it that way before.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
We can now attempt to evaluate various multiwinner voting systems by<br>
asking how well they would perform for districting purposes.<br>
<br>
Consider, e.g, Andy Jennings' "greedy algorithm"<br>
which selects the candidate whose Tth highest score is greatest (where<br>
T is the district target population) and removes the T voters who<br>
scored him with the T highest scores, as "district #1" -- then<br>
continues on with the remaining voters.<br>
It would work pretty well at first, removing chunks of people in<br>
dense cities, each chunk having population equal to a district target<br>
population. However, as it proceeded, eventually your country would<br>
start to look like swiss cheese, with many removed "holes."<br>
The late districts Jennings produced, would necessarily be quite bad, large,<br>
containing a lot of scattered people, and with a lot of holes in the<br>
middle of those districts.<br></blockquote><div><br></div><div>Interestingly enough, people in Arizona wanted it that way at one point. Some people think Arizona's 1st district (<a href="http://en.wikipedia.org/wiki/Arizona's_1st_congressional_district">http://en.wikipedia.org/wiki/Arizona's_1st_congressional_district</a>) is the way it is because of gerrymandering, but I'm pretty sure it was a non-partisan committee who designed it that way so rural interests could be combined and have their own representative.</div>
<div><br></div><div>Then again, it was the district that elected Rick Renzi, accused of being one of the most corrupt congressmen at the time. Does this reflect negatively on the swiss cheese idea? In any case, I agree that most people would reject swiss cheese districts.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Now consider (Lewis Carroll's form of) "asset voting."<br>
Here each voter names, e.g. their 3 favorite candidates. Candidate with<br>
least votes (assets) is eliminated and transfers his assets to whomever he<br>
likes (according to his own vote). Continue on.<br>
Eventually we have only W candidates left,<br>
who win. In the districting application, "favorite" means "nearest."<br>
I actually suspect this method would work quite well as a districting method.<br>
There would be a lot of random tiebreaking going on, though, making its<br>
results depend to a large extent on random chance.<br>
But if each voter cast weighted votes for their top three (weightings<br>
chosen using<br>
distances according to some suitable scheme so the sum is 3 and they<br>
decrease with distance) then there would generically be no ties and no<br>
randomness.<br>
<br>
To boil that down to a simple districting algorithm:<br>
1. input locations of all P people in country.<br>
2. compute for each person v, its nearest neighbor NN(v).<br>
3. for(v=1 to P){ asset(v)=1; }<br>
4. for(v=1 to P){ increment asset(NN(v)); }<br>
5. while(P>W){<br>
5a. find v minimizing asset(v);<br>
5b. eliminate v (decrementing P) and transfer her assets to NN(v);<br>
}<br>
6. the W remaining people are the winners, i.e. become district centers.<br>
<br>
In step 5a, ties could be broken deterministically using some function<br>
of distances,<br>
or just randomly.<br>
It is possible to implement the above algorithm to run in O(PlogP) time by<br>
using fast all-nearest-neighbor algorithms in step 2 and implementing<br>
step 5 with the aid of a "heap" (also called "priority queue") data<br>
structure.<br>
Those improve over the naive runtime which would have been O(P^2).<br>
<br>
With this algorithm, if the people in step 1 come in "census blocks" then<br>
it is easy to start out with "weighted people" where each block is<br>
replaced by a person at its center with weight (i.e. assets) equal to<br>
the block population<br>
in step 3, and in step 4 you increment by the weight of v not just by +1.<br>
<br>
So this has been a simple, efficient, and flexible districting<br>
algorithm, which probably usually doesn't perform horribly badly.<br></blockquote><div><br></div><div>I agree that it definitely deserves to be simulated. Might do quite well...</div><div><br></div><div>- Andy</div>
</div>