Share this on Facebook
download .zip with all pictures
Here are thoughts I have.
1. You could define “fair” vs. “unfair” as follows: “A set of electoral boundaries is ‘unfair’ if an election results in a distribution of seats among parties that is grossly different from the distribution of seats that would occur if seats were assigned to parties proportionally based on total party popular vote.” (You can define “grossly” using various statistical concepts, but I don’t want to get into all the details here.) So by this definition, NC is “unfair”, because the popular vote split 53-47, which would imply a “fair” seat split of maybe 7-6 or 8-5, but the *real* seat split was 10-3.
2. Someone else mentioned Voronoi diagrams. There’s a decent paper out there somewhere that talks about this. Basically, you start with as many “seeds” as you want districts. Put those seeds in population centres (places where the density is the highest). If you have one area that’s a huge more-than-one-seat area (e.g. New York City within New York state in the paper’s example), give that area as many seeds as it would get seats, then repeat this process on that sub-area. Then, from each seed, add the nearest census block to that seed. Do this in rotation for all the seeds until the district reaches its required population. There’s a guy named Brian Olson who’s done a bunch of work with an algorithm much like this (I think he’s u/BrianOlson, and his website is [bdistricting.com](http://bdistricting.com)).
3. Another idea I have works like this: Start at one “corner” of the state. Take the county that’s there. If it’s got a smaller population than a district needs to have, add a neighbouring county. Repeat until you get more than enough, then shave off parts of one or, at most, two counties until the district has the right population. If a county has too many people for one district, break it down by municipal boundaries, and do something similar. If a given municipality has too many people for one district, break it down by “neighbourhoods” and do something similar.
Yes, 2. and 3. both require human intervention, and can’t be completely objective. But they can sure as hell be done a lot more reasonably, even with not-entirely-unbiased human beings intervening as and when required. I got Brian Olson’s open source code, but haven’t had time to get into it and play with it the way I’d like.
(One possible “rule” that could stem from #3 that would be relatively easy to enforce: If a district contains portions only of 3 counties, you can’t add more portions of any other counties until you “fill up” your use of one of those existing 3 counties. So, like, if your district starts with the southern half of each of counties Able, Baker, and Charlie, you can’t add any pieces of neighbouring counties Delta and Echo unless and until you add the other half of at least one of Able, Baker, and Charlie.