Czy istnieje znany algorytm planowania pojedynków turniejowych?

10

Zastanawiam się tylko, czy istnieje już algorytm planowania turniejów, którego mógłbym użyć, a nawet nieco dostosować.

Oto moje wymagania:

  • Każda zmienna liczba przeciwników należących do zmiennej liczby drużyn / klubów musi być sparowana z przeciwnikiem
  • Dwóch przeciwników nie może pochodzić z tego samego klubu
  • Jeśli jest nieparzysta liczba graczy, 1 z nich losowo wybierany jest na pożegnanie

Docenione zostaną wszelkie algorytmy związane z tego rodzaju zestawem wymagań.

EDYCJA: Muszę uruchomić to maksymalnie raz, tworząc pojedynki w pierwszej „rundzie” turnieju.

barfoon
źródło
Możesz spojrzeć na maksymalne dopasowanie .
sick

Odpowiedzi:

1

Z mojego krótkiego czasu na Wikipedii dwadzieścia sekund temu wygląda na to, że musisz najpierw zdecydować o strategii eliminacji. Zobacz Wikipedia:

  1. System szwajcarski
  2. Turniej pojedynczej eliminacji
  3. Turniej podwójnej eliminacji

W artykule z pojedynczą eliminacją opisano techniki inicjowania (poszukiwany algorytm) dość ogólnie i wyglądało to pomocne, choć nie całkiem algorytm.

Chris Pfohl
źródło
Wolę Szwajcar, który daje średnią pozycję w rankingu w odróżnieniu od podwójnej / pojedynczej eliminacji i znajduje najlepszych N graczy w tej samej liczbie rund, co turniej eliminacji N.
Kaczka Mooing
1

Tworząc to na bieżąco, wydaje się, że początkowy algorytm dopasowywania jest dość prosty:

While two or more clubs have at least one member not paired  
    select the two clubs with the most unpaired members
    select a random unpaired member from each club
    pair those members

Jeśli pozostanie jedna osoba, będzie to osoba losowa, z jednym wyjątkiem. Jeśli jeden klub ma więcej członków niż wszyscy przeciwnicy razem wzięci, resztki zawsze będą z tego klubu. Realistycznie rzecz biorąc, jest to bardzo rzadka sytuacja, a wybranie zakupu z innego klubu pozostawi jeszcze więcej osób.

Mucząca Kaczka
źródło