Wybory

Nie znam się na polityce, ale od strony algorytmicznej wydaje mi się, że procedura wyborów jest nieprzemyślana. Sytuację najchętniej zamodelowałbym tak: każdy obywatel posiada jakąś listę preferencji, tj. potrafi uszeregować kandydatów od najfajniejszego do najgorszego. Celem jest wybranie na prezydenta takiego kandydata, aby ludzie byli jak najbardziej zadowoleni. Jak mierzyć zadowolenie? O ile rozumiem panujący ustrój, to polega on na tym, że wybrany zostaje ten kandydat X, którego najwięcej ludzi ma na początku listy preferencji (chyba, że jest kilku kandydatów którzy przekroczą jakiś tam próg, wtedy jest między nimi dogrywka, ale to na razie olejmy). System ten jednak ma poważną wadę, uświadomienie sobie której powoduje, że niektóre osoby zamiast oddawać głos na osobę, która jest na czele ich listy preferencji, głosują na jakąś inną, aby skompensować tę wadę. Co prowadzi do wypaczenia systemu a co za tym idzie być może kolejnych prób kompensacji itd. Wada polega na tym, że jeśli moja lista preferencji to A,B,C, ale czuję, że A może mieć marne szanse na zostanie prezydentem i prawdziwa bitwa będzie między B i C, to oddaję głos na B, bo wiem, że głosowanie na A i tak nie ma sensu, więc lepiej wykrzyczeć swoją niechęć do C. Tylko, że skąd w zasadzie mogę wiedzieć czy A ma marne szanse? Z prawyborów? Z sondaży? Z wyników poprzednich wyborów? Wszystkie te źródła mają szansę być zmanipulowane nie tyle przez media, co właśnie przez samych respondentów (chyba, że ankieta pozwala im wskazać pełną listę preferencji). Jak wyobrażam sobie rozwiązanie tego problemu? Pewnie powinienem zacząć od zdefiniowania celu jaki chcę zoptymalizować, ale szczerze mówiąc wole zacząć od algorytmu, a potem dopasować do niego definicję problemu. Ja to widzę tak, że mówiąc "moja lista preferencji to A,B,C" mam na myśli "chciałbym, żeby wygrał A, ale jeśli to niemożliwe, to chciałbym aby wygrał B, a jeśli to też jest niemożliwe, no to trudno, niech będzie C". Z tego wprost można wysnuć algorytm, o ile tylko doprecyzuje się co to znaczy "niemożliwe". Definicja, która nie powinna budzić zbyt dużych kontrowersji to: "niemożliwe aby wygrał wybory ten, na którego oddano najmniej głosów". Proponowałbym zatem aby na karcie do głosowania zamiast jednego krzyżyka trzeba było wpisać w każdą kratkę cyfrę, tak aby każdy głosujący zdradził permutację kandydatów na jego liście preferencji. Algorytm wyboru prezydenta wyglądałby tak:
kandydaci <- {1,2,..,n}
while length(kandydaci)>1 do
  C[1..n] = {0,0,...,0}
  foreach lista_preferencji in głosy
    C[first(lista_preferencji)] ++
  next lista_preferencji
  worst = first(kandydaci)
  foreach kandydat in kandydaci
    if C[kandydat] < C[worst] then
      worst = kandydat
    endif
  next kandydat
  kandydaci.erase(worst)
  foreach lista_preferencji in głosy
    lista_preferencji.erase(worst)
  next lista_preferencji
end 
return first(kandydaci)
Oczywiście takie coś trwałoby latami, dlatego w praktyce należałoby poprosić komisje okręgowe, aby pogrupowały ze sobą głosy, które mają identyczną listę preferencji i przesłały do centrali jedynie liczbę wystąpień każdej permutacji. Przy 6 kandydatach to raptem 120 liczb. Czy Wy też czujecie, że to by było bardziej fair? Jeśli tak, to może umiecie mi powiedzieć jaką funkcję celu optymalizuje ten algorytm? Jaka definicja demokracji i szczęścia z niego wypływa? Czy umiecie wyłonić zwycięzce szybciej niż w min(n!,m)*n? Jeśli nie, to czy zastanawialiście się kiedyś nad jakimś innym algorytmem? Czy zdarzyło Wam się kiedyś zagłosować nie "za A" tylko "przeciw C", czyli "na B jako mniejsze zło"? Kiedyś w toalecie mojego rodzinnego domu wśród innych dowcipów rysunkowych wyciętych z gazet, widniała instrukcja obsługi karty do głosowania, instruująca jak zaznaczyć kratkę obok jedynego słusznego kandydata w zależności od tego czy głosujemy "za", "zdecydowanie za", "przeciw temu drugiemu", "obojętne", itd.

Popularne posty z tego bloga

Szczęście jako problem inżynieryjny

Kilka rzeczy, o których żałuję, że nie powiedziano mi, gdy byłem młody

Produkt: Ojciec*