Implementation of a Distributed Chess Playing Software System Using Principal Variation Splitting Khondker Shajadul Hasan 1 , Alok Chowdhury 2 , Asif Mahbub 2 , Ahammed Hossain 2 and Abul L. Haque 2 1 Computer Science Department, University of Oklahoma, Norman, Oklahoma, USA 2 Department of Electrical Engineering & Computer Science, North South University, Dhaka, Bangladesh Abstract - Many chess playing artificial intelligence software take considerable time in calculating the optimal move that can be made by a computer system. Most computer systems that make such calculations use some version of the minimax search with alpha beta pruning. Minimax with alpha beta pruning can be made distributed with principal variation splitting. The system can thus be used to reduce the time necessary to calculate the optimal move. Keywords - Adversarial Search, Artificial Intelligence, Minimax Algorithm, Alpha Beta Pruning, Distributed Systems, Principal Variation Splitting. 1 Introduction The game of chess has been in existence for a very long time. During much of that time it has been played between human players. Only in recent times (relative to the time chess has been player) have computers started to play chess. The idea of a non human playing chess came to realization with the advent of digital computers. Even with the advent of digital computers, the computer could not play chess well. This was mainly due older computers not having the necessary computational power to play chess. With the improvement in computational power, along with improving algorithms, came better chess playing from computers. However, this alone was not enough to challenge the best human players. So, computer scientists turned to parallel processing to change this. Parallel processing allowed a massive increase in computational power needed to challenge top human players. In 1997, IBM’s Deep Blue supercomputer created a sensation by defeating then world champion Gary Kasparov. This caused the world to take computer chess seriously. Nowadays, computer chess has become very common. Chess software is available on nearly any kind of computer. However, when playing chess on personal computers, except in easy mode, it takes a lot of time for the computer to calculate its move. If the time needed for the computer to move could be cut, then the game against a computer could be more enjoyable. This is our objective in this project. To reduce the time need by a computer to move. To do this, distributed computing was used. The processing power of two or more computers connected over a LAN was used to reduce time needed to calculate a move. The part of the program that performs the actual computations will run in the background of the various computers being used. This will allow the computers to be used for other, non cpu intensive purposes, while the computation is being done in the background. To make chess distributed, it was necessary to divide the task of finding an optimal move for the computer. To do this, Principal Variation Splitting, or PV-Splitting was used. PV-Splitting is an algorithm that was originally designed for shared memory multiprocessor systems. PV-Splitting had to be changed slightly to make it run in a distributed system. 2 Model The model of the distributed system consists of two types of nodes: a single main node and two or more worker node. The main node divides the job of calculating the optimal move for the computer to make into smaller jobs. These jobs are then assigned to the worker nodes to compute. These jobs are assigned using messages passed from the main node to the worker nodes using a local area network. The worker nodes are implemented as a Microsoft