algorytm.org

Metoda Hare-Niemeyer'a

Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Metoda Hare-Niemeyer'a
Ocena użytkowników:***** / 5
SłabyŚwietny 
Wpisany przez Tomasz Lubiński, 22 kwietnia 2006 14:10

W ramach modelu wyborów proporcjonalnych wyróżnić można kilka metod przydzielania mandatów na podstawie wyników. Opisywana metoda wywodzi swoją nazwę od nazwiska metody zaproponowanej początkowo przez Thomasa Hare'a i zmodyfikowanej następnie przez niemieckiego matematyka Horsta Niemeyer'a. Algorytm ten znany jest również pod nazwą metody największych reszt (ang. Largest reminder method).

Dla każdej partii obliczany jest następujący współczynnik:
\frac{v_i*s}{v_t}
gdzie:
vi - liczba głosów zdobytych przez i-tą partię w wyborach,
vt - liczba głosów oddanych na wszystkie partie,
s - liczba mandatów do przydzielenia.

W pierwszym kroku każda partia otrzymuje tyle mandatów ile wynosi całkowita część obliczonego dla niej współczynnika. Czyli jeżeli współczynnik wynosi 2.1202 to partia otrzymuje 2 mandaty, w przypadku gdy współczynnik wynsi 5.899928 partia otrzymuje 5 mandatów.
W kolejnym kroku patrzymy na reszty współczynników (wartości po przecinku). Dopóki pozostają jeszcze wolne mandaty przydzielamy je tym partiom, które mają największą wartość po przecinku.
Metoda ta sprzyja głównie małym i średnim ugrupowaniom.

Przykład:

Niech będzie dany okręg 7-mandatowy, w którym walczy 5 partii, każda otrzymała następującą liczbę głosów.
Partia APartia BPartia CPartia DPartia E
12281012850543352

W pierwszym kroku algorytmu obliczymy współczynniki. Sumaryczna liczba oddanych głosów wynsi: 1228 + 1012 + 850 + 543 + 352 = 3985.
Partia A (0)Partia B (0)Partia C (0)Partia D (0)Partia E(0)
2,1571,7781,4930,9540,618

Przydzielimy każdej partii tyle mandatów ile wynosi część całkowita obliczonego współczynnika. Zostawimy tylko reszty współczynników, które potrzebne będą w kolejnym kroku
Partia A (2)Partia B (1)Partia C (1)Partia D (0)Partia E(0)
0,1570,7780,4930,9540,618

Przydzieliliśmy do tej pory 4 mandaty z 7. Pozostały zatem 3 wolne mandaty, przydzielamy je tym partiom, które mają największą wartość po przecinku. W tym kroku największą wartość współczynnika ma partia D. Wyzerujemy jej wartość współczynnika by nie wziąć jej pod uwagę przy przydzielaniu następnego mandatu.
Partia A (2)Partia B (1)Partia C (1)Partia D (1)Partia E(0)
0,1570,7780,49300,618

W tym kroku największą wartość współczynnika ma partia B i to ona otrzymuje mandat.
Partia A (2)Partia B (2)Partia C (1)Partia D (1)Partia E(0)
0,15700,49300,618

Ostatni wolny mandat otrzymuje partia E.
Partia A (2)Partia B (2)Partia C (1)Partia D (1)Partia E(1)
0,15700,49300,618

Czyli ostatecznie partia A ma 2 mandaty, partia B 2 mandaty, partia C 1 mandat, partia D 1 mandat oraz partia E jeden mandat.

Implementacje
AutorJęzyk
programowania
KomentarzOtwórzPobierzOcena
Tomasz LubińskiC/C++
.cpp
.cpp
***** / 1
Tomasz LubińskiDelphi/Pascal
.pas
.pas
***** / 1
Tomasz LubińskiJava
.java
.java
***** / 1
 
Dodaj własną implementację tego algorytmu
  • Zaloguj się na stronie
Plik:
Język
programowania:
Komentarz:
  By móc dodać implementacje zaloguj się na stronie

Poprawiony: 15 sierpnia 2012 07:29
Dodaj komentarz