THELL - Revised of "The Algorithm of Reversi"
Thell 3.0 design goals
- SIGNIFICANT IMPROVEMENT in search speed, evaluation speed, and the evaluation function
- object-oriented design
- very sophisticated game tree search
- pattern-based statistical evaluation function
- support for BearRev
- normal board representation by 10*10 square 2-dimension array (including sentinels)
- record the changed disc on moving, and restore them when performing undo
- PVS or MTD(f) for seaching game tree
- very sophisticated move ordering
- extremely fast transposition table
The core class of SPOT module is a class named "Board". It represents the board, and provides many useful and fast operations like "move", or "undo". Board class is designed to be size-independent, so we can create both 8*8 board and 10*10 board from the same source code.But unfortunately, current implementation of the evaluation function is not size-independent, because I think that the strategy for evaluation is game-specific.
- approximation of current mobility
- approximation of potential mobility
- approximation of parity
- horizontal 2-4
- vertical 2-4
As you see, SPOT does not consider the pattern "2x5 corner" introduced in LOGISTELLO. This is because I think that corners are classified by "edge+2X", "diag8", and "triangle", so adding "2x5 corner" into the pattern set causes overemphasizing the value of the corner.