L'Algoritmo di Abbinamento: Come Funzionano gli Abbinamenti Svizzeri

Capitolo 5 — Guida Come funziona l'algoritmo di abbinamento olandese FIDE: criteri C1-C19 semplificati, gruppi di punteggio, colori, floater. Aggiornato per le regole FIDE 2026. Include guida ai file TRF.

Ogni volta che cliccate "Genera Abbinamenti" in un torneo Svizzero, un sofisticato algoritmo viene eseguito in millisecondi dietro le quinte. Capire come funziona non soddisferà solo la vostra curiosità — vi aiuterà a spiegare abbinamenti "insoliti" ai giocatori, evitare errori comuni di configurazione e ottenere il massimo dal vostro software di abbinamento. Questo capitolo demistifica il Sistema Olandese FIDE, aggiornato per le regole in vigore dal 1° febbraio 2026.

Perché un algoritmo? Perché non abbinare manualmente?

Agli albori dei tornei di scacchi, gli arbitri abbinavano i giocatori a mano — spesso con una scacchiera fisica e gettoni colorati. Per 8 giocatori in 5 turni, è gestibile. Per 200 giocatori in 9 turni, è un incubo logistico che richiede ore ed è soggetto a errori.

Più importante, l'abbinamento a mano introduce pregiudizi. Un arbitro che conosce i giocatori potrebbe (consapevolmente o meno) creare abbinamenti "interessanti", favorire certi giocatori o evitare certe combinazioni. Un algoritmo è deterministico e trasparente: dato lo stesso input, produce sempre lo stesso output, e chiunque può verificare il risultato.

Il Sistema Olandese FIDE non è una singola regola — è una gerarchia ordinata di criteri. L'algoritmo cerca di soddisfare i criteri con la priorità più alta per primi, e rilassa quelli a priorità inferiore solo quando non c'è altro modo per completare gli abbinamenti del turno.

Cosa è cambiato nella FIDE 2026

Il 1° febbraio 2026, la FIDE ha messo in vigore una versione rivista delle regole di abbinamento Svizzero (C.04.1, C.04.2, C.04.3). Le modifiche sono per lo più chiarimenti e rinumerazioni, ma sono importanti per qualsiasi evento valutato FIDE da quella data in poi:

AreaPrima feb 2026Da feb 2026
Numerazione criteri Vari codici lettera/numero (A1, B1…) Sequenza unificata C1–C19
Assegnazione colori Qualche ambiguità nei casi limite Regole esplicite per tutti i casi limite
Partite non giocate Trattate come vittoria piena per la storia colori Trattate come ½ punto sia per colore che per Buchholz
Sistema Burstein Descritto in C.04.4 Rimane in C.04.4, chiarimenti minori
Sistema Doppio Svizzero Nuovo: C.04.5 (due gironi Svizzeri paralleli)
Accelerazione Baku C.04.5 Rinumerato C.04.7
§ FIDE C.04.1 Regole Base (in vigore dal 1° feb 2026) and C.04.3 FIDE Dutch System (in vigore dal 1° feb 2026) sono i riferimenti principali. → Leggi C.04.1  |  → Leggi C.04.3

Gruppi di punteggio: la base dell'abbinamento Svizzero

L'idea fondamentale del Sistema Svizzero è semplice: i giocatori con punteggi uguali si affrontano tra loro. Un gruppo di punteggio è l'insieme di tutti i giocatori che hanno lo stesso numero di punti in un determinato momento del torneo.

All'interno di ogni gruppo di punteggio, i giocatori sono classificati per testa di serie (che è generalmente basata sul loro rating pre-torneo). Il gruppo viene poi diviso in due metà: la metà superiore (giocatori con testa di serie più alta) e la metà inferiore (giocatori con testa di serie più bassa). Il giocatore 1 della metà superiore affronta il giocatore 1 della metà inferiore, il giocatore 2 affronta il giocatore 2, e così via.

