O Algoritmo de Emparelhamento: Como os Emparelhamentos Suíços Realmente Funcionam

Capítulo 5 — Guia Como funciona o algoritmo de emparelhamento FIDE Dutch: critérios C1-C19 simplificados, grupos de pontuação, cores, floaters. Atualizado para as regras FIDE 2026. Inclui guia de arquivo TRF.

Cada vez que você clica em "Gerar Emparelhamentos" em um torneio suíço, um algoritmo sofisticado é executado em milissegundos nos bastidores. Entender como ele funciona não vai apenas satisfazer sua curiosidade — vai ajudá-lo a explicar emparelhamentos "incomuns" aos jogadores, evitar erros comuns de configuração e aproveitar ao máximo seu software de emparelhamento. Este capítulo desmistifica o Sistema FIDE Dutch, atualizado para as regras em vigor desde 1 de fevereiro de 2026.

Por que um algoritmo? Por que não emparelhar manualmente?

Nos primórdios dos torneios de xadrez, os árbitros emparelhavam os jogadores à mão — frequentemente com um tabuleiro físico e fichas coloridas. Para 8 jogadores em 5 rodadas, isso é administrável. Para 200 jogadores em 9 rodadas, é um pesadelo logístico que leva horas e é propenso a erros.

Mais importante, emparelhar à mão introduz parcialidade. Um árbitro que conhece os jogadores pode (consciente ou inconscientemente) criar confrontos "interessantes", favorecer certos jogadores ou evitar certas combinações. Um algoritmo é determinístico e transparente: dado o mesmo input, ele sempre produz o mesmo output, e qualquer pessoa pode verificar o resultado.

O Sistema FIDE Dutch não é uma única regra — é uma hierarquia ordenada de critérios. O algoritmo tenta satisfazer primeiro os critérios de maior prioridade, e só flexibiliza critérios de menor prioridade quando não há outra forma de completar os emparelhamentos da rodada.

O que mudou na FIDE 2026

Em 1 de fevereiro de 2026, a FIDE colocou em vigor uma versão revisada das regras de emparelhamento suíço (C.04.1, C.04.2, C.04.3). As mudanças são principalmente esclarecimentos e renumerações, mas são importantes para qualquer evento com rating FIDE a partir dessa data:

ÁreaAntes de fev. 2026A partir de fev. 2026
Numeração dos critérios Vários códigos alfanuméricos (A1, B1…) Sequência unificada C1–C19
Alocação de cores Alguma ambiguidade em casos limítrofes Regras explícitas para todos os casos limítrofes
Partidas não jogadas Tratadas como vitória completa para histórico de cores Tratadas como ½ ponto tanto para cores quanto para Buchholz
Sistema Burstein Descrito em C.04.4 Permanece em C.04.4, pequenos esclarecimentos
Sistema suíço duplo Novo: C.04.5 (duas chaves suíças paralelas)
Aceleração de Baku C.04.5 Renumerado para C.04.7
§ FIDE C.04.1 Regras Básicas (em vigor desde 1 fev. 2026) e C.04.3 FIDE Dutch System (em vigor desde 1 fev. 2026) são as referências primárias. → Ler C.04.1  |  → Ler C.04.3

Grupos de pontuação: a base do emparelhamento suíço

A ideia fundamental do sistema suíço é simples: jogadores com pontuações iguais jogam entre si. Um grupo de pontuação é o conjunto de todos os jogadores que têm o mesmo número de pontos em determinado momento do torneio.

Dentro de cada grupo de pontuação, os jogadores são classificados pelo seu cabeça de chave (que geralmente se baseia no rating pré-torneio). O grupo é então dividido em duas metades: a metade superior (jogadores mais bem classificados) e a metade inferior (jogadores menos bem classificados). O jogador 1 da metade superior enfrenta o jogador 1 da metade inferior, o jogador 2 enfrenta o jogador 2, e assim por diante.

