Jogos e busca adversária
IntermediárioAula 4 de 10 do curso Curso de Inteligência artificial
O que você vai aprender
- Formule com precisão um jogo de turnos, classifique-o pelas propriedades que determinam o método de busca adequado e represente suas partidas possíveis como uma árvore de jogo.
- Formule um jogo e classifique seu tipoRegistre os componentes que definem um jogo e diferencie jogos determinísticos, estocásticos, de informação perfeita, de informação imperfeita, de soma zero e de soma geral.
- Construa e interprete uma árvore de jogoDesenhe a árvore de jogadas de um jogo, use corretamente meias-jogadas, profundidade e fator de ramificação e estime o tamanho de uma árvore de jogo completa.
- Formule um jogo e classifique seu tipo
- Calcule valores minimax para encontrar a melhor jogada contra um oponente que joga perfeitamente, implemente o algoritmo e estenda a ideia a jogos com vários jogadores e utilidades individuais.
- Calcule os valores minimax e a decisão minimaxPropague valores das folhas de uma árvore de jogo para encontrar o valor minimax de cada posição e a jogada que MAX deve fazer.
- Implemente a busca minimaxTransforme a definição de minimax em um algoritmo recursivo de busca em profundidade, indique seu custo de tempo e espaço e evite os erros comuns de implementação.
- Faça buscas em jogos com vários jogadores e utilidades individuaisUse vetores de utilidades para escolher jogadas quando participam mais de dois jogadores ou quando os interesses dos jogadores não são estritamente opostos.
- Calcule os valores minimax e a decisão minimax
- Ignore partes da árvore de jogo que não podem alterar a decisão, acompanhe a poda alfa-beta à mão e ordene as jogadas para que a poda economize o máximo de trabalho possível.
- Acompanhe a poda alfa-beta passo a passoAcompanhe alfa e beta durante a busca, reconheça quando uma subárvore pode ser podada e explique por que o resultado coincide com o minimax.
- Ordene as jogadas para tornar a poda eficazExplique como a ordem das jogadas determina a economia obtida pela poda alfa-beta e use heurísticas de ordenação, aprofundamento iterativo e tabelas de transposições.
- Acompanhe a poda alfa-beta passo a passo
- Pare a busca antes do fim do jogo, estime o valor de posições não terminadas com uma função de avaliação e lide com os erros introduzidos por um limite de profundidade.
- Elabore uma função de avaliaçãoConstrua uma função de avaliação a partir das características de uma posição, calcule-a para posições concretas e verifique se ela atende aos requisitos de uma boa avaliação.
- Interrompa a busca com segurançaSubstitua o teste de término por um teste de corte, busque mais profundamente dentro de um limite de tempo e reconheça e reduza o efeito horizonte e outros erros de um limite de profundidade.
- Elabore uma função de avaliação
- Acrescente nós de acaso às árvores de jogo, calcule valores expectiminimax e expectimax e elabore funções de avaliação que mantenham seu significado quando os resultados são calculados pela média.
- Faça buscas em árvores com nós de acasoModele lançamentos de dados e oponentes aleatórios com nós de acaso, calcule valores expectiminimax passo a passo e saiba quando a poda ainda é possível.
- Ajuste a escala das avaliações e escolha entre minimax e expectimaxExplique por que os valores esperados exigem avaliações com escala correta, teste quais transformações preservam as decisões e escolha um modelo do oponente adequado à situação.
- Faça buscas em árvores com nós de acaso
- Estime valores de jogadas a partir de partidas simuladas, equilibre a exploração de novas jogadas com a explotação das boas usando UCB1 e avalie quando a busca em árvore de Monte Carlo ou a poda alfa-beta é mais adequada a um jogo.
- Execute as quatro fases da busca em árvore de Monte CarloExpanda uma árvore de busca por seleção, expansão, simulação e retropropagação de resultados, atualize as contagens de visitas e vitórias e escolha a jogada final.
- Equilibre exploração e explotação com UCB1Aplique a fórmula UCB1 durante a seleção, calcule-a para contagens concretas e veja como a constante de exploração altera a escolha.
- Compare MCTS com poda alfa-beta e escolha um métodoPondere os pontos fortes e fracos da poda alfa-beta e da busca em árvore de Monte Carlo, relacione-os a programas de jogos marcantes e escolha um método a partir das propriedades de um jogo.
- Execute as quatro fases da busca em árvore de Monte Carlo
Guia de estudo de Busca adversária
1Transforme um jogo em um problema de busca
Um programa precisa de uma descrição precisa de um jogo antes de poder escolher uma jogada. A descrição deve indicar quem age, o que pode acontecer em seguida e como uma partida terminada é pontuada. A árvore de jogo apresenta então as continuações possíveis. Interpretar essa árvore significa acompanhar os turnos, a profundidade e as posições repetidas, lembrando que um oponente controla alguns dos ramos.
1.1 Estados, regras e jogadores
Uma busca em jogo começa com um estado: informação suficiente para determinar o que pode acontecer em seguida. No jogo da velha, isso significa o tabuleiro e o jogador da vez. O tabuleiro sozinho está incompleto porque a próxima marca depende de quem joga.
Defina os seis componentes
Um modelo de jogo fornece:
- Um estado inicial, .
- Uma função, , que indica o jogador que age no estado .
- As jogadas permitidas, .
- Um modelo de transição, , que fornece o estado após a ação .
- Um teste de término, , que detecta o fim do jogo.
- Uma função de utilidade, , que fornece ao jogador um ganho numérico em um estado terminal.
No jogo da velha, comece com um tabuleiro vazio de 3 por 3 e X na vez. Uma ação escolhe uma casa vazia. A transição coloca a marca do jogador atual e muda a vez. O jogo termina assim que alguém forma uma linha, coluna ou diagonal de três marcas, ou quando o tabuleiro cheio resulta em empate. Do ponto de vista de X, atribua +1 à vitória, 0 ao empate e −1 à derrota. O teste de término deve ser executado antes de outra marca ser colocada: o jogo não continua após uma vitória.
Classifique o jogo em eixos separados
| Propriedade | Significado | Exemplo |
|---|---|---|
| Determinístico | Um estado e uma jogada determinam o próximo estado sem um evento aleatório. | Xadrez |
| Estocástico | Eventos aleatórios ajudam a determinar o que acontece. | Gamão |
| Informação perfeita | Todos os jogadores podem observar o estado completo do jogo. | Go |
| Informação imperfeita | Parte do estado relevante está oculta. | Pôquer |
| Dois ou vários jogadores | O número de jogadores determina quantos interesses devem ser modelados. | Xadrez ou um jogo com três jogadores |
| Soma zero ou soma geral | Os interesses são estritamente opostos, ou os jogadores podem ganhar juntos. | Jogo com vitória e derrota ou recompensas compartilhadas |
Esses eixos são independentes. Os dados tornam o gamão estocástico, embora seu tabuleiro seja visível. Cartas ocultas dizem respeito à informação, não ao fato de uma ação ser aleatória. Em um jogo com informação oculta, o jogador raciocina sobre os estados possíveis compatíveis com suas observações, chamados de estado de crença.
Mantenha fixo o ponto de vista do ganho
Em um jogo de soma zero com dois jogadores, o ganho de um jogador é a perda do outro. Pontuações de soma constante se comportam da mesma forma: vitória 1, derrota 0 e empate ½ para cada um sempre somam 1. Um número basta para expressar a oposição. Chame o jogador que quer aumentá-lo de MAX, e o jogador que quer diminuí-lo de MIN. Esses são papéis; MAX não precisa ser sempre as brancas ou X.
Em uma busca comum, é possível escolher todas as ações ao longo de um caminho. Um agente que joga deve responder a jogadas que não controla. Sua solução é uma estratégia, que especifica o que fazer em cada situação que possa enfrentar. Um plano que só funciona se o oponente der uma resposta favorável não basta.
Principais conclusões
- Registre o jogador da vez como parte do estado.
- Defina ações permitidas, transições, término e utilidades antes da busca.
- Acaso e informação oculta são propriedades distintas.
- MAX e MIN comparam uma única utilidade medida do ponto de vista de MAX.
- Uma estratégia deve lidar com as respostas possíveis do oponente.
1.2 Interprete o tamanho e a forma de uma árvore de jogo
Uma árvore de jogo começa no estado atual. Cada aresta de saída representa uma jogada permitida, e seu filho é o estado resultante. Identifique cada nó não terminal pelo jogador que age nele. Em um jogo alternado com dois jogadores, os níveis de MAX e MIN se alternam.
Conte turnos individuais
Uma meia-jogada é uma jogada de um jogador. No xadrez, uma jogada completa geralmente inclui um turno das brancas e um das pretas, portanto abrange duas meias-jogadas. Uma busca de profundidade 4 a partir da vez das brancas alcança posições após as brancas, as pretas, as brancas e as pretas terem agido. Conte as arestas a partir da raiz, cuja profundidade é zero.
Seja o fator de ramificação e a profundidade máxima. Uma árvore uniforme tem nós na profundidade e folhas. Seu número total de nós é:
Para , os níveis mais profundos predominam, resultando em crescimento exponencial. Com quatro jogadas por posição, a profundidade 3 tem 64 folhas; a profundidade 4 tem 256. Uma meia-jogada adicional multiplica a contagem de folhas por quatro, não por um.
Diferencie partidas de posições
O jogo da velha tem no máximo ordens para preencher o tabuleiro. Muitas ordens continuariam após uma vitória anterior e não são partidas completas permitidas. Parar imediatamente nas vitórias resulta em 255.168 partidas completas: 131.184 vitórias de X, 77.904 vitórias de O e 46.080 empates. Ao longo das partidas permitidas, há apenas 5.478 posições distintas do tabuleiro, incluindo o tabuleiro vazio.
A diferença vem em parte das transposições: ordens de jogadas diferentes que chegam ao mesmo estado. X pode jogar em um canto, O no centro e X no canto oposto, ou X pode jogar nesses dois cantos na ordem inversa. Ambos os caminhos terminam no mesmo tabuleiro e com o mesmo jogador da vez. Uma árvore mantém os dois caminhos; um grafo de jogo pode armazenar o estado compartilhado uma vez. Reutilizar trabalho exige identificar estados completos, não apenas tabuleiros visualmente semelhantes.
Veja por que a busca completa se torna inviável
O xadrez é frequentemente modelado com cerca de 35 jogadas permitidas por posição e uma partida de 100 meias-jogadas, ou 50 jogadas de cada jogador. Isso fornece a escala aproximada:
Ramos reais terminam em profundidades diferentes e têm números diferentes de jogadas, mas essa estimativa já explica por que enumerar uma árvore de jogo completa de xadrez é impraticável. Em um tabuleiro vazio de Go de 19 por 19, só a primeira pedra tem 361 pontos possíveis.
A árvore de busca é o que um algoritmo de fato gera. O minimax simples gera a árvore de jogo completa abaixo do estado em um jogo finito que ele busca até o fim. Poda, limites de profundidade e simulação seletiva geram menos. Uma folha de corte pode, portanto, ser uma posição não terminada, embora uma folha da árvore de jogo completa seja terminal.
Visualize uma estratégia dentro da árvore
Uma subárvore de estratégia para MAX mantém uma aresta selecionada em cada nó MAX e todas as arestas permitidas em cada nó MIN. MAX escolhe sua própria ação, mas deve manter uma resposta para qualquer jogada do oponente. Um único caminho da raiz a uma folha descreve apenas uma partida possível. Ele não consegue mostrar que o plano escolhido resiste às outras respostas.
Principais conclusões
- Uma meia-jogada é a jogada de um jogador; a profundidade da raiz é zero.
- Uma árvore uniforme tem cerca de b elevado a m folhas.
- Transposições repetem estados alcançados por diferentes ordens de jogadas.
- Uma estratégia mantém uma resposta para cada jogada possível do oponente.
2Escolha jogadas contra um oponente
O desfecho que parece melhor pode ser inalcançável porque um oponente pode escolher outra resposta. O minimax trabalha de trás para frente a partir dos resultados para descobrir o que cada jogador pode garantir. Sua forma recursiva transforma esse raciocínio em um programa. Quando os jogadores têm interesses diferentes, o mesmo processo de trás para frente deve levar um ganho para cada jogador e usar a preferência de quem age em seguida.
2.1 Propague valores minimax
O minimax escolhe o melhor resultado que MAX pode garantir contra um oponente que joga de modo ótimo. Toda utilidade de folha é medida para MAX. Um número grande favorece MAX mesmo quando o nó avaliado pertence a MIN.
Trabalhe das folhas em direção à raiz
Em um nó terminal, retorne sua utilidade. Em um nó MAX, retorne o maior valor dos filhos. Em um nó MIN, retorne o menor. Continue até que a raiz receba um valor:
O valor de um filho já resume a continuação ótima a partir dele. Por isso, um nó pai compara os valores retornados em vez de reabrir todas as folhas abaixo deles. A recursão funciona com qualquer número de níveis alternados.
Acompanhe uma decisão de duas meias-jogadas
MAX tem três jogadas, cada uma levando a um nó MIN:
| Jogada de MAX | Utilidades terminais disponíveis para MIN | Valor propagado |
|---|---|---|
| A | 4, 9, 6 | 4 |
| B | 2, 15, 13 | 2 |
| C | 5, 8, 10 | 5 |
Primeiro, tome o mínimo em cada linha. MIN pode fazer A valer 4, B valer 2 e C valer 5. Em seguida, MAX toma o máximo desses três resultados:
O valor minimax é 5. A decisão minimax é a jogada para C. Um é um número que descreve a posição; a outra é uma ação que o programa pode executar.
A maior folha, 15, está sob B, mas MAX não controla a resposta que chega a ela. MIN escolheria 2. A média das folhas de B é 10, o que também parece atraente, mas a média modela uma escolha aleatória com probabilidades adequadas. Um oponente que joga de modo ótimo exige um mínimo.
Interprete a variante principal
A variante principal é a sequência seguida quando os jogadores escolhem jogadas ótimas. Aqui, MAX joga C e MIN escolhe sua folha de valor 5. Em uma árvore mais profunda, siga o máximo ou mínimo escolhido em cada nível. A utilidade terminal nessa sequência corresponde ao valor da raiz. Se várias jogadas empatam, pode existir mais de uma sequência ótima.
Entenda a garantia
Em um jogo finito determinístico de soma zero com dois jogadores e informação perfeita, seguir a estratégia minimax garante pelo menos o valor da raiz. Um oponente que joga de modo ótimo limita MAX a esse valor. Um erro do oponente pode permitir um resultado melhor, portanto 5 é um limite inferior, não uma previsão de que toda partida deve terminar exatamente em 5.
Um programa pode aproveitar uma fraqueza preservando esse limite. Se duas jogadas têm valor minimax 5, ele pode preferir aquela que oferece mais oportunidades para o oponente cometer um erro. Escolher uma jogada de valor minimax 2 porque ela contém um tentador 15 abandona a garantia de 5. A diferença está em a jogada preservar ou não o melhor valor no pior caso.
Principais conclusões
- Propague um mínimo nos nós MIN e um máximo nos nós MAX.
- O valor minimax é um número; a decisão é uma jogada.
- A maior folha, por si só, não identifica a melhor jogada.
- Uma variante principal segue escolhas ótimas em cada nível.
- O minimax completo garante seu valor contra um oponente que joga de modo ótimo.
- Um oponente mais fraco pode permitir um resultado acima dessa garantia.
2.2 Escreva um programa minimax recursivo
A definição de minimax já é um programa recursivo. Uma função de valor recebe um estado e retorna um número. Uma função de busca compara as primeiras jogadas possíveis e retorna a ação a ser executada.
Separe a escolha da jogada do cálculo do valor
O pseudocódigo a seguir pressupõe que MAX age na raiz e que os turnos se alternam:
MINIMAX-SEARCH(s):
if Is-Terminal(s): return no action
bestMove = no action
bestValue = -infinity
for a in Actions(s):
value = MIN-VALUE(Result(s, a))
if value > bestValue:
bestValue = value
bestMove = a
return bestMove
MAX-VALUE(s):
if Is-Terminal(s): return Utility(s, MAX)
v = -infinity
for a in Actions(s):
v = max(v, MIN-VALUE(Result(s, a)))
return v
MIN-VALUE(s):
if Is-Terminal(s): return Utility(s, MAX)
v = +infinity
for a in Actions(s):
v = min(v, MAX-VALUE(Result(s, a)))
return v
Inicialize MAX com infinito negativo para que qualquer filho o melhore; inicialize MIN com infinito positivo. Verifique o término antes de gerar sucessores. Um tabuleiro de jogo da velha cheio sem uma linha vencedora é um empate, não uma posição não terminal cuja melhor jogada deve ser selecionada de uma lista vazia.
Acompanhe o que a recursão descobre
Considere este tabuleiro de jogo da velha, com X na vez e um ponto para cada casa vazia:
X O X
. O .
. . .
O ameaça completar a coluna do meio. Se X jogar em qualquer lugar exceto na casa inferior central, O poderá vencer no próximo turno. Essas jogadas têm valor −1 para X. Jogar na casa inferior central bloqueia a vitória imediata e permite um empate com jogo ótimo, resultando em valor 0. A raiz retorna a casa inferior central. O algoritmo não precisa de uma instrução separada que identifique essa ameaça: os resultados terminais determinam os valores.
Calcule os custos de tempo e memória
O minimax em profundidade examina nós para fator de ramificação e profundidade máxima . Armazenar todos os irmãos gerados em cada nível ativo exige memória . Gerar sucessores um por vez reduz o armazenamento da busca ativa para , além da representação do estado. O tempo exponencial, não a pilha de recursão, geralmente é o principal obstáculo.
Preserve a convenção de pontuação
No código MAX/MIN, toda chamada retorna a utilidade de MAX. Não inverta seu sinal apenas porque MIN age em seguida. O negamax usa uma convenção diferente: cada valor é do ponto de vista do jogador atual, portanto o valor de um filho é negado antes de o pai maximizá-lo:
Para um jogo que termina em menos de 100 meias-jogadas, o tempo pode ser incluído atribuindo-se a uma vitória de MAX na profundidade a pontuação , a uma derrota e a um empate 0. Vitórias mais rápidas recebem então pontuações maiores e derrotas adiadas são menos negativas. O limite estrito de profundidade mantém toda vitória positiva e toda derrota negativa.
Por exemplo, vitórias nas meias-jogadas 3 e 7 recebem 97 e 93 pontos, portanto a vitória mais rápida é preferida. Derrotas nessas profundidades recebem −97 e −93, tornando a derrota mais tardia preferível, embora ambas continuem piores que um empate.
Principais conclusões
- Verifique os estados terminais antes de expandir jogadas.
- Retorne ações da função de busca e números das funções de valor.
- O minimax em profundidade leva tempo exponencial.
- Todas as utilidades MAX/MIN mantêm o ponto de vista de MAX.
- O negamax muda o ponto de vista e nega cada valor retornado por um filho.
2.3 Mantenha um ganho para cada jogador
Uma única utilidade de MAX funciona quando os interesses de dois jogadores são estritamente opostos. Com vários jogadores ou interesses que coincidem, mantenha um vetor de utilidades. Para os jogadores A, B e C, o vetor (1, 2, 6) fornece seus ganhos nessa ordem.
Selecione pela entrada do jogador ativo
Em um nó em que C age, compare as terceiras entradas dos vetores dos filhos. Retorne o vetor inteiro do filho preferido por C. Em um nó de B, compare as segundas entradas desses vetores retornados; em um nó de A, compare as primeiras.
Não maximize cada entrada independentemente. Se os resultados disponíveis forem (1, 2, 6) e (4, 2, 3), C escolhe (1, 2, 6). A combinação (4, 2, 6) não é um resultado disponível e não pode ser propagada.
Trabalhe de trás para frente com três jogadores
A joga primeiro, depois B e depois C. Na jogada de A à esquerda, B escolhe entre dois nós de C:
- O primeiro tem folhas (1, 2, 6) e (4, 2, 3). C escolhe (1, 2, 6).
- O segundo tem folhas (6, 1, 2) e (7, 4, 1). C escolhe (6, 1, 2).
B compara as segundas entradas 2 e 1, portanto o ramo esquerdo retorna (1, 2, 6).
Na jogada de A à direita:
- C escolhe (5, 4, 5) em vez de (2, 5, 4), porque 5 é maior que 4 na terceira entrada.
- C escolhe (5, 2, 4) em vez de (7, 7, 1), porque 4 é maior que 1 na terceira entrada.
B compara as segundas entradas 4 e 2, portanto o ramo direito retorna (5, 4, 5). Por fim, A compara as primeiras entradas 1 e 5 e escolhe a direita. A raiz recebe o vetor inteiro (5, 4, 5).
Indique como os empates são resolvidos
Se C puder escolher (2, 3, 4) ou (6, 1, 4), ambos darão 4 a C. O ganho final de A poderá ser 2 ou 6. Uma previsão precisa de uma regra de desempate ou de um modelo da escolha de C. A indiferença de outro jogador não é necessariamente inofensiva para o jogador da raiz.
| Modelo | O que cada outro jogador prefere |
|---|---|
| Propagação de vetores de utilidades | Um valor maior na própria entrada do vetor |
| Vários adversários MIN | Um valor menor da única utilidade de MAX |
| Busca paranoica | Cada outro jogador é modelado como parte de uma coalizão contra o jogador da raiz |
Se dois perseguidores querem capturar MAX, uma rodada tem uma camada MAX e uma camada MIN para cada perseguidor. Com dois perseguidores, uma rodada tem três meias-jogadas. Esse modelo difere de três jogadores independentes que buscam suas próprias recompensas.
Permita que os interesses coincidam
Em um jogo de soma geral, ambos os jogadores podem preferir (100, 100) a ganhos conjuntos menores. Os jogadores também podem se beneficiar temporariamente ao atacar um líder comum. Esse comportamento semelhante a uma aliança pode resultar de suas próprias preferências e mudar quando a posição muda.
Os cortes comuns da poda alfa-beta dependem de interesses opostos e não se transferem diretamente para vetores de utilidades. O modelo paranoico restaura uma oposição entre dois jogadores, permitindo a busca alfa-beta, mas pode prever uma hostilidade coordenada que os outros jogadores não escolheriam de fato.
Principais conclusões
- Um vetor de utilidades mantém um ganho por jogador.
- O jogador ativo escolhe pela própria entrada e retorna o vetor inteiro.
- Empates exigem uma regra quando as escolhas empatadas afetam os outros jogadores de modo diferente.
- Várias camadas MIN são adequadas a adversários que compartilham o objetivo de reduzir a utilidade de MAX.
- O modelo paranoico pressupõe uma coalizão contra o jogador da raiz.
3Ignore ramos que não podem mudar a escolha
O minimax pode passar a maior parte do tempo confirmando escolhas que um jogador nunca permitiria. A poda alfa-beta leva limites ao longo do caminho atual para poder interromper essas buscas mais cedo. A ordem das jogadas determina quando surgem limites úteis. O aprofundamento iterativo e os resultados armazenados ajudam um programa a encontrar essa ordem e reutilizar trabalho anterior sem confundir uma estimativa incompleta com um valor exato.
3.1 Acompanhe alfa e beta pela árvore
A poda alfa-beta fornece o mesmo valor da raiz que o minimax na mesma árvore com os mesmos valores nas folhas. Ela economiza trabalho ao demonstrar que alguns ramos não podem melhorar a escolha. Jogadas ótimas empatadas podem ser retornadas em outra ordem.
Passe uma janela de busca pelo caminho
Dois limites descrevem as escolhas disponíveis acima do nó atual:
- é o melhor valor disponível para MAX ao longo do caminho: MAX já pode obter pelo menos esse valor.
- é o melhor valor disponível para MIN ao longo do caminho: MIN já pode limitar MAX a no máximo esse valor.
Inicie a raiz com infinito negativo e positivo. Cada filho recursivo recebe os limites atuais. Eles são argumentos locais, não números globais compartilhados entre buscas em irmãos não relacionados.
Em um nó MAX, mantenha o maior valor de filho visto. Pare quando ele atingir ou superar beta: MIN acima já tem uma alternativa que não é maior que beta. Caso contrário, aumente alfa quando MAX encontrar uma melhora. Em um nó MIN, mantenha o menor valor de filho visto. Pare quando ele atingir alfa ou ficar abaixo dele: MAX acima já tem uma alternativa pelo menos tão boa. Caso contrário, reduza beta.
MAX-VALUE(s, alpha, beta):
if Is-Terminal(s): return Utility(s, MAX)
v = -infinity
for a in Actions(s):
v = max(v, MIN-VALUE(Result(s, a), alpha, beta))
if v >= beta: return v
alpha = max(alpha, v)
return v
MIN-VALUE(s, alpha, beta):
if Is-Terminal(s): return Utility(s, MAX)
v = +infinity
for a in Actions(s):
v = min(v, MAX-VALUE(Result(s, a), alpha, beta))
if v <= alpha: return v
beta = min(beta, v)
return v
A raiz compara ações e mantém alfa entre elas:
ALPHA-BETA-SEARCH(s):
if Is-Terminal(s): return no action
alpha = -infinity
beta = +infinity
bestMove = no action
for a in Actions(s):
v = MIN-VALUE(Result(s, a), alpha, beta)
if v > alpha:
alpha = v
bestMove = a
return bestMove
Acompanhe um corte em MIN
Pesquise os ramos MIN A = (4, 9, 6), B = (2, 15, 13) e C = (5, 8, 10), da esquerda para a direita. A precisa examinar as três folhas e retorna 4. A raiz agora tem alfa 4. A primeira folha de B é 2. Seu mínimo final só pode permanecer em 2 ou diminuir, portanto B não pode superar A. Ignore as duas folhas restantes de B. C examina as três folhas e retorna 5. A raiz escolhe C após examinar sete das nove folhas.
Acompanhe um corte em MAX
Suponha que um pai MIN já tenha um filho de valor 3, definindo beta como 3. Seu próximo filho MAX encontra uma folha de valor 6. O valor desse filho é pelo menos 6, portanto MIN preferirá seu 3 já existente. Ignore os filhos restantes desse nó MAX. O raciocínio do corte usa a alternativa de MIN, embora o nó atual seja MAX.
Um nó MIN podado pode retornar um limite superior; um nó MAX podado pode retornar um limite inferior. Seus valores exatos permanecem desconhecidos. O valor final da raiz é exato para a árvore pesquisada. A igualdade também permite um corte porque um ramo que só pode empatar não pode melhorar o melhor valor atual.
Principais conclusões
- Alfa é o limite inferior disponível para MAX; beta é o limite superior disponível para MIN.
- MAX aumenta alfa e corta em beta.
- MIN reduz beta e corta em alfa.
- Passe os limites para baixo como argumentos locais.
- O resultado de um corte pode ser um limite em vez do valor exato de um nó.
- A poda preserva o valor minimax da raiz, inclusive com cortes na igualdade.
3.2 Encontre limites úteis cedo e reutilize buscas
A poda alfa-beta economiza mais trabalho quando jogadas fortes são pesquisadas cedo. Os valores não mudam com a ordem das jogadas; o que muda é o momento em que a busca consegue demonstrar um corte.
Compare duas ordens
Para os três ramos MIN A = (4, 9, 6), B = (2, 15, 13) e C = (5, 8, 10), começar por A exige examinar sete folhas. Comece por C. Suas três folhas estabelecem alfa 5. A encontra 4 imediatamente e sofre um corte; B encontra 2 imediatamente e sofre um corte. Apenas cinco folhas são avaliadas, e a resposta continua sendo C com valor 5.
Para uma árvore uniforme com ordenação perfeita, a contagem de folhas é:
Isso é cerca de em vez de do minimax. O fator de ramificação efetivo cai para cerca de , permitindo aproximadamente o dobro da profundidade com recursos comparáveis. Com , a profundidade 8 com ordenação perfeita avalia 3.001.249 folhas; o minimax comum de profundidade 4 tem 1.500.625 folhas. A comparação diz respeito à escala, não a tempos de execução idênticos.
| Ordenação | Custo aproximado em folhas |
|---|---|
| Perfeita | |
| Aleatória, para fatores de ramificação moderados | Cerca de |
| Pior caso |
Na pior ordem, a poda alfa-beta pode examinar todas as folhas do minimax. Suas verificações adicionais de limites acrescentam custo mesmo quando não economizam folhas.
Use pistas de ordenação baratas
A melhor jogada exata é desconhecida antes da busca. Os programas usam estimativas rápidas. No xadrez, podem testar capturas, depois ameaças e depois jogadas tranquilas. Uma jogada matadora causou um corte em outro ponto na mesma profundidade de busca e é testada cedo em outra posição. Essas pistas afetam a eficiência; elas não justificam descartar as outras jogadas permitidas.
O aprofundamento iterativo busca até a profundidade 1, depois 2, depois 3 e assim por diante. Uma jogada forte da iteração anterior se torna uma candidata inicial na próxima. O resultado mais profundo concluído também fica pronto caso o tempo acabe.
O trabalho repetido tem custos diferentes dependendo da poda. Para uma busca uniforme sem poda com fator de ramificação 35, todas as iterações menos profundas acrescentam cerca de à busca final. Para a poda alfa-beta com ordenação perfeita, as profundidades 1 a 7 juntas avaliam 1.677.159 folhas, cerca de 56% da contagem da profundidade 8. Uma ordenação melhor ainda pode fazer o processo completo valer a pena.
Armazene posições com seu significado
Uma tabela de transposições armazena resultados indexados pelo estado completo do jogo. Se outra ordem de jogadas alcançar esse estado, o programa poderá reutilizar uma entrada adequada. Armazene a profundidade pesquisada e se o resultado é exato, um limite inferior ou um limite superior. Uma entrada rasa não substitui a informação exigida por uma busca mais profunda. Um limite pode estreitar uma janela ou justificar um corte, mas não deve ser tratado como um valor exato.
Principais conclusões
- A ordem das jogadas altera o trabalho da poda alfa-beta, não seu valor na raiz.
- A ordenação perfeita reduz o custo exponencial para cerca de b elevado a m/2.
- O aprofundamento iterativo fornece uma jogada já calculada e melhora a ordenação.
- Uma entrada de transposição precisa da profundidade e de uma indicação de valor exato, limite inferior ou superior.
4Avalie posições não terminadas com tempo limitado
Jogos grandes obrigam a busca a parar enquanto a partida ainda não terminou. Uma função de avaliação fornece pontuações utilizáveis para essas posições da fronteira, e a busca as propaga pelas escolhas dos jogadores. A regra de parada importa tanto quanto a pontuação: uma posição no meio de uma captura pode parecer enganosamente forte. Extensões seletivas e consultas exatas ajudam um programa a gastar seu tempo limitado onde o resultado é mais sensível.
4.1 Construa e interprete uma função de avaliação
Uma função de avaliação estima quão favorável uma posição não terminada é para MAX. Ela torna possível a busca com profundidade limitada: a fronteira recebe valores estimados que podem ser propagados pelo minimax ou pela poda alfa-beta.
Torne as pontuações úteis para a busca
Um bom avaliador é rápido, concorda com a ordem dos resultados terminais reais e tem correlação com o sucesso a partir de posições não terminais. Os próprios estados terminais devem receber sua utilidade exata. Uma vitória de MAX deve ter pontuação acima de toda estimativa não terminal, para que acumular peças não se torne mais atraente que vencer.
Uma maneira de entender a avaliação é agrupar posições por características compartilhadas. Se esse grupo produz 72% de vitórias, 8% de empates e 20% de derrotas, com utilidades 1, ½ e 0, sua utilidade média é:
Essa interpretação depende de como as posições e continuações foram amostradas. É uma estimativa da qualidade do resultado, não uma prova de vitória forçada.
Some características ponderadas
Um projeto comum é uma soma ponderada:
Cada característica mede uma propriedade da posição; cada peso indica quanto ela contribui. Diferenças entre os lados mantêm claro o ponto de vista. Uma diferença material positiva significa que MAX tem mais material.
Os valores tradicionais do xadrez são peão 1, cavalo 3, bispo 3, torre 5 e dama 9. O rei não recebe um valor material de captura. Suponha que MAX seja as brancas. As brancas têm uma dama, duas torres, um bispo e seis peões:
As pretas têm duas torres, dois cavalos, um bispo e sete peões:
A característica material é, portanto, . Se as brancas têm 30 jogadas permitidas e as pretas 24, a diferença de mobilidade é 6. Com peso material 1 e peso de mobilidade 0,1:
Esse 2,6 é uma pontuação de características, não uma probabilidade de vitória de 260%. Os pesos definem sua escala.
Considere características que interagem
Uma soma linear simples dá a cada característica uma contribuição fixa independente das demais. O valor real do jogo pode depender de combinações: um par de bispos pode valer mais que a soma de seus efeitos separados, e a importância de um peão pode mudar em um final de jogo. Características combinadas, pesos dependentes da fase ou avaliadores não lineares podem captar esses efeitos. Os pesos podem ser escolhidos por julgamento ou ajustados aos resultados de partidas registradas.
Mais características também custam tempo. Um avaliador elaborado que impede uma meia-jogada adicional útil de busca pode prejudicar a decisão, mesmo que suas estimativas individuais melhorem.
Ajuste a escala à regra de propagação
No minimax determinístico, transformações estritamente crescentes aplicadas de forma consistente preservam a ordem por meio de máximos e mínimos. Elevar apenas pontuações positivas ao quadrado, por exemplo, mantém sua ordem. Elevar ao quadrado pontuações arbitrárias com sinais positivos e negativos não mantém. Em nós de acaso, as distâncias reais entre utilidades importam porque os valores são calculados pela média. Uma pontuação projetada apenas para ordenar posições precisa de calibração antes de poder representar a utilidade esperada.
Principais conclusões
- Avalie estados não terminais da fronteira e use a utilidade exata nos estados terminais.
- Uma vitória real deve superar toda estimativa não terminal.
- Um avaliador ponderado soma características medidas multiplicadas por seus pesos.
- Pontuações de características não precisam ser probabilidades.
- Interações podem exigir características combinadas ou pesos variáveis.
- Nós de acaso precisam de valores de utilidade em uma escala significativa.
4.2 Escolha onde parar e onde buscar mais profundamente
O minimax heurístico para antes do fim do jogo. Sua resposta é ótima para a árvore pesquisada com as pontuações atribuídas à fronteira. Ainda assim, ele pode escolher uma jogada que leva à derrota no jogo real quando essas estimativas não captam o que acontece em seguida.
Diferencie estados terminais de cortes
Um estado terminal tem um resultado conhecido. Um corte de profundidade deixa a partida inacabada e precisa de uma estimativa. Faça os testes nessa ordem:
H-MINIMAX(s, d):
if Is-Terminal(s): return Utility(s, MAX)
if Is-Cutoff(s, d): return Eval(s)
if To-Move(s) == MAX:
return max over a of H-MINIMAX(Result(s, a), d + 1)
return min over a of H-MINIMAX(Result(s, a), d + 1)
O teste de corte geralmente verifica se a profundidade atingiu um limite. A poda alfa-beta pode podar essa mesma árvore heurística. Sua poda continua exata em relação a esses valores da fronteira; ela não transforma estimativas em resultados reais do jogo.
Sob um limite de tempo, o aprofundamento iterativo mantém a ação da iteração mais profunda concluída. Uma raiz parcialmente pesquisada em uma iteração mais profunda pode favorecer o primeiro ramo simplesmente porque seus concorrentes ainda não foram avaliados.
Conclua uma troca tática
Uma posição quiescente é suficientemente estável para que uma curta continuação forçada provavelmente não altere muito sua avaliação. A busca de quiescência continua além da profundidade normal em posições instáveis, geralmente seguindo capturas até que a troca se encerre.
Suponha que a dama branca capture um peão exatamente no limite de profundidade. A pontuação material melhora em 1. Mas as pretas podem recapturar essa dama na meia-jogada seguinte. A mudança material líquida é:
Parar após a primeira captura indica +1; uma breve extensão de capturas revela −8. O problema é avaliar no meio de uma troca, não uma falha da regra de propagação do minimax.
Reconheça perdas adiadas
O efeito horizonte ocorre quando um programa adia uma perda inevitável até que ela fique além da profundidade de busca. Um bispo preso ainda pode ser perdido após vários xeques com peões. Se a busca enxerga os xeques, mas para antes da captura do bispo, ela pode sacrificar peões para esconder essa perda futura.
Uma extensão singular busca mais profundamente ao longo de uma jogada claramente superior às alternativas. Os programas também estendem xeques forçados ou recapturas. As extensões gastam profundidade adicional em sequências selecionadas; elas precisam de um limite de recursos para que a busca ainda possa terminar.
| Técnica | Base para fazer menos ou mais trabalho |
|---|---|
| Alfa-beta | Um limite prova que um ramo não pode melhorar a decisão. |
| Poda antecipada | Uma heurística prevê que algumas jogadas não são importantes. |
| Quiescência ou extensão tática | Uma sequência instável ou forçada precisa de mais profundidade. |
A poda antecipada, como manter apenas algumas das melhores jogadas, pode descartar a jogada vencedora. Sua economia não traz a garantia da poda alfa-beta.
Substitua a busca por conhecimento exato armazenado
Um livro de aberturas fornece jogadas iniciais estudadas. Bases de dados de finais trabalham de trás para frente a partir de resultados conhecidos por meio de análise retrógrada. Bases de xadrez de sete peças incluem os dois reis e fornecem resultados exatos para os finais abrangidos. As regras e as informações de estado usadas na consulta devem corresponder ao jogo em andamento.
Principais conclusões
- Use a utilidade exata para estados terminais e a avaliação para cortes em posições não terminadas.
- Execute a melhor ação da iteração mais profunda concluída.
- A busca de quiescência conclui trocas táticas antes da avaliação.
- O efeito horizonte pode recompensar atrasos custosos de uma perda inevitável.
- A poda antecipada pode perder a melhor jogada; a poda alfa-beta prova que seus cortes são seguros.
- Livros e bases de dados de finais fornecem conhecimento armazenado em vez de uma nova busca.
5Propague resultados aleatórios com probabilidades
Alguns ramos são escolhidos por um jogador; outros são escolhidos pelo acaso. A regra de propagação deve acompanhar essa diferença em cada nó. Médias ponderadas permitem que um programa lide com dados ou com um modelo de comportamento imprevisível, mas também tornam importante a escala numérica do avaliador. A escolha adequada depende tanto das regras do jogo quanto da precisão com que o programa modela seu oponente.
5.1 Calcule valores por meio de nós de acaso
Um nó de acaso representa um evento aleatório. Seus ramos apresentam resultados possíveis e suas probabilidades, que somam 1. Nenhum jogador escolhe o ramo mais favorável para si.
Use a regra correspondente a cada nó
| Nó | Valor propagado |
|---|---|
| Terminal | Sua utilidade |
| MAX | O valor máximo dos filhos |
| MIN | O valor mínimo dos filhos |
| Acaso | A média dos valores dos filhos ponderada pelas probabilidades |
Para resultados , um nó de acaso tem valor:
O expectiminimax combina as quatro regras. O expectimax usa MAX e acaso quando não há jogador minimizador. Um modelo de probabilidade de um oponente aleatório pode fornecer ramos de acaso mesmo em um jogo cujas regras de jogada são determinísticas.
Trabalhe de trás para frente com acaso e oposição
MAX escolhe L ou R. Cada jogada leva a um evento aleatório, seguido de uma escolha de MIN.
Após L, uma moeda justa leva a dois nós MIN. Suas folhas são (3, 7) e (8, 4). MIN retorna 3 e 4. O nó de acaso fornece então:
Após R, as probabilidades 0,25 e 0,75 levam a nós MIN com folhas (10, 1) e (6, 5). Seus valores são 1 e 5, portanto:
MAX escolhe R porque 4 é maior que 3,5. Calcular primeiro a média das folhas terminais diretamente faria o acaso substituir a decisão de MIN. Processe cada nó depois que seus filhos tiverem sido resolvidos.
Atribua as probabilidades corretas
Dois dados justos têm 36 resultados ordenados igualmente prováveis. O gamão agrupa ordens invertidas, como 3–5 e 5–3, em um mesmo lançamento. Isso fornece 21 lançamentos distintos: seis duplas com probabilidade 1/36 cada e 15 lançamentos sem dupla com probabilidade 1/18 cada. A verificação é:
Atribuir probabilidade 1/21 a cada um dos 21 lançamentos superestimaria as duplas e subestimaria os lançamentos sem dupla. Ramos que parecem equivalentes não precisam ter probabilidades iguais.
Se cada etapa de decisão tem jogadas permitidas e um evento de acaso com resultados, pesquisar dessas etapas custa cerca de . A convenção de profundidade deve incluir a frequência do acaso. Com cerca de 20 jogadas permitidas e 21 lançamentos, os ramos adicionais de acaso do gamão limitam rapidamente a busca exaustiva à frente.
Por exemplo, duas etapas contendo cada uma 21 resultados de acaso e 20 ações produzem caminhos. Conte os eventos de acaso separadamente das meias-jogadas dos jogadores ao estimar esse custo.
Pode apenas quando os resultados não vistos tiverem limites
Uma média parcial não é um limite minimax. Se as utilidades estiverem entre 0 e 10 e o primeiro de dois resultados igualmente prováveis valer 2, o nó inteiro estará entre 1 e 6. Em particular:
Se MAX já tiver outra jogada de valor 7, esse nó de acaso não poderá superá-la e o resultado restante poderá ser ignorado. Sem um limite adequado para os valores não vistos, um resultado extremo ainda poderia alterar a média o suficiente para inverter a escolha.
Principais conclusões
- Nós de acaso retornam médias ponderadas, não máximos ou mínimos.
- Resolva os filhos antes de combiná-los no nó pai.
- Verifique se as probabilidades de acaso somam 1.
- Duplas e lançamentos sem dupla no gamão têm probabilidades diferentes.
- A ramificação de acaso multiplica o custo da busca.
- Limitar os resultados não examinados pode justificar um corte em um nó de acaso.
5.2 Escolha uma escala de utilidade e um modelo do oponente
O minimax pergunta qual resultado um oponente pode garantir. O expectimax pergunta qual utilidade média resulta de um modelo de probabilidade. Suas decisões podem diferir mesmo na mesma árvore porque representam comportamentos diferentes.
Compare oposição ótima e aleatória
Para os ramos MIN A = (4, 9, 6), B = (2, 15, 13) e C = (5, 8, 10), o minimax escolhe C com uma garantia de 5. Se o oponente escolher cada resposta uniformemente, os valores esperados serão cerca de 6,33, 10 e 7,67. O expectimax escolhe B.
Isso é sensato sob o modelo uniforme, mas um adversário habilidoso pode responder a B com 2. O expectimax não pressupõe que o oponente minimize uma média. Ele usa as probabilidades especificadas. Com um modelo correto, maximiza a utilidade esperada; a proteção no pior caso é mais fraca que a do minimax. Ele pode empatar com o desempenho médio do minimax quando ambos recomendam a mesma jogada.
Uma árvore pode misturar modelos. O nó de um agente hostil toma um mínimo, enquanto o nó de um agente aleatório toma uma média ponderada. Use a regra do agente que age naquele nó, não uma única regra para todas as camadas que não sejam MAX.
Veja por que a ordem, por si só, é insuficiente
Suponha que a jogada A dê 2 com probabilidade 0,6 e 3 com probabilidade 0,4. A jogada B dá 1 com probabilidade 0,6 e 4 com probabilidade 0,4:
A tem o maior valor esperado. Agora eleve cada valor terminal ao cubo. Sua classificação permanece a mesma, mas os valores esperados passam a ser:
B agora vence a comparação. Calcular a média dos resultados transformados é diferente de transformar sua média. Elevar ao cubo amplifica o benefício do resultado alto de B o suficiente para mudar a decisão.
Preserve decisões com as transformações corretas
| Regra de propagação | Transformação que preserva as decisões |
|---|---|
| Minimax | Qualquer transformação estritamente crescente aplicada de forma consistente |
| Utilidade esperada | Uma transformação afim com coeficiente angular positivo, com |
Uma transformação afim com coeficiente angular positivo multiplica todo valor esperado pelo mesmo número positivo e soma a mesma constante. Aplicar dá a A o valor 29 e a B o valor 27, mantendo a preferência por A.
Se A e B fossem nós MIN, seus valores seriam 2 e 1 antes de elevar ao cubo e 8 e 1 depois. Sua ordem permaneceria inalterada. Máximos e mínimos selecionam um valor de filho; médias combinam as magnitudes de vários valores.
Um avaliador usado com acaso deve, portanto, estimar a utilidade esperada pretendida em uma escala consistente, como a probabilidade de vitória ou uma transformação afim com coeficiente angular positivo dessa probabilidade. Uma pontuação de ordenação não linear pode ser adequada ao minimax determinístico e, ao mesmo tempo, produzir escolhas inadequadas diante do risco quando há acaso.
Principais conclusões
- Escolha minimax para oposição ótima e valor esperado para um modelo de probabilidade.
- Um modelo de acaso correto otimiza a utilidade média, com proteção mais fraca no pior caso.
- Transformações estritamente crescentes preservam decisões minimax.
- Transformações afins com coeficiente angular positivo preservam decisões por utilidade esperada.
- Uma transformação não linear pode mudar uma escolha baseada em médias.
6Use simulações para orientar uma árvore de busca em crescimento
Quando o espaço de jogadas é enorme, um programa pode estimar resultados simulando continuações e direcionar o trabalho posterior para ramos úteis. A busca em árvore de Monte Carlo armazena esses resultados em uma árvore que cresce. Sua regra de seleção equilibra jogadas que já parecem fortes com jogadas cujas estimativas ainda são incertas. Escolher uma ação final exige avaliar as evidências acumuladas e reconhecer as respostas táticas que a simulação pode deixar passar.
6.1 Execute uma iteração da busca em árvore de Monte Carlo
A busca em árvore de Monte Carlo, ou MCTS, estima jogadas a partir de partidas simuladas enquanto constrói uma árvore que orienta simulações futuras. Uma continuação simulada até o fim é uma simulação de partida ou simulação de continuação. Sua política pode selecionar jogadas permitidas aleatórias ou usar conhecimento de baixo custo para produzir um jogo mais sensato.
Armazene evidências em cada nó
Mantenha uma contagem de visitas e uma recompensa acumulada . Em um jogo de vitória e derrota com dois jogadores, use as vitórias do jogador que fez a jogada que levou ao nó . Um empate geralmente acrescenta meia vitória. Então estima a taxa de sucesso desse jogador.
A raiz não tem uma jogada de entrada. Suas visitas ainda contam todas as iterações; as vitórias da raiz podem ser acompanhadas do ponto de vista do jogador da raiz, se necessário. As pontuações dos filhos, que orientam a seleção, devem usar de forma consistente o ponto de vista de quem fez a jogada de entrada.
Repita as quatro fases
- Seleção: A partir da raiz, siga uma política de seleção pelos filhos existentes até chegar a um nó terminal ou a um nó com uma jogada não testada.
- Expansão: Se o nó não for terminal, acrescente um filho para uma jogada permitida não testada.
- Simulação: Execute uma simulação de partida a partir desse filho até um resultado terminal.
- Retropropagação de resultados: Atualize visitas e recompensas dos nós no caminho selecionado.
Se a seleção chegar a um nó terminal, pule a expansão e a simulação. Seu resultado conhecido pode ser propagado imediatamente. A continuação temporária de uma simulação de partida não precisa ser armazenada como novos nós da árvore: a expansão comum acrescenta um filho por iteração.
Acompanhe uma atualização de recompensa
As brancas agem na raiz. A seleção e a expansão seguem:
- n1, alcançado pela jogada das brancas;
- n2, alcançado pela jogada das pretas;
- n3, alcançado pela jogada das brancas.
A simulação termina com vitória das pretas. Aumente as visitas em um na raiz e em n1, n2 e n3. Entre esses três nós filhos, aumente as vitórias apenas em n2, pois quem fez a jogada de entrada em n2 foram as pretas. Os nós filhos das brancas não recebem acréscimo de vitória. Sob uma convenção do jogador da raiz, o total de vitórias da própria raiz também permanece inalterado.
Um empate acrescentaria 0,5 à recompensa de cada filho. Contar a vitória das pretas como sucesso em todos os nós faria as brancas selecionarem jogadas que ajudam as pretas.
Deixe a árvore crescer de modo desigual
Iterações repetidas concentram simulações em ramos promissores ou incertos. Jogadas que parecem fortes tendem a adquirir subárvores maiores, enquanto jogadas ruins recebem menos trabalho. A busca não impõe uma profundidade fixa a todas as sequências. Assim que houver uma jogada permitida disponível, ela poderá parar em um limite de tempo e usar suas estatísticas acumuladas.
A ação final geralmente é o filho da raiz com mais visitas. Uma jogada com duas vitórias em duas simulações tem uma taxa observada perfeita, mas poucas evidências. Uma jogada muito visitada reflete uma análise muito maior pela busca.
A busca pura de Monte Carlo atribui simulações de partida independentes às jogadas da raiz sem expandir uma árvore de decisão. Ela pode deixar passar repetidamente uma resposta forte do oponente porque as jogadas posteriores continuam sendo regidas pela política de simulação. A MCTS aprende onde ramificar mais profundamente à medida que acumula evidências, embora uma refutação tática rara ainda possa levar tempo para ser descoberta.
Principais conclusões
- A MCTS armazena contagens de visitas e recompensas acumuladas em uma árvore em crescimento.
- Use seleção, expansão, simulação e retropropagação de resultados.
- Um nó terminal selecionado precisa apenas ter seu resultado conhecido propagado.
- As recompensas de um filho contam o sucesso do jogador que fez a jogada que levou a ele.
- A ação final geralmente é o filho da raiz mais visitado.
6.2 Equilibre recompensas conhecidas com jogadas incertas
A MCTS precisa decidir onde outra simulação será mais útil. A explotação revisita jogadas que já parecem fortes. A exploração investiga jogadas com menos evidências que podem se mostrar melhores. Buscar sempre a maior taxa de vitórias observada pode prender a busca a um resultado inicial obtido por sorte.
Calcule uma pontuação UCB1
A pontuação de limite superior de confiança para o filho é:
O primeiro termo é a taxa de vitórias observada. O segundo é um bônus de exploração. Ele cresce à medida que o pai acumula visitas e diminui à medida que o filho recebe mais visitas. O logaritmo é natural. Durante a seleção, escolha o filho com a maior pontuação combinada.
Trate um filho não visitado como tendo prioridade infinita em vez de dividir por zero. Toda jogada permitida em um nó é testada antes que a seleção passe a favorecer repetidamente alternativas visitadas. A MCTS que usa essa regra de seleção é chamada de UCT, busca em árvore com limites superiores de confiança.
Compare três filhos
Um nó pai tem 50 visitas. Seus filhos têm contagens de vitórias/visitas de 21/30, 7/12 e 3/8. Com e :
| Filho | Taxa de vitórias | Bônus de exploração | Total |
|---|---|---|---|
| Primeiro | 0,700 | 0,511 | 1,211 |
| Segundo | 0,583 | 0,807 | 1,391 |
| Terceiro | 0,375 | 0,989 | 1,364 |
O segundo filho é selecionado. Sua taxa de vitórias atual é menor que a do primeiro filho, mas seu bônus de incerteza é maior. O terceiro é ainda menos visitado, mas sua taxa de vitórias menor deixa seu total ligeiramente abaixo do segundo.
Com , os mesmos totais passam a ser cerca de 0,881, 0,869 e 0,725. A seleção agora favorece o primeiro filho. Nenhum resultado mudou; o programa mudou o quanto recompensa a incerteza.
Interprete a constante de exploração
Um positivo maior dá mais peso à exploração. Defini-lo como zero remove o bônus e escolhe apenas pela média observada. A formulação do problema do bandido com recompensas entre 0 e 1 motiva nessa forma da equação; programas de jogos práticos ajustam a constante. Mudar a escala da recompensa também altera o equilíbrio com o termo de exploração.
Em cada nó pai, seus filhos registram vitórias para o jogador que escolhe ali. Isso torna sensato maximizar UCB1 nos turnos de ambos os jogadores. Armazenar apenas vitórias das brancas em toda a árvore enquanto se maximiza cada pontuação faria as pretas favorecerem o sucesso das brancas.
Separe prioridade de busca de qualidade da jogada
UCB1 escolhe onde gastar a próxima simulação. Um grande bônus de incerteza pode fazer valer a pena investigar uma jogada pouco amostrada. Ao fim da busca, escolha o filho da raiz mais visitado, não aquele com a maior pontuação UCB1 atual. Nas condições de jogo finito da UCT e com exploração contínua, uma busca ilimitada converge para o comportamento minimax; um limite finito de recursos ainda deixa incerteza amostral.
Principais conclusões
- UCB1 soma a recompensa média observada a um bônus de exploração.
- Um C maior incentiva mais exploração.
- Filhos não visitados recebem prioridade sem divisão por zero.
- A seleção maximiza o sucesso esperado do jogador ativo.
- UCB1 seleciona simulações; a escolha da jogada final geralmente usa visitas.
- Um número finito de simulações deixa incerteza mesmo quando a regra está correta.
6.3 Escolha métodos de busca para jogos diferentes
Um método de busca deve ser adequado ao tamanho do espaço de jogadas, à qualidade da avaliação disponível e ao tipo de incerteza no jogo. O mesmo limite de tempo pode produzir decisões muito diferentes dependendo do que o método investiga.
Compare cobertura tática e simulação
| Característica do jogo | Abordagem útil | Motivo |
|---|---|---|
| Ramificação moderada, avaliador forte, táticas intensas | Alfa-beta com ordenação de jogadas | Verifica as respostas relevantes dentro de sua profundidade. |
| Ramificação enorme ou avaliação escrita à mão fraca | MCTS | Simulações direcionam o esforço para partes promissoras da árvore. |
| Acaso com uma árvore rasa de tamanho administrável | Expectiminimax ou expectimax | Probabilidades explícitas podem ser propagadas diretamente. |
| Muitos resultados de acaso | MCTS com amostragem de resultados aleatórios | A amostragem estima valores esperados sem listar todos os resultados em cada iteração. |
| Preferências independentes dos jogadores | Vetores de utilidades | Um único escalar não pode representar o interesse de todos os jogadores. |
A poda alfa-beta pode encontrar uma única refutação tática dentro de sua profundidade de busca. A MCTS pode inicialmente preferir uma jogada que vence a maioria das simulações aleatórias, mas perde diante de uma resposta precisa. À medida que sua árvore cresce, ela pode descobrir essa resposta, mas um limite pequeno de simulações pode deixá-la passar. Uma alta taxa de vitórias nas simulações, portanto, não é uma garantia para o pior caso.
Relacione métodos a programas marcantes
Em 1997, o Deep Blue da IBM usou busca alfa-beta, hardware especializado e avaliação de xadrez para derrotar o campeão mundial Garry Kasparov por 3½ a 2½ em seis partidas. Seu sucesso mostrou o quanto uma busca forte e uma avaliação específica do jogo podiam alcançar juntas.
O Go tornou essa combinação mais difícil. Um tabuleiro vazio de 19 por 19 oferece 361 posições para colocar uma pedra, e avaliar uma posição por características simples é difícil. A MCTS se tornou uma abordagem forte porque podia estimar resultados por meio de partidas e expandir uma árvore seletiva sem exigir um avaliador estático escrito à mão.
O AlphaGo combinou MCTS com redes neurais que sugerem jogadas e avaliam posições. Sua descrição na Nature em 2016 precedeu sua vitória por 4 a 1 sobre Lee Sedol em março de 2016. Mais tarde, o AlphaZero usou avaliação por rede neural no lugar de simulações aleatórias e alcançou um nível superior ao humano no xadrez, no shogi e no Go. Esses programas mostram que uma estrutura de busca pode usar diferentes fontes de valores para as posições.
Diferencie jogar bem de resolver um jogo
Um programa pode vencer um campeão sem provar o valor da posição inicial. Em 2007, a equipe de Jonathan Schaeffer usou busca e grandes bases de dados de finais para estabelecer que o jogo de damas é um empate com jogo perfeito. Resolver o jogo estabelece um resultado contra toda estratégia adversária possível, não apenas contra os oponentes testados em confrontos.
Ajuste o método ao modelo
Em um jogo estocástico, amostre resultados aleatórios segundo suas probabilidades reais durante o percurso da árvore e as simulações de partida. Um evento com probabilidade 0,8 deve ocorrer cerca de quatro vezes mais frequentemente que um com probabilidade 0,2 ao longo de muitas amostras. Isso estima o mesmo valor esperado ponderado que a propagação explícita de acaso calcula.
Toda abordagem ainda depende de regras e transições de estado corretas. A poda alfa-beta com profundidade limitada depende de seu avaliador; a MCTS depende de sua política de simulação ou avaliação e de seu limite finito de amostras. Modelar um oponente hostil como aleatório pode custar caro, qualquer que seja o mecanismo de busca usado para calcular a resposta desse modelo.
Principais conclusões
- A poda alfa-beta é forte para táticas dentro de uma profundidade de busca administrável.
- A MCTS é adequada a grandes fatores de ramificação e à elaboração difícil de avaliações.
- Uma média de simulações pode deixar passar uma refutação decisiva rara.
- A amostragem de resultados aleatórios deve seguir as probabilidades dos eventos.
- Jogar em nível de campeão e provar que um jogo está resolvido são realizações diferentes.
- A avaliação aprendida pode ser combinada com qualquer uma das duas estruturas de busca.
Exercícios resolvidos de Busca adversária
1Modele as regras e desenhe partidas possíveis
11 passos
- 1IntroduçãoComece com um jogo que o programa possa examinar
Um programa que joga precisa de regras que possa aplicar a um estado. Ele deve saber de quem é a vez, quais ações são permitidas, o que cada ação altera e quando pontuar um resultado.
Quando esses componentes estão explícitos, uma árvore de jogo pode mostrar as continuações. Alguns ramos pertencem ao programa; outros pertencem ao oponente. Essa diferença muda o que constitui um plano utilizável.
- 2ExemploEspecifique o jogo da velha
Use um tabuleiro de 3 por 3 e o jogador da vez como estado. Comece com um tabuleiro vazio e X na vez.
Uma ação escolhe uma casa vazia. A transição coloca a marca atual nela e muda a vez. Uma linha de três marcas encerra o jogo imediatamente; um tabuleiro cheio sem uma linha completa resulta em empate. Pontue os resultados terminais para X como +1, 0 ou −1. Essas regras fornecem os seis componentes de que um programa de busca precisa.
- 3Ideia-chaveMantenha a aleatoriedade separada do estado oculto
Um tabuleiro visível ainda pode ter eventos aleatórios: o gamão acrescenta lançamentos de dados. Um jogo também pode ocultar parte de seu estado, como o pôquer oculta cartas.
Esses são eixos de classificação separados. O acaso determina como os resultados são gerados; a informação determina o que um jogador pode observar. O número de jogadores e o fato de seus ganhos serem ou não estritamente opostos são escolhas adicionais no modelo.
- 4DesafioClassifique um novo jogo
Um jogo de fichas com dois jogadores tem um estado totalmente visível. Antes de cada turno, uma roleta determina quais jogadas são permitidas. Cada resultado terminal dá 1 a um jogador e 0 ao outro. Como o jogo se classifica quanto ao acaso, à informação e à estrutura de ganhos?
---reveal---
Ele é estocástico, tem informação perfeita e é de soma constante, com interesses estritamente opostos. A roleta acrescenta acaso sem ocultar o estado; o ganho total fixo permite um modelo MAX/MIN.
- 5ExplicaçãoConte as meias-jogadas a partir da raiz
Coloque a posição atual na profundidade zero. Cada aresta acrescenta uma meia-jogada: uma ação de um jogador. Em um jogo alternado, a profundidade 1 vem após a ação de MAX e a profundidade 2, após a resposta de MIN.
Uma jogada completa de xadrez geralmente inclui ambos os turnos. Uma busca que alcança duas jogadas completas de cada jogador tem, portanto, profundidade 4, não profundidade 2. Identificar os turnos evita que a profundidade e as regras de propagação percam a correspondência.
- 6ExemploExpanda uma pequena árvore uniforme
Imagine três ações permitidas em cada nó não terminal. A profundidade 1 tem 3 posições, a profundidade 2 tem 9 e a profundidade 3 tem 27 folhas.
Cada nova meia-jogada multiplica o número de caminhos. O jogo real pode ter términos antecipados e números variáveis de jogadas, mas a estimativa uniforme torna visível o custo da profundidade antes da escolha de um algoritmo.
- 7ConexãoReconheça estados repetidos
X pode jogar em um canto, O no centro e X no canto oposto. Inverter a ordem dos dois cantos de X leva ao mesmo tabuleiro com o mesmo próximo jogador.
A árvore contém dois caminhos para um estado. Isso é uma transposição. Um grafo ou uma memória cache pode compartilhar o resultado desse estado, desde que a chave inclua a vez e todas as outras partes das regras que alteram o jogo futuro.
- 8DesafioEncontre o tamanho e a profundidade da árvore
Um jogo alternado oferece duas ações em cada nó. A busca abrange dois turnos de MAX e dois de MIN. Qual é a profundidade e o número de folhas da árvore uniforme?
---reveal---
Ela tem profundidade de 4 meias-jogadas e folhas. Cada jogador age duas vezes, portanto há quatro ações individuais em cada caminho. Contar profundidade 2 incluiria apenas um turno por jogador.
- 9Ideia-chaveUma estratégia mantém as respostas
Um único caminho descreve uma partida completa, mas um oponente pode escolher outro ramo. Uma estratégia de MAX, portanto, mantém uma ação selecionada em cada nó MAX e toda resposta permitida em cada nó MIN.
A ação posterior de MAX pode depender da resposta que ele de fato observa. A estratégia pode conter muitos caminhos, embora determine o comportamento de MAX em toda situação alcançável.
- 10DesafioCorrija um plano frágil
Um programa armazena uma primeira jogada planejada e uma resposta esperada do oponente, seguidas de uma continuação vencedora. Seu modelo de jogo lista três respostas possíveis do oponente. O que deve mudar no plano para que ele descreva uma estratégia completa?
---reveal---
O programa precisa de uma regra de ação após cada resposta possível e após escolhas posteriores do oponente. Conhecer uma sequência vencedora não basta porque o oponente controla qual desses ramos de resposta ocorre.
- 11RecapitulaçãoDas regras a um espaço de busca utilizável
Um estado completo e um modelo de regras determinam as continuações possíveis. Classifique acaso, visibilidade, jogadores e ganhos antes de atribuir regras aos nós.
Interprete a profundidade em meias-jogadas individuais, estime o crescimento da ramificação e reconheça transposições como estados repetidos. Uma estratégia escolhe as ações do jogador enquanto mantém respostas para toda jogada do oponente; a árvore torna essas responsabilidades visíveis.
2Propague resultados para encontrar uma jogada
13 passos
Salve esta aula para seguir cada Lição Interativa passo a passo.
- 1IntroduçãoRaciocine de trás para frente a partir dos resultados
- 2ExemploComece pelas respostas do oponente
- 3ExemploTome a decisão na raiz
- 4DesafioPropague valores em uma nova árvore
- 5ExplicaçãoAtribua uma tarefa às chamadas recursivas
- 6DicaTrate o término antes da próxima jogada
- 7DesafioConverta um valor retornado pelo negamax
- 8ExplicaçãoRetorne o vetor de utilidades inteiro
- 9ExemploResolva primeiro o jogador mais profundo
- 10DesafioUse a regra de desempate de outro jogador
- 11ConexãoEscolha o modelo correto do oponente
- 12DesafioCombine escolhas de vetores na raiz
- 13RecapitulaçãoUse a preferência de quem age
3Acompanhe a poda e melhore a ordem de busca
12 passos
Salve esta aula para seguir cada Lição Interativa passo a passo.
- 1IntroduçãoProve que um ramo não pode ajudar
- 2ExplicaçãoMantenha os limites vinculados ao caminho
- 3ExemploEstabeleça uma alternativa para MAX
- 4ExemploInterrompa um ramo MIN
- 5DesafioEncontre o corte oposto
- 6Ideia-chaveUm limite basta para a rejeição
- 7ExemploPesquise primeiro o ramo mais forte da raiz
- 8ExplicaçãoObtenha pistas de ordenação com baixo custo
- 9DesafioInterprete um limite armazenado
- 10ConexãoInterprete o custo no melhor caso
- 11DesafioCombine ordenação com uma contagem de cortes
- 12RecapitulaçãoPode com base em evidências e armazene seu significado
4Avalie uma fronteira sem ocultar a próxima resposta
13 passos
Salve esta aula para seguir cada Lição Interativa passo a passo.
- 1IntroduçãoAtribua uma pontuação a posições não terminadas
- 2ExplicaçãoMeça características de um único ponto de vista
- 3ExemploConte o material de xadrez
- 4ExemploAcrescente uma contribuição de mobilidade
- 5DesafioCalcule outra pontuação de características
- 6ExplicaçãoVerifique o término antes do limite de profundidade
- 7ExemploPerceba uma captura enganosa
- 8ExemploConclua a troca
- 9DesafioAvalie uma nova troca
- 10Ideia-chaveDiferencie uma extensão de uma poda insegura
- 11DesafioUse o resultado de uma busca concluída
- 12ConexãoUse conhecimento armazenado do jogo
- 13RecapitulaçãoAplique profundidade onde a pontuação pode variar muito
5Calcule valores esperados e teste o modelo
12 passos
Salve esta aula para seguir cada Lição Interativa passo a passo.
- 1IntroduçãoDeixe cada tipo de nó agir de modo diferente
- 2ExplicaçãoUse uma média ponderada no acaso
- 3ExemploResolva MIN abaixo do lançamento da moeda
- 4ExemploCompare a segunda ação da raiz
- 5DesafioCombine um novo par de tipos de nós
- 6DicaNão suponha que lançamentos distintos sejam igualmente prováveis
- 7ExplicaçãoEscolha como modelar o oponente
- 8ExemploMude a escala sem mudar a ordem
- 9DesafioTeste uma transformação
- 10Ideia-chaveUse limites antes de ignorar resultados de acaso
- 11DesafioEncontre o efeito de um modelo incorreto do oponente
- 12RecapitulaçãoAjuste a média à decisão
6Expanda uma árvore de simulação e escolha onde buscar
16 passos
Salve esta aula para seguir cada Lição Interativa passo a passo.
- 1IntroduçãoReúna evidências enquanto constrói a árvore
- 2ExplicaçãoRegistre visitas e recompensas de quem fez a jogada de entrada
- 3ExplicaçãoAcompanhe quatro fases
- 4ExemploAcompanhe o jogador associado a cada filho
- 5DesafioAtualize um resultado diferente
- 6ExplicaçãoAcrescente um bônus de incerteza
- 7ExemploCalcule a pontuação do primeiro candidato
- 8ExemploCompare os candidatos restantes
- 9DesafioMude o equilíbrio
- 10Ideia-chaveEncerre a busca com base no suporte acumulado
- 11ConexãoFique atento a uma refutação rara
- 12ExemploVeja o que os programas híbridos mudaram
- 13DesafioEscolha para um novo jogo
- 14DicaAmostre o acaso com seus pesos reais
- 15DesafioSepare a prioridade de teste da escolha da jogada
- 16RecapitulaçãoMantenha evidências, exploração e jogo distintos
Questões de Busca adversária
Conjunto 1: Modele jogos e acompanhe decisões básicas10 Questões de Prática
Questão 1 de 10
Mostrar respostaOcultar resposta
Questão 2 de 10
Mostrar respostaOcultar resposta
Questão 3 de 10
Mostrar respostaOcultar resposta
Questão 4 de 10
Mostrar respostaOcultar resposta
Questão 5 de 10
Mostrar respostaOcultar resposta
Questão 6 de 10
Mostrar respostaOcultar resposta
Questão 7 de 10
Mostrar respostaOcultar resposta
Questão 8 de 10
Mostrar respostaOcultar resposta
Questão 9 de 10
Mostrar respostaOcultar resposta
Questão 10 de 10
Mostrar respostaOcultar resposta
Conjunto 2: Aplique a propagação de valores e verifique as hipóteses da busca10 Questões de Prática
Salve esta aula para ver todas as respostas e praticar cada conjunto.
Questão 1 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 2 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 3 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 4 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 5 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 6 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 7 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 8 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 9 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 10 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Conjunto 3: Combine valores de busca com evidências limitadas10 Questões de Prática
Salve esta aula para ver todas as respostas e praticar cada conjunto.
Questão 1 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 2 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 3 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 4 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 5 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 6 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 7 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 8 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 9 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 10 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Conjunto 4: Acompanhe consequências mais profundas e compare modelos10 Questões de Prática
Salve esta aula para ver todas as respostas e praticar cada conjunto.
Questão 1 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 2 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 3 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 4 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 5 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 6 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 7 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 8 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 9 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 10 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Conjunto 5: Diagnostique falhas de busca e aplique os métodos a novas situações10 Questões de Prática
Salve esta aula para ver todas as respostas e praticar cada conjunto.
Questão 1 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 2 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 3 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 4 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 5 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 6 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 7 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 8 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 9 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 10 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Travou em uma questão sua? Ajuda com Tarefas
Termos-Chave
Á
Árvore de busca
Árvore de jogo
A
Alfa
Amostragem de resultados aleatórios
Análise retrógrada
Aprofundamento iterativo
Argumento de máximo
Avaliação por rede neural
B
Base de dados de finais
Beta
Busca de quiescência
Busca em árvore com limites superiores de confiança (UCT)
Busca em árvore de Monte Carlo
Busca em profundidade
C
Característica
Caso base da recursão
Contagem de visitas
D
Decisão minimax
E
Efeito horizonte
Estado de crença
Estado do jogo
Estratégia
Expansão
Expectimax
Expectiminimax
Exploração
Explotação
Extensão singular
F
Fator de ramificação
Função de avaliação
H
Heurística da jogada matadora
Hipótese paranoica
I
Informação imperfeita
Informação perfeita
Interação entre características
J
Jogo de soma geral
Jogo de soma zero
Jogo determinístico
Jogo estocástico
Jogo resolvido
L
Limite obtido por corte
Livro de aberturas
M
Meia-jogada
Minimax
Minimax heurístico
Mobilidade
Modelo de transição
Modelo do oponente
N
Negamax
Nó de acaso
O
Ordenação de jogadas
P
Peso
Poda alfa-beta
Poda antecipada
Política de simulação
R
Refutação tática
Regra de desempate
Retropropagação de resultados
S
Seleção
Simulação de partida
T
Tabela de transposições
Teste de término
Transformação afim com coeficiente angular positivo
Transformação estritamente crescente
Transposição
U
UCB1
Utilidade
Utilidade esperada
V
Valor minimax
Variante principal
Vetor de utilidades
Sobre esta aula
Crie seus próprios Materiais de Estudo
Transforme suas anotações, slides e documentos em Guias de Estudo, Questões de Prática, Flashcards e mais 6 ferramentas.