Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Bitboard representation

Author: Russell Reagan

Date: 15:22:04 09/29/02

Go up one level in this thread


On September 29, 2002 at 18:09:02, Arshad Syed wrote:

>Would bitboards be the best way in which to represent piece positions or would
>this be inefficient since the current Pentiums use 32 bit architecture. Also,
>which would be the best alternate way, if not bitboard currently?
>
>
>Thanks in advance,
>Arshad

This is a question that is too complex to answer 100% correctly. There are so
many ways you can represent a game of chess on a computer, and almost all of
them have their strong points and their weak points. The goal should be to take
advantage of whatever data structure you pick. I have a lot of ideas I want to
try out in the evaluation function, so I chose bitboards because I think they
allow a little more in terms of what I want to try.

Aside from bitboards, the other popular method is 0x88, which you can read about
at Bruce Moreland's webpage at http://www.seanet.com/~brucemo (I think that's
right). It also has some nice tricks you can take advantage of.

I've also heard that there are some similar tricks you can do with a 16x16
board, but I don't know what they are off hand.

Basically, there are a lot of different ways you can go about it, and they all
have their good points and their bad points. I personally like bitboards, not
because I think they are faster but because I think they will allow me to do
some extra things (or try them at least) in static evaluation. On a 32-bit
machine you suffer a little bit of a penalty for using bitboards though, and Bob
Hyatt says that bitboards break even with other methods of a 32-bit machine.

I have learned (the hard way) that it's not really as important as people make
it out to be which data structure you decide upon. Move generation and
make/unmake will not be the most significant part of your program. Things like
forward pruning and the efficiency of how you evaluate your positions will be
much more important. I would suggest whatever data representation that allows
you to do those things most efficiently.

So my advice is to just pick whichever you understand the best, or whichever you
think is the most straightforward, or if you have some special ideas about new
forward pruning or evaluation techniques, choose a data structure that makes
testing those out easy. Another thing I like about bitboards is that eventually
64-bit machines will be reasonably priced, and bitboard engines will get a free
bonus for no extra work on the part of the programmer. Engines that use other
methods will not. If I was starting from scratch I would go with bitboards for
sure, because eventually it's going to pay some nice dividends.

Russell



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.