CCT-UFCA/Ciência da Computação/Inteligência Artificial/Busca Competitiva
Aparência
Busca Competitiva
[editar | editar código]Até agora, estudamos problemas de busca em que havia apenas um agente tentando alcançar um objetivo.
Na busca competitiva, temos dois agentes que jogam um contra o outro.
- Exemplo: xadrez, damas, jogo da velha, Go.
- Cada ação de um jogador afeta a utilidade do outro.
- Esses ambientes são chamados de competitivos e fazem parte da Teoria dos Jogos.
Em termos de IA, estamos lidando com ambientes:
- Determinísticos (não há sorte, o próximo estado é previsível),
- Completamente observáveis (ambos veem todo o tabuleiro),
- Multiagente competitivo (MAX × MIN).
Jogadores: MAX e MIN
[editar | editar código]- MAX → tenta maximizar a utilidade (ganhar ou ficar mais perto da vitória).
- MIN → tenta minimizar a utilidade de MAX (impedir sua vitória).
Exemplo:
[editar | editar código]- No jogo da velha, se MAX busca ganhar, MIN joga para bloquear.
- A árvore de jogo alterna camadas de jogadas de MAX e jogadas de MIN.
Elementos do Problema
[editar | editar código]Assim como nas buscas vistas antes, precisamos definir:
- Estado inicial → posição inicial do jogo.
- Ações possíveis → jogadas permitidas em cada estado.
- Modelo de transição → o que acontece após cada jogada.
- Teste de terminal → identifica se o jogo acabou (vitória, derrota, empate).
- Função de utilidade → atribui um valor numérico (ex.: vitória = +1, derrota = -1, empate = 0).
Algoritmo MinMax
[editar | editar código]- Ideia: assume que os dois jogadores são racionais (sempre tomam a melhor decisão).
- O algoritmo percorre a árvore de jogo de forma parecida com a busca em profundidade.
- Nos nós de MAX, escolhe o maior valor.
- Nos nós de MIN, escolhe o menor valor.
Exemplo:
[editar | editar código]Imagine que estamos em um jogo onde MAX (quer ganhar) joga primeiro e MIN responde. A árvore de possibilidades fica assim:

Etapas:
[editar | editar código]- MAX começa. Ele pode escolher esquerda ou direita.
- Se escolher esquerda, MIN decide entre {3, 5, 2}.
- MIN é oponente, então escolhe o menor valor → 2.
- Se escolher direita, MIN decide entre {9, 0}.
- MIN escolhe o menor → 0.
- Agora MAX compara:
- Esquerda leva a 2
- Direita leva a 0
- MAX escolhe o maior → 2.
Resultado do MinMax: a jogada ótima de MAX é ir para a esquerda, garantindo pelo menos valor 2.
Complexidade:
[editar | editar código]- Tempo: O(b^m), onde b = fator de ramificação (número de jogadas possíveis), m = profundidade.
- Espaço: também O(b^m).
- Para jogos como xadrez, isso é gigantesco, tornando o MinMax puro impraticável.
Poda Alfa-Beta
[editar | editar código]- Uma melhoria do MinMax que corta (poda) ramos da árvore que não precisam ser analisados.
- O resultado é o mesmo do MinMax, mas com menos trabalho.
Funcionamento:
[editar | editar código]- Mantém dois valores:
- α (alfa): melhor valor encontrado até agora para MAX.
- β (beta): melhor valor encontrado até agora para MIN.
- Se em algum momento α ≥ β, cortamos aquele ramo (não precisa ser expandido).
Exemplo:
[editar | editar código]Imagine essa árvore de jogo:

Etapas com poda alfa-beta
[editar | editar código]- MAX começa pela esquerda:
- MIN avalia 3 → guarda como melhor até agora (β = 3).
- MIN avalia 12 → maior que 3, mas como ele é MIN, fica com 3.
- MIN avalia 8 → maior que 3, mas MIN ainda fica com 3.
- Resultado do nó esquerdo = 3.
- MAX guarda α = 3 (melhor valor até agora).
- MAX agora olha a direita:
- MIN vê o primeiro filho → 2.
- Nesse momento já dá para parar! Por quê?
- MAX tem α = 3 (garantido à esquerda).
- MIN à direita encontrou 2, que é menor que 3.
- Ou seja, MAX nunca escolherá a direita, então não precisamos nem avaliar o 14.
✂️ Poda: o nó com valor 14 não precisa ser avaliado.
Curiosidades
[editar | editar código]- O algoritmo Deep Blue (da IBM) usou MinMax com poda alfa-beta para vencer Garry Kasparov (campeão mundial de xadrez) em 1997.
- No entanto, jogos como o Go são muito mais complexos → foi preciso criar novas técnicas (ex.: AlphaGo em 2016, que combina busca e aprendizado de máquina).
Conclusão
[editar | editar código]- A busca competitiva ensina como a IA toma decisões em jogos de adversários.
- MinMax é a base, mas é pesado em jogos grandes.
- Poda alfa-beta melhora a eficiência sem mudar o resultado.
- Esse tema é a ponte entre IA clássica em jogos e IA moderna (aprendizado de máquina).
Referências
[editar | editar código]- RUSSELL, S. J.; NORVIG, P. Inteligência artificial. 3 ed. LTC, 2013. 1016 p.
- COPPIN, B. Inteligência Artificial. 1a ed. LTC, 2010. 664 p.