Abbinamento per gruppo di punteggio — esempio visivo (8 giocatori, Turno 1)
GRUPPO DI PUNTEGGIO: 0,0 punti (tutti i giocatori, Turno 1)
S1Fischer2200 — META' SUPERIORE
S2Kasparov2180 — META' SUPERIORE
S3Tal2150 — META' SUPERIORE
S4Petrosian2120 — META' SUPERIORE
S5Spassky2080 — metà inferiore
S6Karpov2050 — metà inferiore
S7Botvinnik1990 — metà inferiore
S8Lasker1960 — metà inferiore
↕ pair top half vs metà inferiore (S1↔S5, S2↔S6, S3↔S7, S4↔S8)
Fischer (W)vsSpassky (B)
Kasparov (W)vsKarpov (B)
Tal (W)vsBotvinnik (B)
Petrosian (W)vsLasker (B)

Dopo il turno 1, i gruppi di punteggio si dividono. I giocatori che hanno vinto (1,0 punti) formano il gruppo superiore. I giocatori che hanno pareggiato (0,5) formano il gruppo intermedio. I giocatori che hanno perso (0,0) formano il gruppo inferiore. L'algoritmo poi cerca di abbinare all'interno di ogni gruppo — ma le cose si complicano rapidamente, come vedremo nel Turno 2.

La gerarchia dei criteri: da C1 a C19

The FIDE Dutch system defines 19 criteria, ordered by priority. When generating pairings for a score group, the algorithm tries to find a pairing that satisfies as many high-priority criteria as possible. If satisfying C3 means violating C7, it chooses C3 — unless C3 is itself overridden by C1 or C2.

