Theory and practical strategies for e cient alpha-beta-searches in computer chess

The aim of this work is to give an overview of the theory of e cient alpha-beta-searches in computer chess and to explain the practical strategies implemented in the FUSc# chess program ([6]). The main focus is put on two topics: the rst one is e cient move generation with a technique called rotated bitboards ([10]), and the second one is how to carry out e cient alpha-beta-searches by optimizing the move-ordering with static and dynamic heuristics. Practical experiments with FUSc# are used to verify the theoretical results in both questions. In the rst part, a short introduction to the basics of computer chess will help the reader to understand the structure of the FUSc# chess program. This includes a part explaining the rotated bitboards that are used for board-representation in Fusc#, as they are crucial for e cient move generation. In the second part, an overview of the theory of search algorithms used in computer chess is given. Many of the ideas still used in current chess programs date back to the very beginnings of computer science. This is shown by making references to the famous paper Programming a Computer for Playing Chess ([19]) by Claude Shannon, which was written as early as in 1950. However, there were also important improvements of the theoretical foundations of computer chess since then, the alpha-beta-algorithm beeing one of them. Although it has been subject to intensive studies since its discovery in the late 1950s, there has still been some relevant progress in the mid-90s, especially in understanding the relationship of alpha-beta (which is depthrst ) and bestrst -algorithms like SSS* ([16]). An overview of these astonishing results is given, as they proove the traditional views on the subject to be quite wrong: It can be shown that SSS* is actually a special case of alpha-beta! After that follows a section on move ordering. One of the primary aims is to understand the in uence of the move-ordering on the e ciency of alpha-beta searches, and additionally the idea behind some heuristics (static/dynamic) used for achieving a good move-ordering are explained. The third part deals with the concrete implementation of some of the parts of our chessprogram FUSc#. This includes a part on e cient move-generation using bitboards, and one which endables the reader to understand how the di erent heuristics for move-ordering (static/dynamic) are implemented in FUSc# as strategies in order to achieve e cient alphabeta-searches. The forth part covers the practical experiments carried out with FUSc# in order to verify the theoretical results of part 2 and 3. A technique for verifying the correctness of move-generators in chess programm is presented and it is shown that the move-generator of FUSc# (that is based on rotated-bitboards ) works 100% correct. After that, the results of our experiments evaluating the di erent heuristics for achieving a good move-ordering are presented, and it is shown that those heuristics greatly improve the e ciency of the alpha-beta-searches carried out by FUSc#. In an outlook the current state-of-the-art of the FUSc#-chess program is described, and some ideas for further reseach projects are developed.