Emparelhamento de grupo de pontuação — exemplo visual (8 jogadores, rodada 1)
GRUPO DE PONTUAÇÃO: 0,0 pontos (todos os jogadores, rodada 1)
S1Fischer2200 — METADE SUPERIOR
S2Kasparov2180 — METADE SUPERIOR
S3Tal2150 — METADE SUPERIOR
S4Petrosian2120 — METADE SUPERIOR
S5Spassky2080 — metade inferior
S6Karpov2050 — metade inferior
S7Botvinnik1990 — metade inferior
S8Lasker1960 — metade inferior
↕ emparelhar metade superior vs metade inferior (S1↔S5, S2↔S6, S3↔S7, S4↔S8)
Fischer (Br)vsSpassky (Pr)
Kasparov (Br)vsKarpov (Pr)
Tal (Br)vsBotvinnik (Pr)
Petrosian (Br)vsLasker (Pr)

Após a rodada 1, os grupos de pontuação se dividem. Os jogadores que venceram (1,0 ponto) formam o grupo superior. Os jogadores que empataram (0,5) formam o grupo intermediário. Os jogadores que perderam (0,0) formam o grupo inferior. O algoritmo então tenta emparelhar dentro de cada grupo — mas as coisas ficam complicadas rapidamente, como veremos na rodada 2.

A hierarquia de critérios: C1 a C19

O sistema FIDE Dutch define 19 critérios, ordenados por prioridade. Ao gerar emparelhamentos para um grupo de pontuação, o algoritmo tenta encontrar um emparelhamento que satisfaça o maior número possível de critérios de alta prioridade. Se satisfazer C3 significa violar C7, ele escolhe C3 — a menos que C3 seja ele próprio sobreposto por C1 ou C2.

Aqui estão os critérios mais importantes explicados em linguagem simples:

  • C1
    Nenhum jogador recebe mais de um bye Absoluto
    Um bye (ponto livre quando há um número ímpar de jogadores) só pode ser concedido uma vez por jogador, e nunca a um jogador que já recebeu um. Isso não pode ser sobreposto.
  • C2
    Nenhum jogador enfrenta o mesmo adversário duas vezes Absoluto
    O algoritmo nunca emparelhará dois jogadores que já se enfrentaram no mesmo torneio. Esta é uma regra absoluta — não pode ser flexibilizada, mesmo na última rodada. Se a evitação for verdadeiramente impossível (torneios muito pequenos com muitas rodadas), o árbitro deve intervir.
  • C3
    Minimizar a diferença de pontuação entre jogadores emparelhados Alto
    Os jogadores no mesmo grupo de pontuação idealmente têm pontuações idênticas. Se o emparelhamento dentro do grupo for impossível, o algoritmo pode emparelhar entre grupos de pontuação (floaters), mas tenta minimizar a diferença de pontos. Um jogador com 3,0 pontos jogando contra alguém com 2,5 é melhor do que jogar contra alguém com 2,0.
  • C4
    Minimizar o número de downfloaters Alto
    Um downfloater é um jogador que é movido do seu grupo de pontuação para o grupo inferior porque não pôde ser emparelhado dentro do seu próprio grupo. O algoritmo tenta minimizar a frequência com que isso acontece.
  • C5
    Nenhum jogador faz downfloat duas vezes seguidas se evitável Alto
    Se um jogador foi movido para um grupo inferior na rodada passada, o algoritmo tenta evitar fazê-lo novamente nesta rodada. O downfloating consecutivo é penalizado pesadamente.
  • C6–C8
    Equilíbrio e alternância de cores Alto
    Cada jogador deve alternar cores (brancas, pretas, brancas, pretas…) tanto quanto possível. Nenhum jogador deve ter mais de 2 jogos consecutivos com a mesma cor. A "preferência de cor" é rastreada desde a rodada 1 e influencia cada decisão subsequente de emparelhamento.
  • C9–C12
    Restrições de diferença de cores Médio
    A "diferença de cores" é a contagem de jogos de brancas menos jogos de pretas. As regras da FIDE visam manter isso dentro de ±1 pelo maior tempo possível. Jogadores com grandes desequilíbrios de cores recebem prioridade para sua cor preferida na próxima rodada.
  • C13–C19
    Cabeça de chave e qualidade do emparelhamento dentro do grupo de pontuação Médio
    Entre todos os emparelhamentos válidos que satisfazem C1–C12, o algoritmo seleciona aquele que melhor corresponde à estrutura "ideal" de metade superior vs metade inferior. É aqui que a ordem de rating/cabeça de chave volta a entrar em jogo como medida de qualidade dentro do grupo.
