Aart's Computer Checkers Page
Ongoing thoughts related to checkers programming can be found often at
Aart's blog.
Discussions related to checkers can be found at the
World Draughts Forum.
For more resources and a proof that checkers has been "solved" see the
Chinook project.
Checkers Engine: BikMove
Aart Bik
implemented an 8x8 checkers engine called
BikMove that can be plugged into Martin Fierz' excellent
CheckerBoard
application. To install BikMove v1.1,
download the following package, unzip
it in the checkboard engines directory, and then import
the engine through the Engine=>Select menu.
All C++ source code of BikMove has been written
by Aart (except the endgame databases probing code, which is used
with kind permission of Martin Fierz).
Perft for Checkers
The perft method
originated in the chess programming community as a way to verify the move
generator of an engine. The method traverses the game tree up to various,
increasing depths to count all leaf nodes at each given depth. These results
are compared with pre-computed values to isolate bugs and timings can be
used to analyze the performance of the move generator. The perft
method can be applied to other game engines as well, such as
perft for reversi or, as done on here,
perft for checkers. Below, checkers perft numbers from the start position
are given using the move generator of BikMove on a 2.2 GHz Core 2 Duo
(optimized for speed with "bulk counting").
perft(1) = 7 in 0 ms.
perft(2) = 49 in 0 ms.
perft(3) = 302 in 0 ms.
perft(4) = 1469 in 0 ms.
perft(5) = 7361 in 0 ms.
perft(6) = 36768 in 1 ms. 36,768.0 KN/s
perft(7) = 179740 in 5 ms. 35,948.0 KN/s
perft(8) = 845931 in 23 ms. 36,779.6 KN/s
perft(9) = 3963680 in 86 ms. 46,089.3 KN/s
perft(10) = 18391564 in 398 ms. 46,210.0 KN/s
perft(11) = 85242128 in 1821 ms. 46,810.6 KN/s
perft(12) = 388623673 in 8395 ms. 46,292.3 KN/s
perft(13) = 1766623630 in 37182 ms. 47,512.9 KN/s
perft(14) = 7978439499 in 174947 ms. 45,604.9 KN/s
perft(15) = 36263167175 in 808155 ms. 44,871.5 KN/s
perft(16) = 165629569428 in 3767118 ms. 43,967.2 KN/s
perft(17) = 758818810990 in 17317695 ms. 43,817.5 KN/s
perft(18) = 3493881706141
perft(19) = 16114043592799
perft(20) = 74545030871553
perft(21) = 345100524480819
perft(22) = 1602372721738102
perft(23) = 7437536860666213
Aart implemented a distributed version to compute perft(18) through
perft(23) on a cluster of machines. The perft breakdown per move
for these depths, an important debugging feature often referred
to as "divide", is shown below.
move divide(18) divide(19) divide(20) divide(21) divide(22) divide(23)
-------------------------------------------------------------------------------------------------------
12-16: 550829166472 2517202147314 11531470109861 52945190026737 243598269855110 1123463594881857
11-16: 566149929068 2564849953998 11736729175821 53527954221225 246743868125768 1131373985922218
11-15: 435063007630 2041959240377 9515983205474 44775005468548 209016678583301 984253557821317
10-15: 472279451484 2180656975018 10055597639275 46574865098865 215412869777867 1000606302770349
10-14: 402570639569 1859042884028 8600202424158 39822944739732 184865466345796 856779998157523
9-14: 441590753001 2068865301476 9698986164172 45530585259776 213736468971938 1003310451936358
9-13: 625398758917 2881467090588 13406062152792 61923979665936 288999100078322 1337748969176591
-------------------------------------------------------------------------------------------------------
3493881706141 16114043592799 74545030871553 345100524480819 1602372721738102 7437536860666213
Thanks to Martin Fierz, Ed Gilbert, Rein Halbersma (first to report perft(22)
using a hash table), Jonathan Schaeffer, and Ed Trice for verifying various
perft numbers with their own move generators.
Checkers for Android
Checkers for Android is a simple 8x8 checkers application that is available
for free at the Android Market.
It consists of a checkers engine (a Java version that evolved into the C++
engine BikMove) together with a GUI. More information can be found at
Aart's Android page.
Please note that this page is privately maintained by
Aart Bik.