Algorytm kojarzenia: jak naprawdę działają kojarzenia szwajcarskie

Rozdział 5 — Przewodnik Jak działa algorytm kojarzenia FIDE Dutch: kryteria C1-C19 uproszczone, grupy punktowe, kolory, floaterzy. Zaktualizowany do przepisów FIDE 2026. Zawiera przewodnik po plikach TRF.

Za każdym razem, gdy klikasz "Generuj kojarzenia" w turnieju szwajcarskim, w ułamku sekundy działa w tle zaawansowany algorytm. Zrozumienie, jak on działa, nie tylko zaspokoi Twoją ciekawość — pomoże Ci wyjaśnić "nietypowe" kojarzenia graczom, uniknąć typowych błędów konfiguracyjnych i w pełni wykorzystać oprogramowanie do kojarzeń. Ten rozdział wyjaśnia system FIDE Dutch, zaktualizowany do przepisów obowiązujących od 1 lutego 2026.

Dlaczego algorytm? Dlaczego nie kojarzyć ręcznie?

W najwcześniejszych czasach turniejów szachowych sędziowie kojarzyli graczy ręcznie — często za pomocą fizycznej tablicy i kolorowych żetonów. Dla 8 graczy w 5 rundach jest to wykonalne. Dla 200 graczy w 9 rundach to logistyczny koszmar, który trwa godzinami i jest podatny na błędy.

Co ważniejsze, ręczne kojarzenie wprowadza stronniczość. Sędzia, który zna graczy, może (świadomie lub nie) tworzyć "ciekawe" spotkania, faworyzować niektórych graczy lub unikać pewnych kombinacji. Algorytm jest deterministyczny i przejrzysty: przy tych samych danych wejściowych zawsze produkuje ten sam wynik, a każdy może zweryfikować rezultat.

System FIDE Dutch nie jest pojedynczą regułą — to uporządkowana hierarchia kryteriów. Algorytm stara się najpierw spełnić kryteria o najwyższym priorytecie, a łagodzi kryteria o niższym priorytecie dopiero wtedy, gdy nie ma innego sposobu na ukończenie kojarzeń rundy.

Co zmieniło się w FIDE 2026

1 lutego 2026 FIDE wprowadziła w życie zmienioną wersję zasad kojarzenia szwajcarskiego (C.04.1, C.04.2, C.04.3). Zmiany to głównie doprecyzowania i przenumerowania, ale mają znaczenie dla każdego turnieju z ratingiem FIDE od tej daty:

ObszarPrzed lut. 2026Od lut. 2026
Numeracja kryteriów Różne kody literowo-cyfrowe (A1, B1…) Jednolita sekwencja C1–C19
Przydział kolorów Pewne niejasności w przypadkach brzegowych Jednoznaczne reguły dla wszystkich przypadków brzegowych
Nierozegrane partie Traktowane jako pełna wygrana dla historii kolorów Traktowane jako ½ punktu zarówno dla koloru, jak i Buchholza
System Bursteina Opisany w C.04.4 Pozostaje w C.04.4, drobne doprecyzowania
System podwójny szwajcarski Nowość: C.04.5 (dwa równoległe drabinki szwajcarskie)
Przyspieszenie Baku C.04.5 Przenumerowane na C.04.7
§ FIDE C.04.1 Zasady podstawowe (obowiązuje od 1 lut. 2026) i C.04.3 FIDE Dutch System (obowiązuje od 1 lut. 2026) to główne odniesienia. → Czytaj C.04.1  |  → Czytaj C.04.3

Grupy punktowe: fundament kojarzenia szwajcarskiego

Fundamentalna idea systemu szwajcarskiego jest prosta: gracze z równą liczbą punktów grają ze sobą. Grupa punktowa to zbiór wszystkich graczy, którzy w danym momencie turnieju mają tę samą liczbę punktów.

W ramach każdej grupy punktowej gracze są uszeregowani według rozstawienia (które zwykle opiera się na ich ratingu sprzed turnieju). Następnie grupa jest dzielona na dwie połowy: górną połowę (wyżej rozstawieni gracze) i dolną połowę (niżej rozstawieni gracze). Gracz 1 z górnej połowy gra z graczem 1 z dolnej połowy, gracz 2 z graczem 2, i tak dalej.

