Chapter 2
Game Tree Searching and pruning:
In this chapter, we concentrate on game tree searching and pruning aspects. Section 2.1 presents
background knowledge on game playing programs: how to build a game tree and how to decide the next move. In
section 2.2, we further introduce the most successful refinement of minimax search—the alpha-beta algorithm.
Section 2.3 is about some of the most important enhancements to alpha-beta algorithm based on following
principles: move ordering, minimal window search, quiescence search and forward pruning. Then we conclude
this chapter in Section 2.4. For more information about game tree searching and pruning, we refer to
[11]
.
2.1 Game trees and Minimax Search
Almost all game playing programs use a game tree to represent positions and moves. Nodes represent
game positions, and the root node corresponds to the current position of the game. The branches of a node
represent the legal moves from the position represented by the node. A node is called a leaf if it doesn’t have a
successor. Using the rules of the game, we can evaluate a leaf as a win, lose, draw, or a specific score.
But unfortunately the whole game tree size is tremendously huge for almost all interesting games. For
example, checkers is
20
10
, and chess is
40
10
. The total number of nodes in game tree is roughly
D
W
, where W
stands for the number of possible moves on average for each node, and D is the typical game length. For Amazons
game, W is about 479 in randomized computer-game playing (Lida, 1999; Lida and Muller 2000) and D is around
80 [thesis S]. Therefore, no any practical algorithm can manage such a full tree due to lack of time.
One solution of such games is to stop generating the tree at a fixed depth, d, and use an evaluation function
to estimate the positions d moves ahead of the root. In this thesis, we will use the term ply, which was first
introduced by Samuel
[5]
, to represent the depth of a game tree. The nodes at the deepest layer will be leaves.
Typically, the value of a leaf, estimated by the evaluation function, is represented the number in proportion to the
chance of winning the game.
Game playing programs depend on game tree search to find the best move for the current position,
assuming the best play of the opponent. In a two-person game, two players choose a legal move alternately, and
both of them intuitively try to maximize their advantage. Because of this reason, finding the best move for a
player must assume the opponent also plays his/her best moves. In other words, if the leaves are evaluated on the
viewpoint of player A, player A will always play moves that maximize the value of the resulting position, while
the opponent B plays moves that minimize the value of the resulting position. This gives us the MiniMax
algorithm.