ADABA: Uma nova versão distribuída do Alfa-Beta com abordagem
Pseudocódigo 14 Estrutura da chave da TT do ADABA
class Key{
long hashvalue; int checksum; }
O erro tipo 2 ocorre em virtude dos recursos Ąnitos de memória existentes, quando dois estados distintos, apesar de serem mapeados em chaves hash diferentes, são direcionados para o mesmo endereço na TT. Para resolver este problema é utilizado dois esquemas de
5.8. Tabelas de Transposição 123
substituição, denominados Deep e New, propostos por Breuker [73, 74]. Segundo Breuker, se uma TT tiver dois níveis, isto é, capacidade de armazenar informações referentes a dois estados de tabuleiro no mesmo endereço, ela terá melhor performance do que uma outra TT com o dobro de capacidade de armazenamento, mas com apenas um nível de armazenamento.
De acordo com a estratégia de Breuker, na primeira vez que um determinado endereço
���1 é selecionado para armazenar alguma informação de um estado ��, ele será gravado
no primeiro nível Deep. Caso um estado �′
� seja mapeado para o mesmo endereço ���1
na TT, signiĄca que ocorreu um erro do tipo 2. Neste caso, o nível Deep vai armazenar o estado que possuir maior profundidade. O conceito por trás desse comportamento é que uma subárvore mais profunda, normalmente, contém mais nós do que uma mais rasa, e tal fato faz com que o algoritmo de busca economize um tempo ao ser poupado de pesquisar a subárvore mais profunda. O segundo nível New, portanto, vai armazenar o outro estado. Se um endereço da TT armazenar em seus dois níveis informações sobre dois estados distintos do tabuleiro, então signiĄca que o segundo nível foi utilizado para resolver um problema de colisão. Em termos práticos, o primeiro nível armazena dados de maior precisão, enquanto o segundo, age como um ŞcacheŤ temporal. No ADABA, a estrutura do pseudocódigo 13 apresenta duas entradas, entry1 e entry2, representando, respectivamente, os níveis Deep e New.
5.8.1
Utilização dos estados da Tabela de Transposição
Quando um estado �� é apresentado ao ADABA, para cada um dos seus Ąlhos � é
executado o seguinte método:
retrieve(�, �, ����� ���, ��������, ��������); (10) onde � representa o estado que está sendo procurado na TT; d é a profundidade de busca associada a c, nodeType indica se o estado pai de c, isto é, ��, é um nó do tipo minimizador
ou maximizador; besteval e bestmove são parâmetros de saída que indicarão, caso ocorra sucesso no método de recuperação do estado na TT, a predição e a melhor ação associada a c, respectivamente.
Sempre que esse método é executado, veriĄca-se se o estado c existe na TT por meio da correspondência da chave hash. Considerando o caso positivo em que um estado �′
� é
encontrado, os valores relacionados a besteval e a bestmove apenas poderão ser utilizados pela busca se as seguintes restrições forem satisfeitas:
1. depth >= d, depth é a profundidade de busca associada a �′
�. Essa restrição está
vinculada ao fato de que quanto mais profundo os valores em que besteval e bestmove são calculados para um determinado estado, mais preciso tornam-se;
2. O valor de scoreType de �′
� é igual a Exact. Caso contrário, é necessário considerar
que:
❏ se c é do tipo minimizador, é necessário veriĄcar se a predição de ��′ é menor
ou igual ao limite inferior da janela de busca corrente: �′
�.���������� ⊘ Ð;
❏ se c é do tipo maximizador, é necessário veriĄcar se a predição de ��′ é maior
ou igual ao limite superior da janela de busca corrente: �′
�.���������� ⊙ Ñ.
5.9
Aprofundamento Iterativo no ADABA
O ADABA trabalha naturalmente por ID (estratégia de busca apresentada na seção 2.2.2). Quando um conjunto � de tarefas são atribuídas a um escravo ��, ele iniciará a
exploração de � (� ∈ � ) a partir da profundidade deĄnida por:
������ = �����+ �; (11)
Desta forma, a profundidade ������ em que � deverá ser explorada consiste do valor
correspondente ao último nível em que � foi explorada (�����) adicionando o valor de
incremento �. É importante salientar que, caso seja a primeira vez em que � é explorada no processador escravo, o valor de ����� corresponde a �� (a profundidade da borda da
subárvore do mestre). Neste sentido, para aplicar a estratégia de ID foi considerado que a busca deve ser conĄgurada com um valor elevado para o limite de profundidade e com o tempo desejado para a realização da sugestão do movimento. Sendo assim, caso o tempo seja atingido, o ����� irá interromper a busca e o mestre retornará a solução obtida até aquele momento. É importante ressaltar que neste caso pode ocorrer de diferentes nós da fronteira da subárvore do mestre conterem valores de avaliações obtidos em diferentes profundidades da busca. Todavia, isto não é uma limitação, visto que o algoritmo terá explorado o tempo máximo proporcionado de modo a atingir o melhor ���� ⊗ �ℎ��� possível. Caso o valor conĄgurado para a profundidade máxima da busca seja atingido, a busca será Ąnalizada (segundo a estratégia de profundidade limitada).
Ressalta-se que na técnica ID convencional - apresentada na seção 2.2.2 -, são reali- zadas uma série de buscas partindo da raiz da árvore e expandindo até um determinado nível. A cada iteração haverá um incremento neste nível até que o limite de tempo seja atingido. Esta abordagem não é interessante para o ADABA, pois como a busca é reini- ciada, existirá novos envios das mesmas tarefas aos escravos, o que acarretará em maior sobrecarga de comunicação.
5.10. Considerações Finais 125
5.10
Considerações Finais
Este Capítulo apresentou a proposta do ADABA, uma nova versão distribuída do Alfa-Beta que segue a abordagem assíncrona de paralelismo. Tal versão foi inspirada no modelo mestre-escravo do APHID. Neste contexto, o ADABA visou atacar algumas fragilidades identiĄcadas no APHID por meio das seguintes propostas: inclusão de uma política automatizada para formar e atualizar a janela de busca nos processadores escravos inspirada nas ideias do algoritmo síncrono YBWC; tratamento das soluções enviadas pelos escravos por meio de um grupo de threads inerentes ao processo mestre; e implementação de uma nova política de prioridade de seleção das tarefas que os escravos devem explorar. O ADABA será a base do mecanismo de tomada de decisão dos agentes jogadores de Damas construídos no âmbito deste trabalho, a saber: o monoagente ADABA-Draughts (Capítulo 6) e o multiagente D-MA-Draughts (Capítulo 7). Além disso, o desempenho do algoritmo será avaliado em experimentos apresentados no Capítulo 8.
127