Kojarzenie grupy punktowej — przykład wizualny (8 graczy, runda 1)
GRUPA PUNKTOWA: 0,0 punktów (wszyscy gracze, runda 1)
S1Fischer2200 — GÓRNA POŁOWA
S2Kasparov2180 — GÓRNA POŁOWA
S3Tal2150 — GÓRNA POŁOWA
S4Petrosian2120 — GÓRNA POŁOWA
S5Spassky2080 — dolna połowa
S6Karpov2050 — dolna połowa
S7Botvinnik1990 — dolna połowa
S8Lasker1960 — dolna połowa
↕ kojarz górną połowę z dolną połową (S1↔S5, S2↔S6, S3↔S7, S4↔S8)
Fischer (B)vsSpassky (C)
Kasparov (B)vsKarpov (C)
Tal (B)vsBotvinnik (C)
Petrosian (B)vsLasker (C)

Po rundzie 1 grupy punktowe się dzielą. Gracze, którzy wygrali (1,0 punkt), tworzą górną grupę. Gracze, którzy zremisowali (0,5), tworzą środkową grupę. Gracze, którzy przegrali (0,0), tworzą dolną grupę. Algorytm następnie próbuje kojarzyć w ramach każdej grupy — ale sprawy szybko się komplikują, jak zobaczymy w rundzie 2.

Hierarchia kryteriów: C1 do C19

System FIDE Dutch definiuje 19 kryteriów, uporządkowanych według priorytetu. Przy generowaniu kojarzeń dla grupy punktowej algorytm stara się znaleźć kojarzenie, które spełnia jak najwięcej kryteriów o wysokim priorytecie. Jeśli spełnienie C3 oznacza naruszenie C7, wybiera C3 — chyba że C3 samo jest nadpisane przez C1 lub C2.

Oto najważniejsze kryteria wyjaśnione prostym językiem:

  • C1
    Żaden gracz nie otrzymuje więcej niż jednej pauzy Absolutne
    Pauza (darmowy punkt przy nieparzystej liczbie graczy) może być przyznana graczowi tylko raz i nigdy graczowi, który już ją otrzymał. Nie może zostać nadpisane.
  • C2
    Żaden gracz nie spotyka tego samego przeciwnika dwukrotnie Absolutne
    Algorytm nigdy nie skojarzy dwóch graczy, którzy już grali ze sobą w tym samym turnieju. To jest reguła absolutna — nie może być złagodzona, nawet w ostatniej rundzie. Jeśli uniknięcie jest naprawdę niemożliwe (bardzo małe turnieje z wieloma rundami), musi interweniować sędzia.
  • C3
    Minimalizuj różnicę punktową między skojarzonymi graczami Wysoki
    Gracze w tej samej grupie punktowej idealnie mają identyczne wyniki. Jeśli kojarzenie w ramach grupy jest niemożliwe, algorytm może kojarzyć między grupami punktowymi (floaterzy), ale stara się minimalizować różnicę punktów. Gracz z 3,0 punktami grający z kimś z 2,5 jest lepszy niż gra z kimś z 2,0.
  • C4
    Minimalizuj liczbę downfloaterów Wysoki
    Downfloater to gracz, który zostaje przeniesiony ze swojej grupy punktowej w dół do następnej grupy, ponieważ nie mógł być skojarzony w swojej własnej grupie. Algorytm stara się minimalizować, jak często to się zdarza.
  • C5
    Żaden gracz nie floatuje w dół dwa razy z rzędu, jeśli można tego uniknąć Wysoki
    Jeśli gracz został przeniesiony do niższej grupy w poprzedniej rundzie, algorytm stara się tego uniknąć ponownie w tej rundzie. Kolejny downfloating jest surowo karany.
  • C6–C8
    Równowaga i naprzemienność kolorów Wysoki
    Każdy gracz powinien jak najczęściej zmieniać kolory (białe, czarne, białe, czarne…). Żaden gracz nie powinien grać więcej niż 2 kolejne partie tym samym kolorem. "Preferencja koloru" jest śledzona od rundy 1 i wpływa na każdą kolejną decyzję o kojarzeniu.
  • C9–C12
    Ograniczenia różnicy kolorów Średni
    "Różnica kolorów" to liczba partii białymi minus liczba partii czarnymi. Przepisy FIDE dążą do utrzymania tej wartości w granicach ±1 jak najdłużej. Gracze z dużą nierównowagą kolorów mają priorytet dla preferowanego koloru w następnej rundzie.
  • C13–C19
    Rozstawienie i jakość kojarzenia w grupie punktowej Średni
    Spośród wszystkich poprawnych kojarzeń spełniających C1–C12, algorytm wybiera to, które najlepiej odpowiada "idealnej" strukturze górna połowa vs dolna połowa. Tutaj kolejność ratingu/rozstawienia ponownie odgrywa rolę jako miara jakości w grupie.
