Computer Chess Club Archives




Subject: Re: What is

Author: Don Dailey

Date: 23:01:49 05/07/98

Go up one level in this thread

On May 08, 1998 at 00:45:59, Howard Exner wrote:

>I've read here and on RGCC that some programs using something called
>pre-processing. Could someone explain what this is?
>What programs use pre-processing?
>What are the basic pros and cons?

Hi Howard,

The term     pre-processing is normally  used  in   the context  of an
evaluation  function.   It's a  process where  you   make most of your
evaluation    decisions  BEFORE  the  search begins.     Typically you
determine where each piece should go and essentially build a 64 square
table for each piece type of each color on the chess board.  You might
decide  that the c file  is open and so you  give rooks a big bonus if
they  can get to  the c file.  Once you  make this decision it doesn't
change  during the search.   So  if the c  file  suddenly gets blocked
during the search,  the rooks won't know this  and still try to get on
the c file.

Preprocessing has many advantages and disadvatages.  Here is a list of

Very fast, evaluation almost free.

Trivial to implement.

Can put huge amounts of knowledge in chess program with essentially no
slowdown.  This is because all the real work is done  in a fraction of
a second before the search begins.

Especially good with pawn patterns. (but not pawn structure)


The  evaluation is  very dependant on   the starting position.  Deeper
searches suffer more than shallow one.  Ironically, you can do deeper
searches if you do lots of pre-processing.

Very  difficult to put  in  dynamic endings where relationships change

Concepts like mobility  are  covered very  inexactly.  Pawn  structure
terms cannot be calculated with any reliability.

Makes   it problematic  whether to  use  hash table  aging because  it
affects  the  hash tables  in strange ways.    The  problem is  that 2
identical  positions can have different scores  if they are decendants
of different starting positions.


There  are probably  other pro's and  con's  I didn't think  of.  Many
really good programs  use this method,   but almost always  there is a
mixture of pre-processing with  more dynamic stuff like pawn structure
which might be hashed, or calculated quickly with incremental updating

There is quite a bit of  diversity and opinion  on this subject.  Some
swear  by it and  others shun it completely.  I  don't use it any more
but my  older programs did.  My feeling  is that  with ever increasing
depth, it becomes more and more troublesome.   Imagine a program doing
60 ply  searches.  The end  nodes of the  tree will not bear very much
resemblence to the initial  position  where the decisions  were  made.
But since we don't usually look 60 ply  deep pre-processing is still a
workable method.

But   I believe you  can  still write very  strong  programs that do a
substantial amount of pre-processing.   Fritz is one  example.  Genius
also does substantial pre-processing.  I  think probably more programs
use this than not.  My old program REXCHESS was almost all pre-process
with a little dynamic pawn structure mixed in!

Pre-processing does not neccessarily have  to be pure piece/sq tables.
You can   make other evaluation  decisions in  advance too and prepare
them for fast execution during the search.

- Don

This page took 0.03 seconds to execute

Last modified: Thu, 07 Jul 11 08:48:38 -0700

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