Explication
L'élagage alpha-bêta accélère la recherche effectuée par un , un programme qui compare les coups et les réponses. La recherche peut être représentée comme un arbre: chaque nœud est une position et chaque branche un coup légal. Sans élagage, le programme examinerait de nombreuses continuations qui finiraient par se révéler inutiles.
La méthode maintient deux bornes pendant la recherche. Alpha est le meilleur résultat qu'un camp peut déjà garantir sur le chemin actuel. Bêta est une limite créée par une autre possibilité déjà offerte à l'adversaire. Dès qu'une continuation est si mauvaise qu'un joueur rationnel ne la choisirait jamais, l'approfondir ne peut plus modifier la décision au nœud supérieur.
La branche est arrêtée grâce à une borne logique dans l'arbre, et non simplement parce qu'un coup paraît peu séduisant. À profondeur égale et avec les mêmes évaluations à la limite de recherche, alpha-bêta renvoie le même choix qu'une recherche complète supposant que les deux camps jouent leurs meilleures réponses.
L'économie dépend fortement de l'ordre des coups. Tester tôt les coups forts établit plus vite des bornes utiles et permet d'arrêter davantage de branches sans les approfondir. Une , qui attribue une estimation numérique à une position, fournit les valeurs aux points où la recherche à profondeur finie s'arrête.
Usage et contexte
Alpha et bêta ne sont pas deux évaluations permanentes de l'échiquier. Ce sont des bornes changeantes maintenues pendant que l'algorithme explore une variante.
Confusions fréquentes
Élagage et rejet arbitraire
Alpha-bêta n'ignore une branche qu'après avoir établi qu'elle ne peut pas modifier le choix sous les bornes actuelles.
Davantage d'élagage signifie automatiquement davantage de force
La force dépend aussi de l'ordre des coups, de la qualité de l'évaluation, de la profondeur de recherche et de nombreuses autres techniques du moteur.
Sources
- 1.An analysis of alpha-beta pruning, Artificial Intelligence / Elsevier
- 2.Alpha-Beta, Chess Programming Wiki
- 3.search.cpp, Stockfish