Kluczowe spostrzeżenie

Algorytm nie optymalizuje pod kątem "najlepszego szachowego spotkania" — optymalizuje pod kątem zgodności z hierarchią kryteriów. Czasami produkuje to kojarzenia, które wydają się dziwne dla graczy. Sekcja 9 tego rozdziału wyjaśnia najczęstsze scenariusze "dziwnych kojarzeń".

Przydział kolorów: białe, czarne i równowaga

Przydział kolorów jest jednym z najbardziej niezrozumiałych elementów kojarzenia szwajcarskiego. Gracze często czują, że dostają zbyt wiele czarnych — i czasem mają rację, ale zwykle algorytm robi dokładnie to, czego wymagają przepisy.

Preferencja koloru vs prawo do koloru

Gracz ma preferencję koloru, jeśli jego historia kolorów jest nierównomierna (więcej białych niż czarnych lub odwrotnie). Ma prawo do koloru, jeśli grał dwie kolejne partie tym samym kolorem — w takim przypadku musi otrzymać następnym razem przeciwny kolor, chyba że nie da się w ogóle przeprowadzić kojarzeń rundy.

Gdy dwóch graczy ze sprzecznymi prawami do koloru jest ze sobą skojarzonych, algorytm musi złamać regułę dla jednego z nich. Wybiera gracza z mniejszym roszczeniem — zazwyczaj tego, którego sekwencja kolorów była ogólnie mniej nierównomierna.

Kolor w rundzie 1

W rundzie 1 wszyscy gracze mają równą historię kolorów (brak). Kolory są przydzielane według ogólnej zasady: wyżej rozstawiony gracz (w górnej połowie) otrzymuje białe, niżej rozstawiony gracz otrzymuje czarne. Dlatego w Memoriale Alechina Fischer (S1) gra białymi, a Spassky (S5) czarnymi.

§ Zasady przydziału kolorów są określone w FIDE C.04.3, sekcje 4–7 (obowiązuje od 1 lut. 2026). → Czytaj C.04.3

Floaterzy i downfloaterzy

Gdy grupa punktowa ma nieparzystą liczbę graczy, jeden gracz nie może być skojarzony w ramach grupy i musi zostać przeniesiony. Ten gracz nazywany jest floaterem.

Downfloater jest przenoszony do następnej niższej grupy punktowej (np. z grupy 3,0-punktowej do grupy 2,5-punktowej). Upfloater to gracz w niższej grupie, który przyjmuje tego "gościa" z góry.

Algorytm stara się minimalizować floating (kryteria C4–C5). Gdy floating jest nieunikniony, stosuje określone reguły dotyczące tego, kto floatuje: najniżej rozstawiony gracz w grupie punktowej jest preferowanym downfloaterem, chyba że ten gracz już floatował w dół w poprzedniej rundzie lub ma szczególnie silne prawo do koloru, które uniemożliwia kojarzenie w niższej grupie.

📉 Przykład downfloatera — runda 2 Memoriału Alechina

Po rundzie 1: Fischer, Kasparov, Tal, Petrosian wszyscy wygrali → 4 graczy na 1,0 punkt (parzysta grupa, floater niepotrzebny).

Spassky, Karpov, Botvinnik, Lasker wszyscy przegrali → 4 graczy na 0,0 punktów (parzysta grupa, floater niepotrzebny).

Runda 2 jest czysta: grupa 1,0 kojarzy się wewnętrznie, grupa 0,0 kojarzy się wewnętrznie.

Ale wyobraź sobie, że Tal zremisował zamiast wygrać: wtedy mielibyśmy 3 graczy na 1,0, 2 na 0,5 i 3 na 0,0. Grupa 0,5 ma tylko 2 graczy — co jest w porządku (jedno kojarzenie). Ale grupa 1,0 ma 3 graczy — jeden musi sfloatować w dół do grupy 0,5. Najniżej rozstawiony gracz na 1,0 (Petrosian, S4) staje się downfloaterem.

Runda 1 szczegółowo: Memoriał Alechina

Prześledźmy pełne kojarzenie rundy 1 krok po kroku dla naszego turnieju z 8 graczami.

Dane wejściowe: 8 graczy, wszyscy na 0,0 punktów, uszeregowani według rozstawienia ratingowego. Jedna grupa punktowa: {Fischer, Kasparov, Tal, Petrosian, Spassky, Karpov, Botvinnik, Lasker}.

