Gerrymandering
Valgkredsmanipulation
Gerrymandering is to shape constituencies so that certain parties get advantages or disadvantages. The number of seats a party gets, can be greatly influenced.
Valgkredsmanipulation er at udforme valgkredse så bestemte partier får fordele eller ulemper. Det antal sæder et parti får, kan påvirkes kraftigt. I USA kalder de det gerrymandering.
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:
Da jeg hørte om valgkredsmanipulation tænkte jeg ikke så meget på politikere og beskidte kneb, men istedet på hvor fejlfyldt valgsystemet er. Jeg mener, det er da ikke så svært at undgå valgkredsmanipulation. Man kan lave et kreds-agnostisk system sådan her:
- Put all votes into one pool, distribute the seats to the parties proportional to the votes.
- Then allot those seats to the constituencies.
- Kom alle stemmer i en pulje, fordel sæderne til partierne proportionalt med stemmefordelingen.
- Fordel derefter sæderne til kredsene.
The parties get the same number of seats no matter how the constituencies are shaped. Problem solved.
Partierne får det samme antal sæder uanset kredsenes udformning. Problem løst.
Not that hard?
Ikke så svært?
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:
Lad os kigge nærmere på det... Skridt 1 er ikke så ligetil som det lyder, men det er til at have med at gøre. Her er en måde at gøre det på:
// 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
function distribute( n , v )
// n: Antallet af sæder der skal fordeles.
// v: Et array, v[i] er antallet af stemmer parti i fik ialt.
// Returnér et array hvor indgang i er antal sæder parti i får.
total = sum(v)
vn = map(*n,v)
for hvert indeks i i v gør
s = floor(vn[i]/total) // sikre sæder til parti i
seats[i] = s
remains[i] = vn[i] - s*total
for hvert indeks i af de n - sum(seats) største værdier i remains gør
seats[i] += 1 // ekstra sæde til parti i
returnér seats
Step 2 poses more of a challenge.
Skridt 2 er straks mere udfordrende.
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
function allot( d , v )
// d: Et array. d[i] er antal sæder parti i fik ialt.
// v: Et 2-dimensionelt array. v[i,j] er antal stemmer parti i fik
// i kreds j.
// Returnér et array hvor indgang i er tallet for partiet der fik
// repræsentanten fra kreds i.
UNDER UDARBEJDELSE
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.
Det skal være noget med at de kandidater der har fået flest stemmer vælges. Men det skal selvfølgelig gå op, så det er kandidater fra de rigtige partier der får sæderne der blev regnet ud i skridt 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.
Jeg tumlede lidt med det, og der var måder at gribe det an på som først virkede lovende, men efter lidt mere tumleri viste sig at give mærkelige resultater. Tag for eksempel denne afstemning.
100 203
- 300
201 -
202 -
(Dash means that the party does not have
any candidates in the constituency.)
100 203
- 300
201 -
202 -
(Bindestreg betyder betyder at partiet
ikke har kandidater i kredsen.)
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.
To kredse, fire partier. De to første partier får én repræsentant hver. Men for første kreds bliver det den mindst populære kandidat overhovedet.
Maybe constituency agnostic systems just give strange results, so maybe we shouldnt set our expectations too high.
Måske kreds-agnostiske systemer bare giver mærkelige resultater, så måske skal vi ikke sætte vores forventninger for højt.
The next special case I came up with was this.
Det næste særtilfælde jeg kom på var dette.
- 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.
Tre kredse, syv partier. De tre første partier får én repræsentant hver. Men ingen af dem har kandidater i den første kreds.
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
function allot( d , v )
// d: Et array. d[i] er antal sæder parti i fik ialt.
// v: Et 2-dimensionelt array. v[i,j] er antal stemmer parti i fik
// i kreds j.
// Returnér et array hvor indgang i er tallet for partiet der fik
// repræsentanten fra kreds i.
UMULIGT
Did we get wiser?
Blev vi klogere?
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.
Kreds-agnostiske valgsystemer findes ikke. Jeg har ikke formaliseret det, men er ret sikker på at det er umuligt at et valgsystem både er kreds-agnostisk og opfylder de mest basale krav til valgsystemer.
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.
En bedre måde at gribe det an på er nok at have generelle rammer for udformningen af kredse, som gør den deterministisk. Det vil sige, at hvis to personer hver for sig former kredsene og holder sig indenfor disse rammer, så må de nødvendigvis nå frem til samme resultat.
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.
Men læg mærke til hvordan forskellige valgsystemer giver forskellige resultater. Lad os sige der skal vælges 100 repræsentanter, og der er tre partier som har omtrent 40%, 40% og 20% opbakning i alle kredse. Hvis de 100 distrikter hver vælger én repræsentant, så får det tredje parti ingen sæder. Men fordeler man sæderne efter de samlede stemmetal, så får de omkring 20 sæder. Valgsystemet afgør resultatet.
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.
Så selv hvis valgkredsmanipulation på en eller anden måde blev afskaffet, ville politikere stadig kunne give sig selv fordele, og modstandere ulemper, ved at ændre på valgsystemet. De ville nu bare manipulere på et højere niveau.