Ecco i criteri più importanti spiegati in linguaggio semplice:

  • C1
    Nessun giocatore riceve più di un bye Assoluto
    Un bye (punto gratuito quando c'è un numero dispari di giocatori) può essere assegnato solo una volta per giocatore, e mai a un giocatore che ne ha già ricevuto uno. Questo non può essere sovrascritto.
  • C2
    Nessun giocatore affronta lo stesso avversario due volte Assoluto
    L'algoritmo non abbinerà mai due giocatori che si sono già affrontati nello stesso torneo. Questa è una regola assoluta — non può essere rilassata, nemmeno nell'ultimo turno. Se evitare l'incontro è davvero impossibile (tornei molto piccoli con molti turni), l'arbitro deve intervenire.
  • C3
    Minimizzare la differenza di punteggio tra i giocatori abbinati Alta
    I giocatori nello stesso gruppo di punteggio idealmente hanno punteggi identici. Se l'abbinamento all'interno del gruppo è impossibile, l'algoritmo può abbinare tra gruppi diversi (floater), ma cerca di minimizzare il divario di punteggio. Un giocatore a 3,0 punti che gioca contro qualcuno a 2,5 è meglio che giocare contro qualcuno a 2,0.
  • C4
    Minimizzare il numero di downfloater Alta
    Un downfloater è un giocatore che viene spostato dal suo gruppo di punteggio al gruppo successivo perché non poteva essere abbinato nel suo gruppo. L'algoritmo cerca di minimizzare la frequenza con cui questo accade.
  • C5
    Nessun giocatore dovrebbe scendere due volte di fila se evitabile Alta
    Se un giocatore è stato spostato in un gruppo inferiore nel turno precedente, l'algoritmo cerca di evitare di farlo di nuovo in questo turno. Lo spostamento consecutivo verso il basso è pesantemente penalizzato.
  • C6–C8
    Equilibrio e alternanza dei colori Alta
    Ogni giocatore dovrebbe alternare i colori (Bianco, Nero, Bianco, Nero…) il più possibile. Nessun giocatore dovrebbe avere più di 2 partite consecutive con lo stesso colore. La "preferenza colore" viene tracciata dal turno 1 e influenza ogni decisione di abbinamento successiva.
  • C9–C12
    Vincoli sulla differenza di colore Media
    La "differenza di colore" è il conteggio delle partite col Bianco meno le partite col Nero. Le regole FIDE mirano a mantenere questo valore entro ±1 il più a lungo possibile. I giocatori con grandi squilibri di colore hanno la priorità per il loro colore preferito nel turno successivo.
  • C13–C19
    Posizionamento e qualità dell'abbinamento nel gruppo di punteggio Media
    Tra tutti gli abbinamenti validi che soddisfano C1–C12, l'algoritmo seleziona quello che meglio corrisponde alla struttura "ideale" metà superiore vs metà inferiore. È qui che l'ordine di rating/testa di serie torna in gioco come misura di qualità all'interno del gruppo.
The key insight

The algorithm is not optimizing for "the best chess matchup" — it's optimizing for adherence to the criteria hierarchy. Sometimes this produces pairings that look odd to players. Section 9 of this chapter explains the most common "strange pairing" scenarios.

Assegnazione del colore: Bianco, Nero e equilibrio

Color assignment is one of the most misunderstood parts of Swiss pairing. Players often feel they're getting too many Blacks — and sometimes they're right, but usually the algorithm is doing exactly what the rules require.

Preferenza colore vs diritto al colore

Un giocatore ha una preferenza colore se la sua storia colori è sbilanciata (più partite col Bianco che col Nero o viceversa). Ha un diritto al colore se ha avuto due partite consecutive con lo stesso colore — in quel caso, deve ricevere il colore opposto nel turno successivo, a meno che sia impossibile completare l'abbinamento del turno.

Quando due giocatori con diritti al colore in conflitto vengono abbinati insieme, l'algoritmo deve violare la regola per uno di loro. Sceglie il giocatore con la pretesa minore — tipicamente quello la cui sequenza di colori è stata meno sbilanciata nel complesso.

Colore nel Turno 1

Nel Turno 1, tutti i giocatori hanno una storia colori uguale (nessuna). I colori sono assegnati secondo un principio generale: il giocatore con testa di serie più alta (nella metà superiore) riceve il Bianco, quello con testa di serie più bassa riceve il Nero. Ecco perché nell'Alekhin Memorial, Fischer (S1) gioca col Bianco e Spassky (S5) gioca col Nero.

§ Le regole di assegnazione del colore sono specificate in FIDE C.04.3, sezioni 4–7 (in vigore dal 1° feb 2026). → Leggi C.04.3

Floater e downfloater

Quando un gruppo di punteggio ha un numero dispari di giocatori, un giocatore non può essere abbinato all'interno del gruppo e deve essere spostato. Questo giocatore è chiamato floater.

Un downfloater viene spostato al gruppo di punteggio successivo inferiore (ad es., dal gruppo a 3,0 punti al gruppo a 2,5 punti). Un upfloater è il giocatore nel gruppo inferiore che riceve questo "ospite" dall'alto.

L'algoritmo cerca di minimizzare il floating (criteri C4–C5). Quando il floating è inevitabile, segue regole specifiche su chi scende: il giocatore con il ranking più basso nel gruppo di punteggio è il downfloater preferito, a meno che quel giocatore non sia già sceso nel turno precedente o abbia una pretesa colore particolarmente forte che rende impossibile l'abbinamento nel gruppo inferiore.

Esempio downfloater — Turno 2 dell'Alekhin Memorial

Dopo il Turno 1: Fischer, Kasparov, Tal, Petrosian hanno tutti vinto → 4 giocatori a 1,0 punti (gruppo pari, nessun floater necessario).

Spassky, Karpov, Botvinnik, Lasker hanno tutti perso → 4 giocatori a 0,0 punti (gruppo pari, nessun floater necessario).

Il Turno 2 è pulito: il gruppo 1,0 si abbina al suo interno, il gruppo 0,0 si abbina al suo interno.

Ma immaginate che Tal avesse pareggiato invece di vincere: allora avremmo 3 giocatori a 1,0, 2 a 0,5 e 3 a 0,0. Il gruppo 0,5 ha solo 2 giocatori — il che va bene (un abbinamento). Ma il gruppo 1,0 ha 3 giocatori — uno deve scendere al gruppo 0,5. Il giocatore con il ranking più basso a 1,0 (Petrosian, S4) diventa il downfloater.

Turno 1 in dettaglio: l'Alekhin Memorial

Seguiamo l'abbinamento completo del Turno 1 passo per passo per il nostro torneo a 8 giocatori.

Input: 8 giocatori, tutti a 0,0 punti, classificati per testa di serie di rating. Un gruppo di punteggio: {Fischer, Kasparov, Tal, Petrosian, Spassky, Karpov, Botvinnik, Lasker}.

Passo 1 — Dividere a metà: Metà superiore = Fischer, Kasparov, Tal, Petrosian (S1–S4). Metà inferiore = Spassky, Karpov, Botvinnik, Lasker (S5–S8).

Passo 2 — Applicare i criteri C1–C2: Nessun avversario precedente (primo turno), quindi nessun vincolo. Nessun bye ancora.

Passo 3 — Abbinamento ideale: S1↔S5, S2↔S6, S3↔S7, S4↔S8. Tutti i criteri soddisfatti. Questo è l'abbinamento.

Passo 4 — Assegnazione colore: La metà superiore riceve il Bianco per default nel Turno 1.

Alekhin Memorial — Abbinamenti Finali Turno 1
Bd 1Fischer (W)vsSpassky (B)
Bd 2Kasparov (W)vsKarpov (B)
Bd 3Tal (W)vsBotvinnik (B)
Bd 4Petrosian (W)vsLasker (B)

Turno 2 in dettaglio: si formano i gruppi di punteggio

Dopo i risultati del Turno 1 (Fischer 1–0 Spassky, Kasparov 1–0 Karpov, Tal 1–0 Botvinnik, Petrosian 1–0 Lasker), abbiamo due gruppi di punteggio:

Gruppo A (1,0 pt): Fischer, Kasparov, Tal, Petrosian — tutti e 4 hanno vinto.
Gruppo B (0,0 pt): Spassky, Karpov, Botvinnik, Lasker — tutti e 4 hanno perso.

Abbinamento Gruppo A: Diviso a metà → Fischer, Kasparov (sopra) vs Tal, Petrosian (sotto). Ideale: Fischer↔Tal, Kasparov↔Petrosian. Verifica C2: nessuno ha già giocato contro l'altro. ✓

Passo colore: Nel Turno 1, Fischer e Kasparov avevano il Bianco. Ora hanno bisogno del Nero. Tal e Petrosian avevano il Nero, ora hanno bisogno del Bianco. Quindi: Tal (B) vs Fischer (N), Petrosian (B) vs Kasparov (N). ✓

Guarda gli abbinamenti generati dal vivo in ChessPairings.org

Crea un torneo di prova con 8 giocatori e guarda l'algoritmo lavorare turno dopo turno.

Provalo ora →

Abbinamenti "strani": perché succede?

Giocatori e organizzatori spesso mettono in discussione certi abbinamenti. Ecco le situazioni più comuni e la ragione algoritmica dietro ciascuna.

"Il giocatore X ha 3 punti ma è abbinato contro qualcuno con solo 2,5"

Questo accade quando il gruppo a 3,0 punti ha un numero dispari di giocatori e qualcuno deve scendere. L'algoritmo ha provato ogni combinazione all'interno del gruppo 3,0 ma ha trovato che tutti gli abbinamenti possibili violano C1, C2 o C5 (ad es., tutti i giocatori a 3,0 punti si sono già affrontati, o hanno gravi conflitti di colore). Far scendere un giocatore al gruppo 2,5 era l'unica opzione valida.

"Il giocatore X riceve sempre il Nero"

Quando un giocatore scende, spesso deve accettare un colore che normalmente non riceverebbe, perché l'abbinamento nel gruppo inferiore lo richiede. Questa è una limitazione nota del Sistema Svizzero — il vincolo sull'equilibrio dei colori ha una priorità inferiore rispetto a C1–C5, quindi può essere sovrascritto.

"Perché i primi due giocatori sono già abbinati al turno 4?"

Se entrambi i leader hanno lo stesso punteggio, e l'algoritmo non trova nessun altro abbinamento valido all'interno del loro gruppo di punteggio (tutti gli altri giocatori in quel gruppo li hanno già affrontati, o hanno diritti al colore in conflitto), l'algoritmo abbina i primi due tra loro. Questo è un comportamento corretto — la gerarchia dei criteri lo richiede.

Altri sistemi approvati: Burstein, Accelerazione Baku

Sistema Burstein (C.04.4)

Il sistema Burstein è una variante del sistema Olandese con un approccio diverso alla formazione dei gruppi di punteggio. Invece di gruppi di punteggio rigidi con floater, permette abbinamenti tra gruppi più flessibili mantenendo la vicinanza di rating all'interno delle coppie. È meno comunemente usato negli eventi valutati FIDE ma è riconosciuto come alternativa.

§ FIDE C.04.4 — Burstein System (in vigore dal 1° feb 2026). → Leggi C.04.4

Accelerazione Baku (C.04.7)

L'Accelerazione Baku è usata nei tornei Svizzeri molto grandi (tipicamente 200+ giocatori) per garantire che i giocatori di vertice si affrontino prima, invece di incontrarsi solo negli ultimi turni dopo aver vinto diverse partite facili contro avversari deboli.

L'idea: nei primi turni, ai giocatori con il rating più alto viene dato un mezzo punto "virtuale" di vantaggio, che li colloca in un gruppo di punteggio più alto del loro punteggio effettivo. Questo crea scontri anticipati tra giocatori forti. Dal turno 3 o 4 in poi, i punti virtuali vengono rimossi e l'abbinamento Svizzero normale riprende.

§ FIDE C.04.7 — Accelerated Systems: Baku Acceleration (in vigore dal 1° feb 2026). → Leggi C.04.7

Leggere un file TRF

Il TRF (Tournament Report File) è il formato di scambio standard per i dati dei tornei di scacchi. ChessPairings.org esporta sia TRF-16 (legacy) che TRF-25 (nuovo formato 2025). Ecco come appare un file TRF-16 per il nostro Alekhin Memorial dopo il Turno 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

Ogni riga 001 è un giocatore. Leggendo da sinistra a destra: numero giocatore, nome, rating, ID FIDE, punteggio totale, poi per ogni turno: ranking iniziale (0000 = non applicabile), colore (W/B), numero avversario, risultato (1 = vittoria, 0 = sconfitta, = = patta, H = bye mezzo punto, F = vittoria a forfait).

Non avrete mai bisogno di modificare questo file manualmente — ChessPairings.org lo genera automaticamente. Ma sapere come leggerlo aiuta quando si verificano i risultati o si importa in altri software.

bbpPairings: il motore dietro ChessPairings.org

ChessPairings.org usa bbpPairings come motore di abbinamento Svizzero — un'implementazione open-source in C++ del sistema Olandese FIDE mantenuta dalla comunità di programmazione scacchistica. bbpPairings è usato da molteplici federazioni nazionali e sistemi di gestione tornei in tutto il mondo.

Per il calcolo degli spareggi, ChessPairings.org usa un modulo dedicato TieBreakServer (Python), che implementa tutti i 28 sistemi di spareggio supportati indipendentemente dal motore di abbinamento. Questa separazione garantisce che la logica di abbinamento e quella di spareggio siano ciascuna verificabile indipendentemente.

Entrambi i motori vengono aggiornati ogni volta che la FIDE rivede le sue regole — le modifiche alle regole di febbraio 2026 sono pienamente riflesse nella versione corrente di ChessPairings.org.

Per i più curiosi dal punto di vista tecnico

Il problema dell'abbinamento Olandese è matematicamente equivalente a un problema di matching massimo pesato nella teoria dei grafi. Ogni potenziale abbinamento è un arco con un peso che rappresenta quanto bene soddisfa la gerarchia dei criteri. L'algoritmo trova il matching perfetto di peso massimo — ecco perché può impiegare una frazione di secondo anche per tornei con 500 giocatori.

Pronto a Organizzare il Tuo Torneo?

Abbinamenti Svizzeri conformi FIDE 2026, 28 sistemi di spareggio, completamente gratuito.

Crea Account Gratuito