Krok 1 — Podziel na pół: Górna połowa = Fischer, Kasparov, Tal, Petrosian (S1–S4). Dolna połowa = Spassky, Karpov, Botvinnik, Lasker (S5–S8).

Krok 2 — Zastosuj kryteria C1–C2: Brak wcześniejszych przeciwników (pierwsza runda), więc brak ograniczeń. Brak dotychczasowych pauz.

Krok 3 — Idealne kojarzenie: S1↔S5, S2↔S6, S3↔S7, S4↔S8. Wszystkie kryteria spełnione. To jest kojarzenie.

Krok 4 — Przydział kolorów: Górna połowa domyślnie otrzymuje białe w rundzie 1.

Memoriał Alechina — Runda 1 ostateczne kojarzenia
Stolik 1Fischer (B)vsSpassky (C)
Stolik 2Kasparov (B)vsKarpov (C)
Stolik 3Tal (B)vsBotvinnik (C)
Stolik 4Petrosian (B)vsLasker (C)

Runda 2 szczegółowo: formują się grupy punktowe

Po wynikach rundy 1 (Fischer 1–0 Spassky, Kasparov 1–0 Karpov, Tal 1–0 Botvinnik, Petrosian 1–0 Lasker), mamy dwie grupy punktowe:

Grupa A (1,0 pkt): Fischer, Kasparov, Tal, Petrosian — wszyscy 4 wygrali.
Grupa B (0,0 pkt): Spassky, Karpov, Botvinnik, Lasker — wszyscy 4 przegrali.

Kojarzenie grupy A: Podział na pół → Fischer, Kasparov (góra) vs Tal, Petrosian (dół). Ideał: Fischer↔Tal, Kasparov↔Petrosian. Sprawdź C2: jeszcze ze sobą nie grali. ✓

Krok kolorów: W rundzie 1 Fischer i Kasparov mieli białe. Teraz potrzebują czarnych. Tal i Petrosian mieli czarne, teraz potrzebują białych. Więc: Tal (B) vs Fischer (C), Petrosian (B) vs Kasparov (C). ✓

Zobacz kojarzenia generowane na żywo w ChessPairings.org

Utwórz testowy turniej z 8 graczami i obserwuj, jak algorytm działa runda po rundzie.

Wypróbuj teraz →

"Dziwne" kojarzenia: dlaczego tak się dzieje?

Gracze i organizatorzy często kwestionują pewne kojarzenia. Oto najczęstsze sytuacje i algorytmiczne przyczyny każdej z nich.

"Gracz X ma 3 punkty, ale jest skojarzony z kimś, kto ma tylko 2,5"

Dzieje się tak, gdy grupa 3,0-punktowa ma nieparzystą liczbę graczy i ktoś musi sfloatować w dół. Algorytm wypróbował każdą kombinację w grupie 3,0, ale stwierdził, że wszystkie możliwe kojarzenia naruszają C1, C2 lub C5 (np. wszyscy gracze z 3,0 punktami już ze sobą grali lub mają poważne konflikty kolorów). Downfloating jednego gracza do grupy 2,5 był jedyną poprawną opcją.

"Gracz X zawsze dostaje czarne"

Gdy gracz floatuje w dół, często musi zaakceptować kolor, którego normalnie by nie otrzymał, ponieważ kojarzenie w niższej grupie tego wymaga. To znane ograniczenie systemu szwajcarskiego — ograniczenie równowagi kolorów ma niższy priorytet niż C1–C5, więc może zostać nadpisane.

"Dlaczego dwaj najlepsi gracze są skojarzeni już w rundzie 4?"

Jeśli obaj liderzy mają ten sam wynik, a algorytm nie znajduje żadnego innego poprawnego kojarzenia w ich grupie punktowej (wszyscy inni gracze w tej grupie już z nimi grali lub mają sprzeczne prawa do koloru), algorytm kojarzy dwóch najlepszych ze sobą. To jest poprawne zachowanie — hierarchia kryteriów tego wymaga.

Inne zatwierdzone systemy: Burstein, Przyspieszenie Baku

System Bursteina (C.04.4)

System Bursteina jest wariantem systemu Dutch z innym podejściem do tworzenia grup punktowych. Zamiast ścisłych grup punktowych z floaterami, pozwala na bardziej elastyczne kojarzenia międzygrupowe, utrzymując jednocześnie bliskość ratingową w parach. Jest rzadziej stosowany w turniejach z ratingiem FIDE, ale jest uznawany jako alternatywa.

