• Nenhum resultado encontrado

O algoritmo Alfa-Beta otimiza o algoritmo Minimax por eliminar seções da árvore que não podem conter a melhor predição [27], [45]. Por exemplo, na Figura 2, o algoritmo Alfa-Beta, diferentemente do algoritmo Minimax (exempliĄcado na Figura 1) detecta que não há necessidade de avaliar as predições dos nós destacados. Portanto, o melhor movimento (movimento A) é encontrado mais rapidamente.

Este algoritmo recebe tal nome devido a dois valores: alfa e beta. Estes valores delimitam o intervalo que o valor da predição do melhor movimento correspondente à entrada do estado de tabuleiro deve pertencer. Desta forma, para os sucessores de um nó

, as seguintes situações podem ocorrer [10]:

❏ poda Ð: � é minimizador, portanto, a avaliação de seus sucessores pode ser inter- rompida tão logo a predição calculada para um deles (chamada ��������) seja menor que o valor de alfa.

❏ poda Ñ: � é maximizador, portanto, a avaliação de seus sucessores pode ser in- terrompida tão logo a predição calculada para um deles (��������) seja maior que beta.

O algoritmo Alfa-Beta possui uma natureza intrinsecamente serial, uma vez que de- pende do conhecimento prévio para evitar a busca em partes da árvore que não têm inĆuência no resultado Ąnal. Ele conta com duas versões chamadas hard-soft e fail-soft que diferem apenas no valor da predição associada aos nós (ou estados de tabuleiro) dos subproblemas relacionados à raiz da árvore. Neste contexto, o valor correspondente à raíz da árvore (retorno Ąnal do algoritmo) é o mesmo valor minimax para ambas as versões [46], [47]. As subseções a seguir apresentam estas duas variantes do algoritmo Alfa-Beta.

2.3.2.1 Variante hard-soft do algoritmo Alfa-Beta

A variante hard-soft do algoritmo Alfa-Beta atua da seguinte forma, considerando que

�������� representa o melhor valor de predição a ser associado a um nó �:

❏ se � é um nó maximizador, sempre que besteval ⊙ beta, o algoritmo retorna beta como valor mínimo da predição.

❏ se � é um nó minimizador, sempre que besteval ⊘ alfa, a algoritmo retorna alfa como valor máximo da predição.

Figura 2 Ű Árvore de busca expandida pelo algoritmo Alfa-Beta na versão hard-soft

Portanto, o valor retornado representa ou o valor minimax ou o limite imposto pelo intervalo alfa-beta. Por exemplo, na Figura 2, o valor ⊘ 0.4 será retornado para o nó �2

e �3 indicando que com os movimentos B ou D, o valor da predição de ambos os nós irá

ser pelo menos 0.4. De fato, após calcular que os valores dos sucessores mais à esquerda dos nós �2 e �3 tiveram predições 0.3 e 0.2, respectivamente, o algoritmo detecta que

não é necessário explorar os nós destacados na Figura 2 (que causam uma poda). Por esta razão, se eles tiverem uma predição inferior ao de seu irmão mais à esquerda, suas predições seriam candidatas a ŞsubiremŤ para seus pais (que são nós minimizadores). No entanto, de qualquer forma, eles não poderiam ser escolhidos pelo nó maximizador �0 que

já tem disponível o valor 0.4 produzido pelo nó �1. Por outro lado, se eles tiverem uma

predição superior a seu irmão mais a esquerda, eles não podem ser escolhidos por seus pais (nós minimizadores).

A variante hard-soft possui uma limitação quando deseja-se melhorar a performance do Alfa-Beta através da utilização de Tabela de Transposição (TT). Uma TT é um repositório onde são armazenadas predições associadas a nós já avaliados que podem ser utilizados quando um nó aparecer na busca outra vez. Por exemplo, considerando novamente a

2.3. Algoritmos de Busca Seriais 47

Figura 2, se a versão hard-soft fosse utilizada, seria armazenado a predição 0.4 para os nós �2 e �3 na TT. Certamente, este valor 0.4 existente na TT poderia não ser o valor

