Anyways, this last weekend, I learned how to "cut turf". For the layman, that means breaking up a precinct into more-or-less walkable routes with reasonable numbers of doors to knock on. There's a neat little Google Map app embedded in VoteBuilder.com that does it. This has been a problem, as last night, I had a dream that lasted for quite a while, where much of the imagery was directly inspired by the turf-cutting view in google. I don't want to say the dream was about turf cutting, but... eerily close.
After separating the turf into reasonable-sized bunches, there are reports that get printed out. My field organizer thinks that it makes sense to put the pages in those reports into a walking order, since each page corresponds to a street. I'm not totally convinced that this is actually a net-time saving proposition (for me at least), but I've deferred to her experience. The big question, of course, is what is the best way to walk the route. Joy called while I was ordering some packets, and she said something to the effect of, "you sound thinky".
I've come up with a few things to try to minimize, roughly in order:
- Number of times to move the car
- Total distance walked
- Number of times walker has to flip the page
- The feeling of backtracking
I've also concluded from my own walking experience that it's helpful to actually indicate on the map that gets printed what the order I'm suggesting is, as well as label unlabelled streets. This way, when people get my packets, they don't have to think, "What was this person thinking?" They might think, "Why did this person think this route was a good one?" but at least they'll know what I thought their route was. Also, they'll have some idea what order their packet is in, in case they want to reorganize.
I'm sure that there's some computational algorithm to figure out the best route. It even seems like it might be some highly-constrained travelling salesman problem. Given that there's usually on the order of N=50 doors per packet, it seems like even a near-brute-force algorithm might work. I should look into the API for google maps and see if I can't put something together... starting on the 5th.