## Friday, November 02, 2012

### What is the least amount of land that will make you President?

Matthew Yglesias in the slate calculates what he thinks is the smallest area of land a candidate could win and still win this presidential election. Densely populated states will have more electoral college votes per square kilometer and so you can win the election while winning a relatively small surface area of America.
His reasoning is 'I started with a list of states in order of population density. So you have DC, then New Jersey, then Rhode Island, then Massachusetts, and so forth. Eventually you get a set that wins you the electoral college. Except the bloc of the 18 densest states gives you 282 electoral votes—way more than you need. Eliminate Michigan, the 18th densest, and you have 266 electoral votes. So then you can round things out with little New Hampshire's four electoral votes and you have your winning map'.

I checked this allocation with the GLPK program below. I used the electoral votes listed here and the state areas listed on wikipedia This gets 270 votes with an area of 1625012km². US states + DC is an area of 9826630km² so 16.54% of the US could win an election.

The states are Delaware, District of Columbia, Hawaii, New Hampshire, Rhode Island, Connecticut, Maryland, Indiana, Massachusetts, Virginia, New Jersey, North Carolina, Ohio, Illinois, Pennsylvania, Florida, New York, California. My map is here

Matthew Yglesias' map is the same so he did find the optimal solution by hand.

```/*code to find the least land area to get 270 votes. Run with 'glpsol -m election.mod -o out'
*/
/* sets */
set STATES;
set NEED;

/* parameters */
param VotesTable {i in STATES, j in NEED};
param Cost {i in STATES};
param Need {j in NEED};

/* decision variables: x1: alabama, x2: , x3: , x4:  x51: Wyoming*/
var x {i in STATES} binary >= 0;

/* objective function */
minimize z: sum{i in STATES} Cost[i]*x[i];

/* Constraints */
s.t. const{j in NEED} : sum{i in STATES} VotesTable[i,j]*x[i] >= Need[j];

/* data section */
data;

set STATES :=  Alaska Delaware "District of Columbia" Montana "North Dakota" "South Dakota" Vermont Wyoming Hawaii Idaho Maine "New Hampshire" "Rhode Island" Nebraska Nevada "New Mexico" Utah "West Virginia" Arkansas Kansas Mississippi Connecticut Iowa Oklahoma Oregon Kentucky "South Carolina" Alabama Colorado Louisiana Arizona Maryland Minnesota Wisconsin Indiana Missouri Tennessee Washington Massachusetts Virginia Georgia "New Jersey" "North Carolina" Michigan Ohio Illinois Pennsylvania Florida "New York" Texas California;

Alabama 9
Arizona 11
Arkansas 6
California 55
Connecticut 7
Delaware 3
"District of Columbia" 3
Florida 29
Georgia 16
Hawaii 4
Idaho 4
Illinois 20
Indiana 11
Iowa 6
Kansas 6
Kentucky 8
Louisiana 8
Maine 4
Maryland 10
Massachusetts 11
Michigan 16
Minnesota 10
Mississippi 6
Missouri 10
Montana 3
"New Hampshire" 4
"New Jersey" 14
"New Mexico" 5
"New York" 29
"North Carolina" 15
"North Dakota" 3
Ohio 18
Oklahoma 7
Oregon 7
Pennsylvania 20
"Rhode Island" 4
"South Carolina" 9
"South Dakota" 3
Tennessee 11
Texas 38
Utah 6
Vermont 3
Virginia 13
Washington 12
"West Virginia" 5
Wisconsin 10
Wyoming 3;

param Cost:=
Alabama 135765
Arizona 295254
Arkansas 137732
California 423970
Connecticut 14357
Delaware 6447
"District of Columbia" 177
Florida 170304
Georgia 153909
Hawaii 28311
Idaho 216446
Illinois 149998
Indiana 94321
Iowa 145743
Kansas 213096
Kentucky 104659
Louisiana 134264
Maine 91646
Maryland 32133
Massachusetts 27336
Michigan 250494
Minnesota 225171
Mississippi 125434
Missouri 180533
Montana 380838
"New Hampshire" 24216
"New Jersey" 22588
"New Mexico" 314915
"New York" 141299
"North Carolina" 139389
"North Dakota" 183112
Ohio 116096
Oklahoma 181035
Oregon 254805
Pennsylvania 119283
"Rhode Island" 4002
"South Carolina" 82932
"South Dakota" 199731
Tennessee 109151
Texas 695621
Utah 219887
Vermont 24901
Virginia 110785
Washington 184665
"West Virginia" 62755
Wisconsin 169639
Wyoming 253336;

param Need:=