real da predição destes nós, mas dos limites impostos pelo intervalo alfa-beta. Portanto, se a variante hard-soft for utilizada em conjunto com uma TT para calcular o melhor movimento, e durante este processo, os estados �2 e �3 ocorrerem novamente, as suas

respectivas predições seriam buscadas na TT. Todavia, caso estes estados encontrados na TT pudessem ser utilizados (ao cumprirem um conjunto de restrições detalhadas na seção 5.8.1) poderia ser realizado um movimento diferente do escolhido pelo algoritmo Minimax.

Em algoritmos de busca que pretendem utilizar TTs como meio de aprimoramento é utilizada a variante fail-soft do Alfa-Beta, que será detalhada na seção 2.3.2.2 a seguir.

2.3.2.2 Variante fail-soft do algoritmo Alfa-Beta

A variante fail-soft do algoritmo Alfa-Beta atua da seguinte forma, considerando que

besteval representa o melhor valor de predição a ser associado a um nó �:

❏ se � é um nó maximizador, sempre que besteval ⊙ beta, o algoritmo retorna besteval como valor da predição.

❏ se � é um nó minimizador, sempre que besteval ⊘ alfa, o algoritmo retorna besteval como valor da predição.

Figura 3 Ű Árvore de busca expandida pelo algoritmo Alfa-Beta na versão fail-soft

A versão fail-soft é muito parecida com a versão hard-soft, diferindo apenas no valor das predições associadas aos nós dos subproblemas procedentes da raiz da árvore, fato que permite sua integração com TT. A versão fail-soft retorna o verdadeiro valor minimax

para cada um dos subproblemas existentes na expansão da árvore de busca, ou seja, o valor calculado sempre representa um limite do valor minimax. Por exemplo, na Figura 3, quando o algoritmo observa o movimento C, ele retorna o valor 0.3 (apesar do fato de 0.3 estar fora do intervalo alfa-beta), o que signiĄca que o movimento B possui um valor de predição igual a 0.3 [17]. Portanto, se esta versão do algoritmo Alfa-Beta for utilizada em conjunto com TT, caso um estado �� esteja na tabela e este valor satisfaça

um conjunto de restrições (detalhadas na seção 5.8.1) o valor retornado é correspondente ao valor minimax. Desta forma, o resultado Ąnal do algoritmo não sofre alterações, ou seja, possui o mesmo retorno caso a árvore fosse expandida fazendo uso do algoritmo Minimax.

2.3.2.3 Otimizando o Alfa-Beta a partir da Ordenação da Árvore de Busca

A Ąm de maximizar o número de podas que podem ser efetuadas a partir do algoritmo Alfa-Beta é empregada a ordenação da árvore de jogo. Uma árvore é dita perfeitamente ordenada se os ramos estiverem ordenados da esquerda para a direita. Os nós de uma árvore perfeitamente ordenada podem ser classiĄcados em três tipos [48]:

Nós tipo PV: são também denominados nós do tipo 1. É o ramo mais a esquerda da

árvore de busca e é denominado de variação principal (no inglês Principal Variation (PV)). Todos os nós PV são buscados com a janela de busca (⊗∞, +∞). Uma vez que os limites da janela são inĄnitos, podas nunca ocorrem em nós do tipo PV e todos os seus ramos são explorados. O primeiro sucessor de um nó PV também é do tipo PV, os demais são do tipo CUT.

Nós tipo CUT: também são conhecidos como nós do tipo 2. São sucessores dos nós

do tipo PV (exceto o primeiro) e ALL. Uma vez que um nó do tipo CUT não é o primeiro sucessor de um nó PV, ele irá ter os limites estabelecidos pelo nó do primeiro ramo do tipo PV. Considerando um nó PV em um nível de maximização, o segundo ramo a ser expandido neste nó é um tipo CUT de minimização. A avaliação retornada pelo primeiro nó PV serve como limite inferior para o nó CUT. Neste caso o nó CUT não tem limite superior, uma vez que não houve determinação no nó PV de maximização - um nó PV determina apenas um dos dois limites. Uma vez que a árvore pesquisada é perfeitamente ordenada, a primeira ramiĄcação procurada em um nó CUT conduz imediatamente a uma poda. O primeiro sucessor de um nó CUT é do tipo ALL, os demais são do tipo CUT.