O insight fundamental

O algoritmo não está otimizando para "o melhor confronto de xadrez" — está otimizando para aderência à hierarquia de critérios. Às vezes, isso produz emparelhamentos que parecem estranhos para os jogadores. A seção 9 deste capítulo explica os cenários mais comuns de "emparelhamentos estranhos".

Alocação de cores: brancas, pretas e equilíbrio

A atribuição de cores é uma das partes mais mal compreendidas do emparelhamento suíço. Os jogadores frequentemente sentem que estão recebendo muitas pretas — e às vezes estão certos, mas geralmente o algoritmo está fazendo exatamente o que as regras exigem.

Preferência de cor vs direito de cor

Um jogador tem uma preferência de cor se seu histórico de cores estiver desequilibrado (mais brancas do que pretas ou vice-versa). Ele tem um direito de cor se teve dois jogos consecutivos com a mesma cor — nesse caso, ele deve receber a cor oposta na próxima vez, a menos que seja impossível emparelhar a rodada.

Quando dois jogadores com direitos de cor conflitantes são emparelhados, o algoritmo deve quebrar a regra para um deles. Ele escolhe o jogador com a menor reivindicação — tipicamente aquele cuja sequência de cores foi menos desequilibrada no geral.

Cor na rodada 1

Na rodada 1, todos os jogadores têm um histórico de cores igual (nenhum). As cores são atribuídas por um princípio geral: o jogador mais bem classificado (na metade superior) recebe brancas, o jogador menos bem classificado recebe pretas. É por isso que no Memorial Alekhine, Fischer (S1) joga de brancas e Spassky (S5) joga de pretas.

§ As regras de alocação de cores estão especificadas em FIDE C.04.3, seções 4–7 (em vigor desde 1 fev. 2026). → Ler C.04.3

Floaters e downfloaters

Quando um grupo de pontuação tem um número ímpar de jogadores, um jogador não pode ser emparelhado dentro do grupo e deve ser movido. Este jogador é chamado de floater.

Um downfloater é movido para o próximo grupo de pontuação inferior (por exemplo, do grupo de 3,0 pontos para o grupo de 2,5 pontos). Um upfloater é o jogador no grupo inferior que recebe este "convidado" de cima.

O algoritmo tenta minimizar o floating (critérios C4–C5). Quando o floating é inevitável, ele segue regras específicas sobre quem faz float: o jogador mais baixo na classificação do grupo de pontuação é o downfloater preferido, a menos que esse jogador já tenha feito downfloat na rodada anterior ou tenha uma reivindicação de cor particularmente forte que torne impossível o emparelhamento no grupo inferior.

📉 Exemplo de downfloater — rodada 2 do Memorial Alekhine

Após a rodada 1: Fischer, Kasparov, Tal, Petrosian todos venceram → 4 jogadores com 1,0 ponto (grupo par, floater desnecessário).

Spassky, Karpov, Botvinnik, Lasker todos perderam → 4 jogadores com 0,0 pontos (grupo par, floater desnecessário).

A rodada 2 é limpa: o grupo de 1,0 emparelha internamente, o grupo de 0,0 emparelha internamente.

Mas imagine que Tal empatou em vez de vencer: então teríamos 3 jogadores com 1,0, 2 com 0,5 e 3 com 0,0. O grupo de 0,5 tem apenas 2 jogadores — o que é aceitável (um emparelhamento). Mas o grupo de 1,0 tem 3 jogadores — um deve fazer downfloat para o grupo de 0,5. O jogador mais baixo na classificação com 1,0 (Petrosian, S4) torna-se o downfloater.

