O Xadrez Aleatório de Fischer

Autor

Carlos Gomes

Data de Publicação

sexta-feira, outubro 11, 2024

Uma breve história do xadrez

Figura 1: A brief history of chess – Alex Gendler (TED-Ed)

Bobby Fischer em modo aleatório

\(\text{\Large B}\)obby Fischer propôs, em 1992, uma variante do xadrez que passou a ser conhecida, entre outras, por xadrez Fischerandom ou Chess960. Para evitar o excesso de teoria nas aberturas, eliminar a influência do trabalho em equipa e dos jogadores “livrescos”, reduzir o número de empates e garantir que a verdadeira habilidade seja o fator decisivo no tabuleiro, já há muito tempo que se pensava em reformar as regras do xadrez clássico. Desde o final do século XVIII, surgiram várias ideias, e houve até algumas partidas experimentais em 1842, 1846, 1851, 1868 e 1869.

Nos seus dias de glória, Capablanca, também pensou em formas de “evitar o xadrez da morte por empates”. De maneira relativamente simples, sugeriu uma variação com xadrez randomizado, onde bispos e cavalos trocavam de posição, forçando os jogadores a enfrentar novos desafios logo na abertura. Outras ideias incluíam aumentar o tabuleiro para cem casas ou até introduzir novas peças, como a combinação de torre e cavalo, ou bispo e cavalo. No entanto, a grande falha dessas invenções era que elas acabavam por perder a forte conexão com o jogo clássico, que já era excelente na sua forma tradicional.

Capablanca-Maroczy, 1929

Primeiras tentativas

A concentração de Fischer neste problema foi muito profunda. Durante a sua estadia em Saint Stefan, em 1992, ele recomendou baralhar todas as peças na última fila antes do início de cada partida. Fischer ficou satisfeito ao descobrir que o número de posições iniciais era muito grande. No entanto, percebeu rapidamente que acabar com dois bispos de cores distintas causava uma impressão desagradável, criando oportunidades limitadas e desequilibradas no tabuleiro. Também ficou claro que limitar o direito ao roque significaria um retrocesso para o xadrez e, se a mistura de peças na última linha tornasse o roque impossível para ambos os lados, isso causaria danos à estratégia de jogo. O resultado das constantes meditações de Fischer sobre como revitalizar o xadrez, ameaçado pela exaustão dos seus recursos criativos, foi a formulação, em setembro de 1993, das regras do Xadrez Fischerandom.
As regras do xadrez Fischerandom cumprem simultaneamente dois objetivos: preservam a natureza dinâmica do jogo, mantendo os bispos em cores opostas para cada jogador e o direito de roque para ambos os lados. Além disso, introduzem um elemento surpresa: com 960 possíveis posições iniciais o Fischerandom elimina (ou minimiza?) o “trabalho de livro” e a ajuda de uma equipa, incluindo computadores, transformando assim o entendimento do jogo num fator decisivo e competitivo1.

1 Shall We Play Fischerandom Chess? – Svetozar Gligorić, 2002, pág. 40.

Contagens

Porquê 960?

No Chess960, a configuração das peças Brancas na linha 1 do tabuleiro são sorteadas aleatoriamente minutos antes do início da partida. Na linha 8, as peças Pretas ficam distribuídas de modo simétrico às Brancas (como acontece com o xadrez clássico). Como é óbvio, uma possível configuração das peças no Chess960 é a que se utiliza no xadrez clássico! Esta distribuição aleatória das peças é a única alteração em relação ao xadrez clássico! Apesar das diferentes posições de partida, as regras normais do roque continuam a aplicar-se e as suas posições, após o roque, serão como no xadrez clássico. Em suma, cada configuração resultante do sorteio só é válida se obedecer às restrições:

  • Os bispos (B ♗) devem estar em casas de cores diferentes.

  • O rei (K ♔) deve estar entre as duas torres (R ♖).

Assim que a partida começa, o Chess960 é simplesmente xadrez.

Colocar os bispos (B ♗ ♗)
  • Um bispo tem de estar numa casa branca e o outro numa casa preta.
  • Há 4 opções para o bispo numa casa branca e 4 opções para o bispo numa casa preta, o que dá um total de \(4\times 4 = 16\) maneiras de posicionar os bispos.

