Hlavní navigace

Preferenční hlasování ve sdílené tabulce Schulzeho metodou

14. 9. 2024 9:51 (aktualizováno) Pavel Ponec

Hledáte vhodný termín pro společnou událost? Nejen v tomto případě by vám mohl přijít vhod článek, který popisuje zkušenost s preferenčním hlasováním účastníků ve sdílené tabulce dokumentu Google Sheets s využitím Schulzeho metody. Tato metoda bývá považována za jednu z nejlepších, které splňují Condorcetovo kritérium.

Výhodou následujícího řešení je jednoduchost: v zásadě stačí navrhnout strukturu tabulky ve sdílených dokumentech, popsat pravidla, cíl hlasování, termín ukončení (hlasování) a rozeslat odkazy voličům. Protože vítězů hlasování může být více, je vhodné dohodnout se předem na postupu určení jednoho vítěze. Například pomocí jiné hodnotící metody nebo podle pořadového čísla kandidátů. Upozorňuji, že se zvyšujícím se počtem účastníků se zvyšuje riziko, že voliči si budou údaje vzájemně přepisovat – ať už omylem nebo záměně. Vhodným opatřením může být použití funkce chráněné rozsahy (funkce dokumentu), kde každý volič dostane pro zápis povolených jen několik buněk v řádku. Příprava takové tabulky však bude pracnější a voliči budou muset mít svůj účet. Taktizování by nepochybně omezilo skrytí hlasů ostatních voličů, ale tohle je zřejmě nad možnostmi tabulky Google Sheets.

Další výklad budu demonstrovat na fiktivní volbě termínu pro nějaké společné setkání. Volby se mohou účastnit členové týmu včetně svých přátel. Tým se dohodl, že každý hlas člena bude mít váhu počtu účastníků, které volba zastupuje. Sdílená tabulka by pak mohla vypadat takto:

Členové týmu se také dohodli, že prioritu termínu vyjádří pomocí čísel od jedné do pěti. Známkování je jako ve škole: 1 reprezentuje nejlepší termín, pětka znamená, že se termín vůbec nehodí. Pokud někdo neví, buňku ponechá prázdnou. Hodnota čísel však slouží jen pro sestavení preferenčního pořadí termínů, nemá přímý vliv na výsledek. Vítěze hlasování vyhodnotí veřejně dostupná on-line kalkulačka preferenčního hlasování. Pro ni si předtím připravíme data do sloupce H (s nadpisem Preferences). Využijeme k tomu uživatelskou funkci PREFERENCES, která je napsaná v jazyce Javascript tady. Vzorec v buňce H3 vypadá takto:

= PREFERENCES( B3; "C"; C3:G3; 3)
Popis parametrů podle pořadí: 
  1. Odkaz na buňku obsahující váhu preference. Pokud preference nevyužijeme, zapíšeme hodnotu 1. 
  2. Textový název sloupce, který reprezentuje první termín (obecně prvního kandidáta).
  3. Odkaz na pole obsahující preferenční čísla. 
  4. Výchozí hodnota pro nezadané preference, nabízí se nějaká hodnota blízko středu.

Tělo Javascriptové funkce se vkládá do dokumentu Google Sheets přes menu: Rozšíření → Apps Script. Po ukončení hlasování data ze sloupce H přeneseme do zmíněné Kalkulačky. Stiskem tlačítka pro výpočet zobrazíme dialog s výsledkem:

Výsledek obsahuje posloupnost znaků reprezentujících jednotlivé kandidáty, kde znak koresponduje se sloupcem tabulky (toho kandidáta). Znaky jsou rozděleny do skupin oddělených pomlčkou. Vítězná skupina pak je vlevo a směrem doprava postupují skupiny s nižší úspěšností. Tohle hlasování má tedy právě jednoho vítěze.

Výsledek hlasování nakonec přepíšeme z Kalkulačky zpět do tabulky a dokument uzamkneme proti zápisu. Kalkulačka během výpočtu neposílá žádná data na server a výsledek si počítá přímo v internetovém prohlížeči. Kalkulačku lze spustit také lokálně (ze zdrojových kódů), stačí k tomu počítač s internetovým připojením a Java 17. Projekt Kalkulačky obsahuje jednotkové testy, které výsledky porovnávají s modelovými příklady na Wikipedii, případně s výsledky konkurenčních aplikací. Kalkulačka běží na internetu od roku 2017.

Alternativy

Možná někoho napadne legitimní otázka: když už mám ty preference v tabulce, nelze je prostě sečíst? Vítěze by pak určil součet s nejmenší hodnotou.

Pokud pominu váhu jednotlivých preferencí, tak podobné řešení popsal už v roce 1770 matematik Jean-Charles de Borda. Rozdíl je v tom, že jeho metoda nesčítá hodnoty preferencí, ale pořadová čísla seřazených kandidátů. Za hlavní nevýhodu Bordovy metody se považuje zvýšená zranitelnost vůči strategickému hlasování organizovaných skupin. Metoda občas také nenajde kandidáta, který by porazil každého jiného kandidáta v přímém srovnání. Handicapů je více, podrobnosti najdete na Wikipedii.

Pro srovnání zmíním ještě tradiční většinový volební systém, ve kterém volič vybírá z nabídky právě jednoho kandidáta. Metoda se běžně používá například u prezidentských voleb, které v prvním kole vyberou dva finalisty. Může však vést k výsledkům, které neodrážejí skutečné rozložení podpory voličů a vyhrát může i kandidát, proti němuž hlasovala většina. Podrobnosti najdete opět na Wikipedii.

Obecně tedy platí, že každá z výše popsaných metod může (ale nemusí) dávat různé výsledky. Protože Kalkulačka Schulzeho metody poskytuje výsledky všech výše uvedených metod, rozdíly lze snadno demonstrovat na modelovém případě volebních preferencí:

8:A-BC
5:B-C-A
9:Z

Pokud vložíme takové přání voličů do Kalkulačky, dostaneme výsledek:

Result;

Za povšimnutí stojí, že Schulzeho metoda zařadila vítěze Většinového systému až na poslední místo. Zároveň druhý nejlepší kandidát Schulzeho by se do druhého kola voleb (finále) Většinového systému ani nedostal.

Internetové odkazy:

Sdílet