• Nenhum resultado encontrado

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

Capítulo

6

ADABA-Draughts