This provides supplementary material to this original publication:
John W. Romein, Henri E. Bal (2003):
"Solving the Game of Awari using Parallel Retrograde Analysis",
IEEE Computer, Vol. 36, No. 10
The paper describes a method to compute the full game state of the African
board game Awari. Awari involves placing 48 seeds in 12 pits, and players
take turns fetching the seeds out of one of their 6 pits, and spreading
("sowing") them counter-clockwise over the other pits.
A player captures stones by sowing the last stone into an opponent’s pit so
that it contains either two or three stones. If the second-to-last pit is
also an opponent’s pit containing two or three stones, the player captures
these stones as well, and so on, moving clockwise until reaching the player’s
own pit or an opponent’s pit with fewer than two or more than three stones.
The paper discusses the challenge to compute the best possible move from
an arbitrary position, of which there are about 889 billion (actually
889,063,398,406 to be precise). The computational effort is significant,
as are the memory and storage requirements, yet with special techniques,
it was possible to tackle this on a cluster of 72 compute nodes over
20 years ago. Nowadays it is possible to compute the same data on a
single compute node, provided it has enough memory (e.g., 1 TB).
This repository contains the full Awari score databases to make them
available for further research, e.g., deep learning approaches to
learn playing the game automatically (though likely not perfectly)
by modern approaches like Alpha Zero.
NOTE: the storage requirements for the full database are significant, in total
taking up over 800 GB. It is possible to download only a subset of the
database for just up to a certain number of seeds. This would still allow
analyzing board positions with up to that number of seeds on the board.
In subdirectory Awari-Python there is sample code to retrieve the score of
an arbitrary position.