Rodada 1 em detalhe: o Memorial Alekhine

Vamos rastrear passo a passo o emparelhamento completo da rodada 1 para nosso torneio de 8 jogadores.

Entrada: 8 jogadores, todos com 0,0 pontos, classificados por cabeça de chave de rating. Um grupo de pontuação: {Fischer, Kasparov, Tal, Petrosian, Spassky, Karpov, Botvinnik, Lasker}.

Passo 1 — Dividir ao meio: Metade superior = Fischer, Kasparov, Tal, Petrosian (S1–S4). Metade inferior = Spassky, Karpov, Botvinnik, Lasker (S5–S8).

Passo 2 — Aplicar critérios C1–C2: Sem adversários anteriores (primeira rodada), portanto sem restrição. Sem byes ainda.

Passo 3 — Emparelhamento ideal: S1↔S5, S2↔S6, S3↔S7, S4↔S8. Todos os critérios satisfeitos. Este é o emparelhamento.

Passo 4 — Atribuição de cores: A metade superior recebe brancas por padrão na rodada 1.

Memorial Alekhine — Rodada 1 emparelhamentos finais
Mesa 1Fischer (Br)vsSpassky (Pr)
Mesa 2Kasparov (Br)vsKarpov (Pr)
Mesa 3Tal (Br)vsBotvinnik (Pr)
Mesa 4Petrosian (Br)vsLasker (Pr)

Rodada 2 em detalhe: formam-se os grupos de pontuação

Após os resultados da rodada 1 (Fischer 1–0 Spassky, Kasparov 1–0 Karpov, Tal 1–0 Botvinnik, Petrosian 1–0 Lasker), temos dois grupos de pontuação:

Grupo A (1,0 pt): Fischer, Kasparov, Tal, Petrosian — todos os 4 venceram.
Grupo B (0,0 pt): Spassky, Karpov, Botvinnik, Lasker — todos os 4 perderam.

Emparelhamento do Grupo A: Dividir ao meio → Fischer, Kasparov (cima) vs Tal, Petrosian (baixo). Ideal: Fischer↔Tal, Kasparov↔Petrosian. Verificar C2: nenhum jogou contra o outro ainda. ✓

Passo das cores: Na rodada 1, Fischer e Kasparov tiveram brancas. Agora precisam de pretas. Tal e Petrosian tiveram pretas, agora precisam de brancas. Então: Tal (Br) vs Fischer (Pr), Petrosian (Br) vs Kasparov (Pr). ✓

Veja emparelhamentos gerados ao vivo no ChessPairings.org

Crie um torneio de teste com 8 jogadores e observe o algoritmo funcionar rodada a rodada.

Experimente agora →

Emparelhamentos "estranhos": por que isso acontece?

Jogadores e organizadores frequentemente questionam certos emparelhamentos. Aqui estão as situações mais comuns e a razão algorítmica por trás de cada uma.

"O jogador X tem 3 pontos mas está emparelhado contra alguém com apenas 2,5"

Isso acontece quando o grupo de 3,0 pontos tem um número ímpar de jogadores e alguém deve fazer downfloat. O algoritmo tentou todas as combinações dentro do grupo de 3,0, mas descobriu que todos os emparelhamentos possíveis violam C1, C2 ou C5 (por exemplo, todos os jogadores de 3,0 pontos já jogaram entre si, ou têm conflitos graves de cores). Fazer downfloat de um jogador para o grupo de 2,5 foi a única opção válida.

"O jogador X sempre recebe pretas"

Quando um jogador faz downfloat, muitas vezes deve aceitar uma cor que normalmente não receberia, porque o emparelhamento no grupo inferior exige isso. Esta é uma limitação conhecida do sistema suíço — a restrição de equilíbrio de cores tem prioridade menor que C1–C5, portanto pode ser sobreposta.

"Por que os dois melhores jogadores já estão emparelhados na rodada 4?"

