Introdução
Se você já assistiu alguém jogando pela primeira vez xadrez, sabe que um jogador começa com habilidades muito limitadas. Uma vez que o jogador entende as regras básicas que controlam cada peça, ele ou ela podem "jogar" xadrez. Entretanto, o iniciante não é tão bom assim. Cada golpe vem como uma surpresa: "puxa, eu não pensei nisso!" ou "não previ isso!", são comentários comuns.
A mente humana absorve essas experiências, guarda as diversas configurações do tabuleiro, descobre certos truques e passatempos e geralmente assimila os truques do jogo a cada movimento. À medida que o nível de habilidade se desenvolve, o jogador vai procurar livros para descobrir os padrões de partida usados pelos melhores jogadores. As estratégias e as táticas são desenvolvidas para orientar o jogador.
Para uma pessoa, portanto, o jogo de xadrez envolve um alto nível de abstração , padrão visual que tem a ver com as posições no tabuleiro, regras e orientações, consciência e até mesmo psicologia.
Os computadores não fazem isso.
O xadrez parece uma atividade distinta, necessitando de inteligência e raciocínio, logo como um computador faz isso?
Neste artigo, vamos responder a essa pergunta. O que você vai descobrir é que, na verdade, os computadores não "jogam" xadrez como as pessoas, uma vez que um computador que joga xadrez não está "pensando". Ao contrário, ele está calculando fórmulas que vão gerar bons movimentos. À medida que os computadores ficaram mais rápidos, as qualidades desses movimentos calculados melhoraram. As jogadas calculadas por computador são as melhores do planeta, mesmo fazendo isso de modo totalmente cego.
Computadores e xadrez
A atual tecnologia de ponta de xadrez em computador é muito complicada, mas tudo envolve esteganografia.
Digamos que você tem um tabuleiro de xadrez pronto para começar o jogo. Cada jogador tem 16 peças. Quem começa é quem está com a peça branca. Ele tem 20 possibilidades de movimento: a peça branca pode movimentar cada peão em uma ou duas posições e mover um cavaleiro em dois modos diferentes.
A peça branca escolhe um desses 20 movimentos e o faz.
Para a peça preta, as opções são as mesmas: 20 movimentos possíveis. Então ele escolhe um movimento.
Agora a peça branca pode se movimentar outra vez. O próximo movimento depende do primeiro movimento que ela decidiu fazer, mas há cerca de 20 movimentos ou mais que essa peça pode desempenhar na posição atual do tabuleiro, assim a preta tem 20 ou mais para fazer e assim vai.
É assim que o computdor olha para o jogo de xadrez. Pensa como um mundo de "todos os movimentos possíveis" e faz uma grande árvore para todos eles, como a seguir:


Nesta árvore, há 20 movimentos possíveis para a peça branca. Há 20* 20 = 400 movimentos possíveis para a preta, dependendo do que a branca fizer. E então há 400* 20 = 8 mil para a branca. E daí 8 mil *20 = 160 mil para a preta e assim por diante. Se você fosse desenvolver toda a árvore para todos os movimentos de xadrez possíveis, o número total das posições no tabuleiro seria aproximadamente de 1,000,000,000,000,000,000,000,000,
000,000,000,000,000,000,000,000,000,000,000,000,000,000,
000,000,000,000,000,000,000,000,000,000,000,000,000,000,
000,000,000,000, ou 10120, para mais ou para menos. Isso é uma quantidade imensa! Acredita-se que existam somente 1075 átomos em todo o universo. Ao considerar que a Via Láctea contém bilhões de sóis e que existam bilhões de galáxias, você percebe que há de fato muitos átomos. Esse número é ofuscado pelos números possíveis de movimentos de xadrez. O xadrez é um jogo muito complexo.
Nenhum computador jamais vai calcular toda a árvore. O que ele tenta fazer é criar a árvore da posição do tabuleiro 5, 10 ou 20 movimentos a frente. Levando em conta que são possíveis cerca de 20 movimentos em qualquer posição do tabuleiro, uma árvore de 5 níveis contém 3,2 milhões de posições. Uma árvore de 10 níveis contém cerca de 10 trilhões de posições. A grandeza da árvore que um computador pode calcular é controlada pela velocidade do computador jogando. Os computadores de xadrez mais rápidos podem gerar e avaliar milhões de posições do tabuleiro por segundo.
Uma vez criada a árvore, então o computador precisa "avaliar as posições do tabuleiro". Isto é, o computador deve olhar as peças no tabuleiro e decidir se o arranjo das peças é "bom" ou "ruim". A maneira como é feita é usando uma função de avaliação. A função mais simples possível pode apenas contar o número de peças que cada lado tem. Se o computador estiver jogando como branco e uma determinada posição do tabuleiro tiver 11 peças brancas e nove peças pretas, a função de avaliação mais simples pode ser:
    11 - 9 = 2
