Musk soltou uma provocação no X dizendo que "um dia o xadrez será totalmente resolvido". O Chess.com respondeu chamando ele de ruim de jogo. A troca de farpas é divertida, mas tecnicamente os dois estão falando de coisas diferentes. Quando Musk diz "resolvido", ele provavelmente quer dizer "a IA vence todo mundo". Quando alguém da academia de IA diz "resolvido", o significado é outro — e bem mais profundo. Vou explicar o que isso significa na prática, por que o xadrez provavelmente nunca será "totalmente resolvido" no sentido forte da palavra, e onde a IA realmente está mudando o jogo.
O que "jogo resolvido" significa de verdade — e por que Musk errou o termo
Em teoria dos jogos e em ciência da computação, um jogo pode ser classificado em três estados:
- Ultrapassado (outclassed): a IA vence qualquer humano, mas não existe uma estratégia matematicamente perfeita conhecida. É onde o xadrez está hoje.
- Fracamente resolvido (weakly solved): existe uma estratégia computável que garante o melhor resultado possível a partir da posição inicial, mas só contra uma jogada "perfeita" do oponente. Damas (checkers) foi fracamente resolvido em 2007 pelo projeto Chinook, da Universidade de Alberta.
- Fortemente resolvido (strongly solved): existe uma estratégia perfeita para qualquer posição alcançável no jogo, não apenas a inicial. Jogo da velha, Connect Four e Othello 4x4 já caíram nesse nível.
Quando Musk diz que o xadrez será "totalmente resolvido", no sentido forte da teoria, ele está apostando em algo que, pelos números atuais, é praticamente impossível com a tecnologia que conhecemos. Não porque a IA não seja boa — ela é absurdamente melhor que qualquer humano — mas porque o espaço de busca do xadrez é gigantesco demais.
A complexidade absurda do xadrez em números reais
Para você ter uma ideia do tamanho do problema: o Número de Shannon para o xadrez é estimado em algo entre 10111 e 10123. Isso é mais que o número de átomos no universo observável (1080).
Mesmo os engines mais fortes hoje, como Stockfish e Leela Chess Zero (LCZero), não "resolvem" o xadrez. Eles usam busca em árvore combinada com redes neurais para aproximar a melhor jogada em cada posição. Stockfish usa alpha-beta pruning com redes neurais (NNUE), e a LcZero usa Monte Carlo Tree Search (MCTS) guiada por redes convolucionais profundas inspiradas no AlphaZero do DeepMind.
O AlphaZero, em 2017, mostrou que dá para vencer Stockfish jogando de forma muito mais "humana" e agressiva — aprendendo sozinho em 4 horas. Mas nenhum desses sistemas tem consciência de que aquela é a jogada matematicamente perfeita. Eles só sabem que é a melhor jogada conhecida dentro do horizonte de busca.
Na Prática: implementando um jogo verdadeiramente resolvido em Python
Para você entender o que significa "resolver" um jogo na prática, aqui vai um exemplo funcional de um solver de jogo da velha em Python usando minimax com memoização. Jogo da velha é fortemente resolvido: a partir da posição inicial, com jogo perfeito dos dois lados, o resultado é sempre empate.
import functools
# Tabuleiro representado como string de 9 chars: 'X', 'O' ou ' '
def winner(board):
wins = [(0,1,2),(3,4,5),(6,7,8),(0,3,6),(1,4,7),(2,5,8),(0,4,8),(2,4,6)]
for a,b,c in wins:
if board[a] == board[b] == board[c] != ' ':
return board[a]
return None
@functools.lru_cache(maxsize=None)
def solve(board):
"""Retorna a melhor pontuação do ponto de vista do jogador atual."""
w = winner(board)
if w == 'X': return 1 # X venceu
if w == 'O': return -1 # O venceu
if ' ' not in board: return 0 # empate
# Identifica de quem é a vez: X sempre começa
turn = 'X' if board.count('X') == board.count('O') else 'O'
scores = []
for i in range(9):
if board[i] == ' ':
new_board = board[:i] + turn + board[i+1:]
scores.append(solve(new_board))
# X maximiza, O minimiza
return max(scores) if turn == 'X' else min(scores)
def best_move(board):
turn = 'X' if board.count('X') == board.count('O') else 'O'
best_score = -2 if turn == 'X' else 2
move = None
for i in range(9):
if board[i] == ' ':
new_board = board[:i] + turn + board[i+1:]
score = solve(new_board)
if turn == 'X' and score > best_score:
best_score, move = score, i
elif turn == 'O' and score < best_score:
best_score, move = score, i
return move
# Exemplo: jogada perfeita a partir do vazio
print(f"Melhor jogada inicial: posição {best_move(' '*9)}") # sempre centro (4)
print(f"Resultado ótimo: {solve(' '*9)}") # 0 = empate perfeito
Esse código resolve o jogo da velha completamente. A função solve() é chamada para cada posição possível, o resultado é cacheado pelo lru_cache, e a partir do tabuleiro vazio, o retorno é sempre 0 (empate) — desde que ambos os jogadores joguem perfeitamente. É exatamente isso que "jogo resolvido" significa: existe uma resposta definitiva, em qualquer posição.
Agora tenta imaginar o mesmo algoritmo para o xadrez. O número de posições legais únicas no xadrez é estimado em cerca de 4.5 × 1044. Mesmo se você reduzisse a tabela hash para o tamanho do orçamento federal dos EUA em bits, não caberia.
O que os engines de xadrez realmente fazem (e o que não fazem)
Quando você vê o Stockfish calculando 80 milhões de nós por segundo, ele não está "resolvendo" nada. Ele está fazendo busca heurística em uma fração minúscula da árvore completa, guiada por uma função de avaliação que aproxima o valor da posição. A rede neural NNUE do Stockfish é treinada em milhões de posições avaliadas pelo próprio Stockfish em versões anteriores — um ciclo de bootstrapping elegante.
A LcZero, por outro lado, nunca viu uma partida humana. Ela aprendeu jogando contra ela mesma (self-play) milhões de vezes, e a rede neural aprendeu a prever não só quem está ganhando, mas qual jogada tem maior probabilidade de levar à vitória. Esse paradigma é o mesmo que o AlphaZero usou, e é provavelmente o mais relevante para devs que trabalham com IA hoje.
Se você está começando com MCTS em projetos próprios (games, simuladores, otimização), a lição é clara: busca heurística + avaliação inteligente sempre vai escalar melhor que força bruta pura. Foi assim que o DeepMind venceu Go, e é assim que LLMs fazem inference em escala.
Erros comuns que devs cometem quando falam de IA em jogos
Trabalho com gente entrando na área e vejo os mesmos equívocos toda semana:
- "Se a IA vence humanos, o jogo está resolvido". Não. Stockfish vencendo Magnus Carlsen não é o mesmo que ter a resposta matematicamente perfeita para cada posição. São coisas completamente diferentes.
- "Deep learning substitui busca". Não substitui. A AlphaZero usa MCTS guiada por uma rede neural. Sem a busca, a rede sozinha não resolve.
- "Mais dados sempre melhoram o modelo". Em xadrez especificamente, a LcZero chegou num platô com relativamente poucas partidas de self-play em hardware modesto. O ganho marginal cai muito rápido.
- "Posso replicar o AlphaZero em casa". Até pode rodar uma versão reduzida, mas o custo real do AlphaZero original foi de milhões em TPU. A LcZero só existe porque a comunidade doou poder computacional.
O que Musk quis dizer de verdade (minha interpretação)
Na minha leitura, o que Musk quis comunicar é algo razoável, só que mal formulado: a IA eventualmente vai ser tão dominante em xadrez que a discussão sobre quem é o melhor jogador humano vai se tornar irrelevante. E isso já é verdade. Não existe hoje, em 2026, nenhum jogador humano que ofereça resistência real aos engines top.
Mas "a IA vence todo mundo" e "o jogo foi resolvido" são afirmações tecnicamente diferentes. Musk, como de costume, fala como CEO e não como cientista. Já o Chess.com, ao zoar ele de "ruim de jogo", perdeu a chance de fazer uma ótima explicação técnica — o que, convenhamos, seria muito mais produtivo.
O ponto que ambos perderam é o mais interessante para nós que trabalhamos com IA: o xadrez é provavelmente o domínio onde a superioridade da máquina sobre o humano é mais visível, e mesmo assim a solução completa continua fora do alcance computacional. Isso diz muito sobre onde estamos com IA em geral — ótimos em padrões, fracos em exaustão total de problemas combinatórios.
FAQ — Perguntas reais que devs fazem sobre isso
Qual foi o primeiro jogo complexo a ser resolvido?
Damas (checkers) foi fracamente resolvido em 2007 pelo projeto Chinook, liderado por Jonathan Schaeffer na Universidade de Alberta. O jogo tem cerca de 5 × 1020 posições, e a prova completa cabe em "apenas" 10 terabytes quando comprimida.
O xadrez já é "fracamente resolvido" de forma prática?
Não. Existem tabelas de endgame para posições com 7 ou menos peças (Syzygy endgame bases), que cobrem os desfechos perfeitos para esses cenários. Mas o jogo completo, da posição inicial, não.
Go é mais difícil que xadrez para a IA?
Em termos de complexidade combinatória, Go é pior: cerca de 2 × 10170 posições possíveis, contra 1044 do xadrez. Por isso o Go resistiu à IA até 2016, quando o AlphaGo venceu Lee Sedol. Xadrez caiu em 1997 com o Deep Blue.
Vale a pena estudar motores de xadrez se eu não trabalho com games?
Sim, especialmente se você trabalha com busca, otimização, ou sistemas distribuídos. Algoritmos como alpha-beta pruning, MCTS e transposition tables aparecem em compiladores, sistemas de recomendação, roteamento e até em financial modeling. Eu já implementei alpha-beta em sistemas de precificação dinâmica.
LLMs vão mudar o xadrez nos próximos anos?
Já mudaram, de certa forma. Existem agora engines experimentais que usam LLMs para sugerir jogadas baseadas em entendimento posicional, e há projetos integrando análise textual de partidas com geração de explicações didáticas. Mas para força bruta de cálculo, Stockfish e LcZero ainda reinam.
Gostou? Me segue no GitHub e deixa um comentário se tiver dúvida ou quiser aprofundar algum ponto. Se quiser que eu faça um deep dive em implementação de MCTS ou NNUE em Python, é só pedir.