Se ambos os líderes têm a mesma pontuação, e o algoritmo não encontra outro emparelhamento válido dentro do seu grupo de pontuação (todos os outros jogadores nesse grupo já jogaram contra eles, ou têm direitos de cor conflitantes), o algoritmo emparelha os dois melhores entre si. Este é o comportamento correto — a hierarquia de critérios exige isso.

Outros sistemas aprovados: Burstein, Aceleração de Baku

Sistema Burstein (C.04.4)

O sistema Burstein é uma variante do sistema Dutch com uma abordagem diferente para a formação de grupos de pontuação. Em vez de grupos de pontuação rígidos com floaters, permite emparelhamentos entre grupos mais flexíveis enquanto mantém proximidade de rating dentro dos pares. É menos usado em eventos com rating FIDE, mas é reconhecido como alternativa.

§ FIDE C.04.4 — Sistema Burstein (em vigor desde 1 fev. 2026). → Ler C.04.4

Aceleração de Baku (C.04.7)

A Aceleração de Baku é usada em torneios suíços muito grandes (tipicamente 200+ jogadores) para garantir que os melhores jogadores se enfrentem mais cedo, em vez de se encontrarem apenas nas rodadas finais após vencerem vários jogos fáceis contra adversários fracos.

A ideia: nas primeiras rodadas, os jogadores com maior rating recebem uma vantagem "virtual" de meio ponto, que os coloca em um grupo de pontuação mais alto do que sua pontuação real. Isso cria confrontos mais cedo entre jogadores fortes. A partir da rodada 3 ou 4, os pontos virtuais são removidos e o emparelhamento suíço normal é retomado.

§ FIDE C.04.7 — Sistemas acelerados: Aceleração de Baku (em vigor desde 1 fev. 2026). → Ler C.04.7

Lendo um arquivo TRF

O TRF (Tournament Report File) é o formato de intercâmbio padrão para dados de torneios de xadrez. O ChessPairings.org exporta tanto TRF-16 (legado) quanto TRF-25 (novo formato 2025). Veja como um arquivo TRF-16 aparece para nosso Memorial Alekhine após a rodada 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

Cada linha 001 é um jogador. Lendo da esquerda para a direita: número do jogador, nome, rating, FIDE ID, pontuação total, e para cada rodada: classificação inicial (0000 = não aplicável), cor (W/B), número do adversário, resultado (1 = vitória, 0 = derrota, = = empate, H = bye de meio ponto, F = vitória por WO).

Você nunca precisa editar este arquivo manualmente — o ChessPairings.org o gera automaticamente. Mas saber como lê-lo ajuda ao verificar resultados ou importar para outro software.

bbpPairings: o motor por trás do ChessPairings.org

O ChessPairings.org usa o bbpPairings como seu motor de emparelhamento suíço — uma implementação de código aberto em C++ do sistema FIDE Dutch mantida pela comunidade de programação de xadrez. O bbpPairings é usado por múltiplas federações nacionais e sistemas de gestão de torneios em todo o mundo.

Para cálculos de desempate, o ChessPairings.org usa um módulo dedicado TieBreakServer (Python), que implementa todos os 28 sistemas de desempate suportados independentemente do motor de emparelhamento. Esta separação garante que a lógica de emparelhamento e desempate seja independentemente verificável.

Ambos os motores são atualizados sempre que a FIDE revisa suas regras — as mudanças de regras de fevereiro de 2026 estão totalmente refletidas na versão atual do ChessPairings.org.

Para os tecnicamente curiosos

O problema de emparelhamento Dutch é matematicamente equivalente a um problema de emparelhamento máximo ponderado na teoria dos grafos. Cada emparelhamento potencial é uma aresta com um peso representando quão bem satisfaz a hierarquia de critérios. O algoritmo encontra o emparelhamento perfeito de peso máximo — razão pela qual pode levar uma fração de segundo mesmo para torneios com 500 jogadores.

Pronto para Organizar Seu Torneio?

Emparelhamento suíço conforme FIDE 2026, 28 sistemas de desempate, completamente gratuito.

Criar Conta Gratuita