§ FIDE C.04.4 — System Bursteina (obowiązuje od 1 lut. 2026). → Czytaj C.04.4

Przyspieszenie Baku (C.04.7)

Przyspieszenie Baku jest stosowane w bardzo dużych turniejach szwajcarskich (zazwyczaj 200+ graczy), aby zapewnić, że najlepsi gracze spotkają się wcześniej, zamiast spotykać się dopiero w ostatnich rundach po wygraniu kilku łatwych partii ze słabszą opozycją.

Idea: w pierwszych kilku rundach najwyżej oceniani gracze otrzymują "wirtualną" przewagę pół punktu, co umieszcza ich w wyższej grupie punktowej niż ich rzeczywisty wynik. Tworzy to wcześniejsze konfrontacje między silnymi graczami. Od rundy 3 lub 4 wirtualne punkty są usuwane i normalne kojarzenie szwajcarskie zostaje wznowione.

§ FIDE C.04.7 — Systemy przyspieszone: Przyspieszenie Baku (obowiązuje od 1 lut. 2026). → Czytaj C.04.7

Czytanie pliku TRF

TRF (Tournament Report File) to standardowy format wymiany danych turniejów szachowych. ChessPairings.org eksportuje zarówno TRF-16 (starszy format), jak i TRF-25 (nowy format 2025). Tak wygląda plik TRF-16 dla naszego Memoriału Alechina po rundzie 1:

012 Alekhin Memorial Open
022 Club Room, Alessandria
032 2026-03-03
042 2026-03-03
052 Mikhail (Chief Arbiter)
062 5
072 1
082 Rapid
092 15+10
132 Buchholz Cut-1, Buchholz, Wins, Direct Encounter
001  No  Name              Rtg  FID       Pts  R1
001    1 Fischer           2200 1234567   1.0  0000 W  5 1
001    2 Kasparov          2180 2345678   1.0  0000 W  6 1
001    3 Tal               2150 3456789   1.0  0000 W  7 1
001    4 Petrosian         2120 4567890   1.0  0000 W  8 1
001    5 Spassky           2080 5678901   0.0  0000 B  1 0
001    6 Karpov            2050 6789012   0.0  0000 B  2 0
001    7 Botvinnik         1990 7890123   0.0  0000 B  3 0
001    8 Lasker            1960 8901234   0.0  0000 B  4 0

Każda linia 001 to jeden gracz. Czytając od lewej do prawej: numer gracza, imię, rating, FIDE ID, łączny wynik, a następnie dla każdej rundy: pozycja startowa (0000 = nie dotyczy), kolor (W/B), numer przeciwnika, wynik (1 = wygrana, 0 = przegrana, = = remis, H = pół-punktowa pauza, F = walkower).

Nigdy nie musisz edytować tego pliku ręcznie — ChessPairings.org generuje go automatycznie. Ale umiejętność jego czytania pomaga przy weryfikacji wyników lub importowaniu do innego oprogramowania.

bbpPairings: silnik stojący za ChessPairings.org

ChessPairings.org używa bbpPairings jako silnika do kojarzeń szwajcarskich — otwartoźródłowej implementacji systemu FIDE Dutch w C++, utrzymywanej przez społeczność programistów szachowych. bbpPairings jest używany przez wiele federacji krajowych i systemy zarządzania turniejami na całym świecie.

Do obliczeń dogrywkowych ChessPairings.org używa dedykowanego modułu TieBreakServer (Python), który implementuje wszystkie 28 obsługiwanych systemów dogrywek niezależnie od silnika kojarzeń. To rozdzielenie zapewnia, że logika kojarzeń i dogrywek jest niezależnie weryfikowalna.

Oba silniki są aktualizowane za każdym razem, gdy FIDE zmienia swoje przepisy — zmiany przepisów z lutego 2026 są w pełni odzwierciedlone w aktualnej wersji ChessPairings.org.

Dla technicznie ciekawych

Problem kojarzenia Dutch jest matematycznie równoważny problemowi ważonego maksymalnego skojarzenia w teorii grafów. Każde potencjalne kojarzenie jest krawędzią z wagą reprezentującą, jak dobrze spełnia hierarchię kryteriów. Algorytm znajduje skojarzenie doskonałe o maksymalnej wadze — dlatego może to zająć ułamek sekundy nawet dla turniejów z 500 graczami.

Gotowy do zorganizowania swojego turnieju?

Kojarzenia szwajcarskie zgodne z FIDE 2026, 28 systemów dogrywek, całkowicie za darmo.

Utwórz darmowe konto