Colocar o rei (K ♕) e as torres (R ♖ ♖)
  • O rei tem de estar entre as duas torres.
  • Escolhemos 3 das 6 casas restantes (as casas que sobraram após posicionar os bispos) para o rei e as duas torres. Existem \(\dbinom{6}{3} = 20\) formas de escolher essas 3 casas, mas como o rei tem de estar entre as duas torres, a ordem dessas 3 peças já fica determinada. Então, há exatamente 20 maneiras de posicionar o rei e as duas torres.

Colocar os cavalos (N ♘ ♘) e a raínha (Q ♕)
  • Estas 3 peças podem ser colocadas de qualquer maneira nas 3 casas livres, ou seja, há \(3\) maneiras distintas de posicionar os cavalos e a raínha \(\left(\dfrac{3!}{2!}\right)\).

\(\text{\bf{\large Total de posições}} = 16\times 20\times 3 = 960.\)

Colocar os bispos (B ♗ ♗)
  • Um bispo tem de estar numa casa branca e o outro numa casa preta.
  • Há 4 opções para o bispo numa casa branca e 4 opções para o bispo numa casa preta, o que dá um total de \(4\times 4 = 16\) maneiras de posicionar os bispos.

Colocar os cavalos (N ♘ ♘) e a raínha (Q ♕)
  • Seleccionamos 3 dessas 6 casas de \(\dbinom{6}{3}\) maneiras diferentes e posicionamos as 3 peças nas 3 casas selecionada de \(3\) maneiras distintas. Assim, temos \(\dbinom{6}{3}\times 3 = 60\) maneiras de colocar os cavalos e a Dama.

Colocar o rei (K ♕) e as torres (R ♖ ♖)
  • Restam 3 casas livres para as torres e o rei, e este tem de ficar entre aquelas. Logo, as suas posições já estão determinadas e existe apenas 1 maneira de o fazer!

\(\text{\bf{\large Total de posições}} = 16\times 60\times 1 = 960.\)

Há sempre outras formas de contar… 😬
  • Há 4 opções para o bispo numa casa branca e 4 opções para o bispo numa casa preta;
  • Restam 6 casas para os dois cavalos (N) e a raínha (Q) (esquecendo por ora as restantes). A situação é a mesma de contar o número de anagramas da “palavra” N N Q X X X (X indica que a casa está desocupada). Assim, temos \(\dfrac{6!}{3!\times 2!\times 1!} = 60\) maneiras de posicionar os cavalos e a raínha.
  • Restam 3 casas para o rei (K) e as torres (R). Como o rei tem de ficar entre as torres, a sua posição já está determinada e há apenas 1 maneira de o fazer.

\(\text{\bf{\large Total de posições}} = 16\times 60\times 1 = 960.\)

Alguma Força Bruta…

Aviso

O computador pode ficar, com facilidade, sem capacidade de resposta por esgotamento de recursos!

Mostrar código 😬 😬 😬
"""
Created on Fri Jan 20 19:03:10 2024
@author: carlos gomes
"""
from matplotlib import pyplot as plt
from random import *
from matplotlib.backends.backend_pdf import PdfPages
from fpdf import FPDF

casos = []
iteracoes = 0
iteracoes_list = []
N_casos = []
#-------------------------------------
def par(x):
    if x%2==0:
        return 1
    else:
        return 0