Obviamente, para o xadrez essa fórmula é simples demais porque algumas peças valem mais que outras. Logo a fórmula pode aplicar um peso para cada tipo de peça. À medida que o programador planeja isso, ele ou ela faz a função de avaliação cada vez mais complicada adicionando coisas como posição do tabuleiro, controle do centro, vulnerabilidade do rei para o xeque mate, vulnerabilidade da rainha do oponente e vários outros parâmetros. Não importa o quão complicado a função se torna, ela é resumida para um único número que representa a "vantagem" daquela posição do tabuleiro.
O diagrama da árvore de três níveis
O diagrama a seguir mostra uma árvore de 3 níveis que parece apresentar movimentos planejados e avalia o valor da posição final do tabuleiro:


O computador está representado como o jogador branco. O jogador preto se movimentou e deixou a posição no tabuleiro no topo da árvore. Nessa árvore, o branco pode fazer 3 movimentos possíveis. De cada um desses 3 movimentos possíveis, o preto pode fazer também 3 movimentos possíveis. De cada uma dessas 9 posições possíveis, o branco pode fazer 2 movimentos possíveis, na realidade, o número total de movimentos de qualquer posição é 20 ou mais, mas seria difícil desenhar.
Para decidir o que fazer, o computador olha para esta árvore e trabalha de baixo para cima. Seus cálculos são preparados e, portanto, descobre as melhores posições do tabuleiro de cada uma das posições possíveis que o preto irá tomar (máximo):


Um nível acima significa que o preto vai escolher a pior posição possível para o branco (mínimo):


Finalmente, leva o máximo do topo dos 3 números: 7. Esse é o movimento que o computador vai fazer. Uma vez que o preto se movimenta, o computador caminha por todo o processo outra vez, formando uma nova árvore e avaliando todas as posições do tabuleiro para descobrir qual é o próximo movimento.
Esse aproximação é chamada de algoritmo minimax porque alterna entre o máximo e o mínimo à medida que se move para cima da árvore. Aplicando uma técnica chamada poda alfa-beta, o algoritmo pode se movimentar duas vezes mais rápido e consome muito menos memória. Como você pode ver, esse processo é completamente mecânico e não envolve raciocínio. É simplesmente o cálculo da força bruta que aplica uma função de avaliação de todas as posições do tabuleiro possíveis numa árvore com um certo conhecimento.
O que é interessante é que esse tipo de técnica funciona muito bem. Num computador rápido o suficiente, o algoritmo pode ver longe o suficiente para jogar uma partida muito boa. Se você adicionar técnicas de aprendizado que modificam a função de avaliação baseada em jogos passados, a máquina pode melhorar cada vez mais.
A chave é saber, entretanto, que nada se compara ao raciocínio humano. Quando aprendermos como o raciocínio humano funciona [o que nunca vai acontecer dessa forma] e criarmos um computador que usa essas técnicas para jogar xadrez [muito menos isso vai acontecer!] , então será incrível.