You can't lose a district

I dislike the notion of a district being 'lost'. It's more that they squish around.
When someone says that a specific district may be lost, I think it's misleading.

No one is going to suddenly not be in a district because their district was 'lost', they still have representatives in state legislature and congress same as before.
A state can lose districts and seats in the US House, but no specific district can be lost. The region and the people are still covered.
They may be covered by a district with a different shape and different boundaries that cut differently, but that is a normal thing that happens every ten years.
Things change, but nothing is ever 'lost'.


Texas, Are you kidding me?

Above: a detail inset from the Texas state legislature's "plan C 125" for congressional redistricting.
Here, no craziness required, you can have the map for free: http://bdistricting.com/2010/TX_Congress/


The problem with New Hampshire

Just now I look at my software and at New Hampshire and realize I can't do their House of Representatives because I'm only using 1 byte for the district number and they have 400 representatives.

Maybe storing the district number as a byte turns out to have been premature optimization, but I think in an early version of the software I was holding many full mappings in memory at once, so it made more sense back then. Now that I'm just holding one at a time I could upgrade to 16 bit numbers, that advanced technology of 1980.

Also I still haven't written an Alaska filter to munge the data into a contiguous realm instead of breaking at -180/180 degrees longitude around the Aleutians.

But aside from that I think I have all the state data imported and most of the congressional and state legislature maps with at least one solution.


NJ Incumbent Protection vs My Way

This story about proposed maps for the New Jersey State Senate suggests that a bipartisan incumbent protection gerrymander is in the works proposed by the Democrats.

Here's a comparison of the proposed map linked there and my current most compact map for the New Jersey Senate:


Louisiana, their proposal vs mine

An early version of Louisiana Senate Bill 1 (for a special session) has been filed and contains maps for redistricting the Louisiana State Senate.
(starts with legalese district format, listing county and precinct numbers that make up the district, statistics and maps follow in appendices)

They have much wider tolerances for population difference than I adhere to. The least populous district having 110,475 people and the most with 121,985. A difference of 11,510 people. I can do it in 1,030.

My plan creates 5 majority-black districts. Theirs has 10.
My map:
Their map:

Similarly, SB3 proposes Congressional districts.
Here they claim a spread from 755,526 to 755,592, only 66 people different. My solver could only get down to 5,465.
One majority-black district with 62%. I only got one district up to 41.8% black and 49.7% white.
Their map:
My map ( http://bdistricting.com/2010/LA_Congress/ ):


the smallest way to store data

is not to store it at all.
A unique id for a US Census block winds up being 15 decimal digits, which fits handily into an 8 byte int.
Actually there are less than 10,000,000 blocks in the US, so that could easily be a 32 bit number.
But if what I really want to do is store a mapping from each block to district number for each block (easily a 1 byte number), the smallest way to store this is just a list of district numbers. Use the Census data file as a canonical ordering of the blocks.
CSV for this becomes 15 decimal digits, comma, one to three decimal digits, newline. 20 bytes vs 1.
For the hundreds of thousands of blocks in Texas, after gzipping the CSV, this is a 2372 KB file. gzipped byte list is 32 KB.
Sadly, a CSV file in a .zip archive seems to be the common interchange format for these things.
At least I get to use my format between my client and my server.


Help Me Compute

Here it is, the place to download the client for Linux and MacOS (x86_64 only right now):

It's not nice, it needs to be run from a terminal command line, it might take a couple minutes to set up, and it might not even work on some systems, if so, any email with bug reports and comments would be welcome.

Also, my own little compute farm (a core i7 linux box and a pair of core 2 duo Macs) now has results for many of the states that data is currently out for. The latest results always at


Early results

I have my own computers running night and day on the 2010 Census data that started coming out a couple weeks ago. Soon I'll post Mac and Linux clients for those who want to help compute better solutions. The best results so far will be available at:

For example, here's a possible map for Virginia's Congressional districts:


2010 liftoff!

I have a first results on 2010 data! It's just 1000 generations of the nearest neighbor solver, so I'm sure I'll do better soon. So far I've run it for NJ and VA. Had to toss the super-fine face+edges based linking and fall back to common-line-segment linking based on the tabblock tiger maps. The faces seem to have lots of 'blocks' that don't exist in the redistricting data. Probably extra detail on water and unpopulated areas.


Census Released 4 States of 2010 Data

While I was away on vacation for two weeks, the census posted 2010 redistricting data for Louisiana, Mississippi, New Jersey and Virginia. All of the geometry data is out.
I have the geometry all processed. I should get those first states imported into my system some time this week.