Nós tipo ALL: também denominados como nós do tipo 3. São sucessores de nós CUT.

Como é o primeiro ramo de um nó CUT, ele contém as mesmas informações de janela de seu pai. Considerando um exemplo de um nó CUT minimizador em que existe um limite inferior de janela válido e que o limite superior é inĄnito, o primeiro ramo

2.4. Busca Paralela 49

a ser expandido produz um nó ALL maximizador. Uma vez que o limite superior é inĄnito no nó ALL, nenhuma poda pode ser feita e todos os ramos são pesquisados. Devido a árvore perfeitamente ordenada, as avaliações retornadas por nós sucessores do tipo ALL não são suĄcientes para estreitar o limite inferior da janela de busca - as avaliações retornadas são piores do que as estabelecidas pelos nós PV. De fato, a ordenação em nós do tipo ALL é irrelevante. Os sucessores de um nó ALL são do tipo CUT.

A Figura 4 apresenta um exemplo de uma árvore perfeitamente ordenada destacando o tipo de cada um dos nós.

Figura 4 Ű Tipos de nós em uma árvore de jogo [1].

Uma árvore perfeitamente ordenada cuja a janela de busca inicia em (⊗∞, +∞) é denominada de árvore mínima, uma vez que apenas os nós necessários para completar a busca são explorados [27].

A obtenção de uma árvore perfeitamente ordenada em problemas de jogos é muito difícil, uma vez que a predição de um nó apenas é conhecida quando ele é alcançado. Por esta razão, neste tipo de problema a ordenação é parcial e utiliza alguns mecanismos auxiliares, tais como a utilização da estratégia de busca por ID (seção 2.2.2).

2.4

Busca Paralela

Um algoritmo paralelo pode ser executado por diferentes processadores em um mesmo espaço de tempo, retornando a mesma saída que seria gerada caso tal algoritmo fosse executado sequencialmente. O objetivo desses algoritmos é melhorar o desempenho das

versões sequenciais, visto que, normalmente, são empregados em problemas que exigem alta carga de processamento.

A paralelização de um algoritmo pode ocorrer de acordo com duas abordagens: sín- crona e assíncrona. A primeira estabelece diversos pontos de centralização (sincronização) de dados das tarefas distribuídas (mesmo que não estejam concluídas) cujo propósito é obter informações que podem ser úteis para o andamento global do algoritmo. Por outro lado, nas abordagens assíncronas, as tarefas são processadas autonomamente e, apenas após concluídas existe um retorno com a solução que é enviada para o ponto de origem (de distribuição das tarefas). A deĄnição de qual abordagem utilizar depende intrinsecamente da natureza do problema.

O uso de algoritmos paralelos de tomada de decisão em jogos permite realizar buscas mais profundas, fato que propicia uma melhor visão futura de jogo (look-ahead) ao agente no momento de escolher um movimento. Jogadores com um campo de visão maior têm mais condições de fazer melhores escolhas e, consequentemente, de jogarem em um nível superior a jogadores com um campo de visão do espaço de estados menor.

Como regra, quanto mais profunda for a busca, melhor é a qualidade da jogada, pois o erro introduzido pela função de avaliação é reduzido. Para se obter um nível de profundidade extra no jogo de Damas, por exemplo, geralmente é requerido o aumento da velocidade da busca por um fator de duas vezes (no xadrez este fator varia entre quatro e oito vezes) [48], [49]. Neste contexto, as subseções a seguir são dedicadas a apresentar conceitos referentes à busca paralela em árvores de jogo, que é o foco do presente trabalho. Alguns exemplos deste tipo algoritmos de busca (com enfoque na busca Alfa-Beta paralela) serão apresentados na seção 3.1.