#-----------------------------------------
while True:
    linha_1 = [i for i in range(0,8)]
    casos_unica = []
    
    ## decidir posicao dos Bispos (B)
    opcoes_Bp = [i for i in linha_1 if par(i)==1]
    opcoes_Bb = [i for i in linha_1 if par(i)==0]

    Bispo_p = choice(opcoes_Bp)
    Bispo_b = choice(opcoes_Bb)

    linha_1[Bispo_p] = "B"
    linha_1[Bispo_b] = "B"
    #-------------------------------

    ## decidir posicao da Dama (Q)
    opcoes_dama = [i for i in linha_1 if i != "B"]
    dama = choice(opcoes_dama)
    linha_1[dama] = "Q"
    #---------------------------------

    ## decidir posicao dos cavalos (N)
    opcoes_cavalos = [i for i in linha_1 if i!="B" and i!="Q"]
    #print(opcoes_cavalos)

    opcoes_cavalo_1 = [i for i in linha_1 if i!="B" and i!="Q"]
    cavalo_1 = choice(opcoes_cavalo_1)
    linha_1[cavalo_1] = "N"
    opcoes_cavalo_2 = [i for i in linha_1 if i!="B" and i!="Q" and i!="N"]
    cavalo_2 = choice(opcoes_cavalo_2)
    linha_1[cavalo_2] = "N"
    #------------------------------------

    #decidir posicao do Rei (K)
    opcao_rei = [i for i in linha_1 if i!="B" and i!="Q" and i!="N"]
    linha_1[opcao_rei[1]] = "K"
    #-----------------------

    ## decidir posicao das Torres (R)
    opcoes_torres = [i for i in linha_1 if i!="B" and i!="Q" and i!="N" and i!="K"]
    linha_1[opcoes_torres[0]] = "R"
    linha_1[opcoes_torres[1]] = "R"
    #----------------------
    casos.append("".join(map(str, linha_1)))
    iteracoes += 1
    iteracoes_list.append(iteracoes)

    ##Devolve uma lista unica de casos-------------------
    for x in casos:
        if x not in casos_unica:
            casos_unica.append(x)
    #------------------------------------------------------
    N_casos.append(len(casos_unica))
    print(len(casos_unica))
    if len(casos_unica) == 960: # tinha de terminar de alguma maneira...
        break

print(casos_unica)
print(len(casos_unica))

plt.plot(iteracoes_list,N_casos)
plt.xlabel("Iterações (n)")
plt.ylabel("Novas configurações (acumulado)")
plt.show()

# texto para pdf ------------------------------

from fpdf import FPDF
pdf = FPDF()  
# adicionar página
pdf.add_page()
# estilo
pdf.set_font("Arial", size = 15)
# inserir texto no pdf
for x in casos_unica:
    pdf.cell(200, 10, txt = x, ln = 1, align = 'C')
# guardar pdf
pdf.output("chess960-configuracoes.pdf")  
Resultado

chess960-configuracoes.pdf (se virem alguma configuração repetida, por favor, avisem-me! 😬)

Gráfico e pdf obtidos na versão Python 3.9.13 com as bibliotecas fpdf e matplotlib.

Gerador de tabuleiros Chess960

O xadrez aleatório, tal como era praticado no passado, apresentava dois problemas principais. Primeiro, não conseguia manter uma ligação suficientemente forte com o xadrez clássico. Segundo, havia o inconveniente prático de ser necessário gastar algum tempo e esforço manual antes de cada partida para decidir a posição inicial no tabuleiro, algo que não acontece no xadrez tradicional.

Foi por isso que, já em 1992, Fischer falou sobre a possibilidade e a necessidade de implementar um misturador de peças automático. A ideia era simples: os jogadores, ou o árbitro, só teriam de carregar num botão, e uma das 960 posições aleatórias possíveis, idênticas para ambos os lados, apareceria automaticamente num ecrã duplo. Com outro clique no botão, uma nova posição surgiria, e assim por diante, infinitamente.

Em 1994, Fischer partilhou estas ideias com o engenheiro Aleksandar Mihailovic, que desenvolveu o programa e criou um protótipo do misturador de peças, obedecendo aos requisitos rigorosos de Fischer. As regras eram claras: o dispositivo não podia cometer erros; os bispos tinham de estar sempre em casas de cores opostas, e as torres tinham de estar separadas pelo rei, em algum ponto da última linha. Estas limitações na escolha da posição inicial foram vistas como uma inovação revolucionária no mundo do xadrez, que iriam manter vivos os bons princípios do xadrez de outros tempos, agora numa versão randomizada. [Svetozar Gligorić, 2002, pp. 78-83]

Tabuleiro de Chess960 Completo

Em sua defesa e à sua memória…

No icónico vídeo que se segue, Bobby Fischer explica por que razão a sua variante lhe parece mais viável do que, por exemplo, a variante de Capablanca, que introduz peças adicionais num tabuleiro de dimensões maiores.

Figura 5: Viagem de Tóquio para Reykjavík onde R. Fischer mostra ser um homem inteligente, sóbrio, atualizado e de grande humanidade, ao contrário do que os interesses políticos especularam durante anos.

Dedicatória

Ao meu amigo Pedro Caldeira com quem tenho passado óptimos momentos jogando Chess960 🥱 😴 e muito mais… 🎸🎸