Gerrymandering
Gerrymandering is to shape constituencies so that certain parties get advantages or disadvantages. The number of seats a party gets, can be greatly influenced.
When I heard about gerrymandering I didnt so much think about politicians and dirty tricks, but instead how flawed the electoral system is. I mean, it is surely not that hard to avoid gerrymandering. You could make a constituency agnostic system like this:
- Put all votes into one pool, distribute the seats to the parties proportional to the votes.
- Then allot those seats to the constituencies.
The parties get the same number of seats no matter how the constituencies are shaped. Problem solved.
Not that hard?
Let us take a closer look... Step 1 is not as trivial as it sounds, but it is manageable. Here is one way to do it:
// n: The number of seats to distribute.
// v: An array, v[i] is the number of votes party i got overall.
// Return an array where slot i is the number of seats party i gets.
total = sum(v)
vn = map(*n,v)
for every index i in v do
s = floor(vn[i]/total) // sure seats for party i
seats[i] = s
remains[i] = vn[i] - s*total
for every index i of the n - sum(seats) largest values in remains do
seats[i] += 1 // extra seat for party i
return seats
Step 2 poses more of a challenge.
function allot( d , v )
// d: An array. d[i] is the number of seats party i got overall.
// v: A 2 dimensional array. v[i,j] is the number of votes party i got
// in constituency j.
// Return an array where slot i is the number of the party that got
// the representative from constituency i.
WORK IN PROGRESS
It has to be something with the candidates that got the most votes are elected. But it of course has to match, so that it is the candidates from the right parties that gets the seats that were calculated in step 1.
I wrestled a little with it, and there were ways to approach it that were promising at first, but after some more wrestling turned out to give weird results. Take for example this election.
100 203
- 300
201 -
202 -
(Dash means that the party does not have
any candidates in the constituency.)
Two constituencies, four parties. The first two parties get one representative each. But for the first constituency it is the least popular candidate of all.
Maybe constituency agnostic systems just give strange results, so maybe we shouldnt set our expectations too high.
The next special case I came up with was this.
- 305 307 - 304 303 - 302 301 308 102 - 306 - 103 300 101 100 200 - -
Three constituencies, seven parties. The first three parties get one representative each. But none of them have a candidate in the first constituency.
function allot( d , v )
// d: An array. d[i] is the number of seats party i got overall.
// v: A 2 dimensional array. v[i,j] is the number of votes party i got
// in constituency j.
// Return an array where slot i is the number of the party that got
// the representative from constituency i.
IMPOSSIBLE
Did we get wiser?
Constituency agnostic electoral systems do not exist. I have not formalized it, but am pretty sure that it is impossible to have an electoral system that is both constituency agnostic and meets the most basic requirements for electoral systems.
A better approach is probably to have general constraints for how to draw up the constituencies, that makes it deterministic. That is, if two persons each draw up the constituencies while meeting the constraints, they have to end up with the same result.
But notice how different electoral systems give different results. Let us say 100 representatives needs to be elected, and there are three parties that have approximately 40%, 40% and 20% support in all constituencies. If the 100 constituencies each elect a representative, the third party will not get any seats. But if the seats are distributed according to the total number of votes, they will get around 20 seats. The electoral system decides the outcome.
So even if gerrymandering somehow was eliminated, politicians would still be able to give themselves advantages, and their opponents disadvantages, by changes to the electoral system. They could gerrymander on a higher level, so to speak.