The Algorithms of the Top Chess Engines

Discussion of chess software programming and technical issues.

Moderator: Ras

benstoker
Posts: 342
Joined: Tue Jan 19, 2010 2:05 am

The Algorithms of the Top Chess Engines

Post by benstoker »

I would like to see a table of the top 5 or 6 chess engines' implementations of the various common algorithms. It would be nice to quickly get an idea how different engines do their thing.

Probably can only be open source progs because algorithms of the closed source engines are not public.

For instance:

I'd like a to see a run-down of whether or not each engine implements eny of the following algorithms:


Piece-Lists
Piece-Sets
Bitboards
8*8 Board
Mailbox
0x88
15*12 Board
16*12 Board
Attack Tables
Incremental Update
On the Fly
Quad-bitboards
Nibble
alpha-beta
Negascout
MTD(f)
PVS
Aspiration
Fail-soft
iterative deepening
Transposition Table

... etc.


Programs:
========
1. Stockfish
2. Toga
3. Crafty
4. Glarung
5. Rybka (to the extne
wgarvin
Posts: 838
Joined: Thu Jul 05, 2007 5:03 pm
Location: British Columbia, Canada

Re: The Algorithms of the Top Chess Engines

Post by wgarvin »

The devil is really in the details, though. I guess the best way to really grok how other engines do things is to read their source.

Making such a table sounds like a bunch of work...
Aaron Becker
Posts: 292
Joined: Tue Jul 07, 2009 4:56 am

Re: The Algorithms of the Top Chess Engines

Post by Aaron Becker »

I don't know the answers to most of these (I'm not totally sure what all of your terms even mean), but I'll add a few that I do know:

Stockfish uses a combined bitboard and mailbox board representation. Fruit (and so I assume also Toga) uses a 16x16 board data structure. Crafty is pure bitboards. They all use iterative deepening and a transposition table. Crafty and Stockfish both use aspiration (but with significantly different implementations); not sure about the others.

I'd be more interested in a comparison of the pruning and depth reduction strategies of the top engines, personally. This is one area where there are big differences between engines and relatively little code is involved.