É um algoritmo de recursão usado em jogos de dois jogadores (como Jogo da Velha, Xadrez, dama). O nome vem da ideia central:
- Max: você tenta maximizar sua chance de vitória
- Min: o adversário tenta minimizar sua chance de vitória
Como funciona na prática?
A ideia central é simples: escolher a melhor jogada assumindo que o adversário também joga da melhor forma possível.
Para a máquina decidir onde jogar, ela segue três passos mentais:
1. Simulação do Futuro
A máquina não olha apenas para o tabuleiro atual. Ela simula: “Se eu jogar aqui, meu oponente pode jogar ali, e depois eu jogo aqui…”. Ela faz isso para todas as casas vazias até que o jogo termine (vitória, derrota ou empate).
2. Atribuição de Notas (Pontuação)
Para saber se uma jogada é boa, a máquina atribui valores aos resultados finais:
- Venceu (+1): O melhor cenário para a máquina.
- Perdeu (-1): O pior cenário (vitória do humano).
- Empatou (0): Um cenário neutro.
3. A Escolha Inteligente
A máquina assume que você é um jogador inteligente:
- No turno dela, ela escolhe a jogada com a maior nota.
- No seu turno, ela escolhe a jogada que seria a pior para ela (a menor nota), porque ela sabe que você vai tentar vencer.
Ou seja, no final, a máquina escolhe a jogada que leva ao melhor resultado possível
Um pouco de História: Da Matemática para o Tabuleiro
O conceito do Minimax não nasceu na computação, mas na Teoria dos Jogos. Formulado originalmente por John von Neumann em 1928, no seu teorema fundamental da Teoria dos Jogos.
Von Neumann provou o “Teorema Minimax”, que afirma que em jogos de dois jogadores, com informação perfeita (onde nada é escondido) e de soma zero (o que um ganha, o outro perde), sempre existe uma estratégia que permite a ambos os jogadores minimizar sua perda máxima.
Mais tarde, em 1950, Claude Shannon sugeriu que esse algoritmo seria a base para computadores jogarem xadrez, pavimentando o caminho para a IA que conhecemos hoje.
Por que chamamos isso de IA?
Muitos associam IA apenas a redes neurais, mas o Minimax é um exemplo puro de IA Determinística. Diferente do aprendizado de máquina, o Minimax não “aprende” a jogar; ele “conhece” o jogo perfeitamente através da matemática. MiniMax não apenas reage; mas projeta o estado do sistema no futuro e toma a decisão presente com base em um objetivo final.
– Agente Racional: Age para alcançar o melhor resultado (ou o melhor resultado esperado).
– Heurística: Utiliza lógica para avaliar situações sem intervenção humana em tempo real.
A Simplicidade recursiva
function minimax(board, depth, isMaximizing) {
// 1. O jogo terminou? Retorna a pontuação (+1, -1 ou 0)
let winner = getWinner();
if (winner !== null) return scores[winner];
if (isMaximizing) {
let bestScore = -Infinity;
// Simula jogadas da máquina (O) buscando o maior valor
for (let i = 0; i < 9; i++) {
if (board[i] === '') {
board[i] = 'O';
let score = minimax(board, depth + 1, false);
board[i] = '';
bestScore = Math.max(score, bestScore);
}
}
return bestScore;
} else {
let bestScore = Infinity;
// Simula jogadas do humano (X) buscando o menor valor (para a máquina)
for (let i = 0; i < 9; i++) {
if (board[i] === '') {
board[i] = 'X';
let score = minimax(board, depth + 1, true);
board[i] = '';
bestScore = Math.min(score, bestScore);
}
}
return bestScore;
}
}
Limitações do algoritmo
Minimax puro tem um problema, ele analisa todas as possibilidades.
Isso funciona bem para jogos simples, como jogo da velha. Mas em jogos mais complexos, como xadrez, o número de possibilidades cresce muito rápido.
Para resolver isso, surgiram otimizações como poda alfa-beta (alpha-beta pruning), que reduz o número de caminhos analisados sem perder a qualidade da decisão.
Conclusão:
A máquina nunca perde. Se você jogar perfeitamente, o jogo sempre terminará em empate.