Jak se generují rozpisy každý s každým a playoff

Stručné představení principů, které jsou používány při generování rozpisů každý s každým a playoff pavouků. Jedná se o text z bakalářské práce z roku 2012. Dnes už používám trochu modifikovaný postup, který ale vychází z níže popsaných principů.


Každý s každým

V rámci sezóny se odehrávají kola, v nichž se utkávají jednotlivé týmy mezi sebou. V každém kole může jeden tým odehrát maximálně jeden zápas a v rámci celé sezóny se utká minimálně jednou s každým účastníkem sezóny. Počet vzájemných zápasů týmů závisí na počtu period sezóny. V následující tabulce jsou zobrazeny základní údaje, které je nutno brát v úvahu před vygenerováním samotného rozpisu sezóny. Tabulka obsahuje, jak výpočty pro konkrétní počet týmů, tak i odvozené obecné vzorce pro libovolný počet týmů N.

Počet týmů 5 6 10 N
Počet zápasů v jednom kole 2 3 5 N / 2 *
Počet zápasů jednoho týmu 4 5 9 N - 1
Počet kol v periodě 5 5 9 (N - 1) nebo N #
Počet zápasů jedné periody 10 15 45 N * (N - 1) / 2

* – celočíselné dělení, tj. beze zbytku a se zaokrouhlením dolů
# – při sudém počtu týmů je počet kol N–1, při lichém počtu je počet kol roven počtu týmů N

Algoritmus

Generovací algoritmus je platný pro sudý i lichý počet týmů, protože v případě lichého počtu týmů by se doplnil jeden dočasný tým, který by identifikoval tým mající v daném kole volno. Algoritmus pro generování rozpisu sezóny se skládá ze šesti kroků:

  1. pokud je lichý počet týmů, doplň jeden dočasný tým,
  2. napsání týmů do dvou řad pod sebe,
  3. trvalé zafixování pozice jednoho týmu,
  4. uložení zápasů (tvořeny týmy napsanými pod sebou),
  5. pootočení nezafixovaných týmů o jednu pozici po směru hodinových ručiček,
  6. pokud nejsou vygenerována všechna kola, tak návrat na 4. krok.

Tento algoritmus nebere v potaz opakování domácích a hostujících zápasů jednotlivých týmů. K zajištění rovnoměrného rozložení domácích a venkovních zápasů slouží optimalizace 4. kroku algoritmu. U každého sudého zápasu v kole se prohodí domácí a hostující tým a jedná-li se o sudé kolo, tak dojde k prohození týmů u prvního zápasu, aby se zamezilo opakování u zafixovaného týmu.

Algoritmus každý s každým
Princip generování rozpisu každý s každým


Playoff

Playoff (vyřazovací systém) je pokročilým herním systémem, který tvoří hierarchickou strukturu. V playoff jsou v každém kole týmy spojeny do dvojic, přičemž do dalšího kola postoupí jen vítěz z dané dvojice. Každým kolem se počet aktivních účastníků snižuje o polovinu. U různých soutěží se může lišit počet zápasů, který je nutný k postupu do dalšího kola. Uspořádání týmů se odvíjí od nasazení jednotlivých účastníků. Počet kol playoff je roven log2N, kde N je počet týmů, které se zúčastnily prvního kola. Pro vygenerování úplného kola playoff musí být splněny dvě nutné podmínky:

  • počet účastníků je druhou mocninou čísla 2,
  • každý účastník má jedinečné číselné nasazení.

Algoritmus

V případě splnění nutných podmínek lze využít následující algoritmus pro vygenerování jednoho kola playoff:

  1. setřídění účastníků podle nasazení od nejvyššího k nejnižšímu nasazení,
  2. odebrání prvního a posledního účastníka,
  3. vytvoření zápasu z naposledy odebraných účastníků,
  4. pokud existují nepřiřazení účastníci, tak návrat na 2. krok

V podmínkách jsou zmíněni účastníci a ne přímo týmy. Při generování prvního kola jsou sice účastníky týmy se svým nasazením, ale při generování následných kol to mohou být vítězné týmy z předchozího kola nebo přímo kompletní zápasy předchozího kola.