Lines Of Action
Lines Of Action : Stratégie et Optimisation
3. La table d’historique
Cette optimisation est utilisée pour attribuer un poids à un coup. Plus le coup est retenu comme meilleur
coup à une profondeur faible, plus son poids est élevé. Et, plus il est retenu, plus il a d’importance.
Pour que cette optimisation puisse être utilisée, il faut avoir une fonction qui attribue un indice à un coup.
Cet indice doit être unique par coup.
La table d’historique est un tableau d’entier mémorisant la somme des 2p (où p = profondeur maxi –
profondeur courante) quand un coup est retenu comme meilleur coup.
4. La table de transposition
a) Principe
Un arbre de parcours des coups aux échecs peut être vu comme un graphe, où les transpositions peuvent
retenir un cheminement déjà exploré. Une Hash-table de transposition peut être utilisée pour détecter une
situation précise et, ainsi, éviter de développer un arbre déjà parcouru.
Exemple aux échecs :
La situation après 1. e4 d6 2. d4 est la même que la situation après 1. d4 d6 2. e4.
Il s’avère que la combinatoire pour détecter ces situations est extrêment élevée. Il faudrait pour chaque
position parcourue mémoriser le plateau et à chaque nouveau coup, regarder si le nouveau plateau correspond
ou non à une plateau déjà parcouru.
La hash-table de transposition permet de répondre à cette problématique avec un temps optimal en accédant
directement à une situation. Elle est également très souvent utilisée avec l’algorithme AlphaBeta avec
profondeur itérative. Cela permet de réduire de manière très importante le recalcul de certaines situations.
b) La clé de Zobrist
Pour se faire, il faut définir une clé de Zobrist pour chaque pion différent, sur chaque case et pour chaque
joueur.
Exemple aux échecs :
Le damier fait 8x8, il y a 2 joueurs (les noirs et les blancs) et 6 pions par joueur (Tour, Fou, Pion, Roi,
Reine, Cavalier) et un pion neutre (la case vide). Il faut alors définir 8*8+8*8*2*6=832 clés de Zobrist.
Une clé de Zobrist est un nombre aléatoire sur 64 bits (si votre architecture le permet) ou 32 bits.
Une situation correspond alors au XOR de 8*8=64 clés de Zobrist représentant les pions sur le plateau.
c) La hash-table
Une hash-table peut alors mémoriser un grand nombre de situations. Mais, il faut que cette taille soit
suffisamment grande pour être significative.
d) Utilisation de la table de transposition
Un coup joué ou déjoué correspond à une seule opération le XOR de la position initiale et le XOR de la
position finale. L’accès en lecture de la table de transposition est effectué avec la lecture des coups possibles
afin de vérifier si la situation n’a pas déjà été évaluée.
Remarque : Si deux situations ont la même valeur, il est probable que cela puisse être à l’origine d’un
malentendu car, imaginons qu’une des deux situations soit une situation perdante et que l’autre est une situation
gagnante, l’algorithme risque de jouer le coup perdant en croyant qu’il est un coup gagnant.
Dans le cas où le meilleur coup évalué pour une situation n’est pas une situation terminale, le coup évalué
doit être proposé comme un KillerMove. Il est même conseillé de le positionner en tête.
5. Le Null Move
Le null-move consiste à faire comme si l’adverse ne peut pas jouer, pour vérifier si nous sommes proches
d’une situation terminale ou favorable.