Computer Chess Club Archives


Search

Terms

Messages

Subject: How to remember the principle variation in my program

Author: Hans Bogaards

Date: 03:00:51 08/26/03


Hello Everybody,

I'll introduce myself briefly: I am Hans Bogaards from the Netherlands. A couple
of years ago I wrote a chess playing program called Joshua. It never reached
such a state that I played tournaments with it or released it to the public. The
project ground to a hold mostly due to the demands of graduating.

Lately I've become interested again in Chess and Computer Chess, so I've started
with a rewrite of my program. But I can't seem to find The solution to one
(simple) problem: How do I remember the PV during the search.

In my old program I first used a 2 dimensional array PV[MAXDEPTH][MAXDEPTH] and
stored the best move in PV[Depth][Depth] and copied the rest of the PV from
PV[Depth + ][Depth + X] to PV[Depth][Depth + 1]. This worked but was very slow.

Later I used a linked list with as extra parameter a pointer to the end of the
variation. This was still a bit slow, but esp. very cumbersome to keep all the
administration in the right order. It also made my code hard to read.

I have the feeling that there must be some very simple way to preserve the PV,
but I've looked at the source-code of GNU Chess 4.0 and of Crafty, but I dont
understand how the PV structure/code work in both these programs...

One solution I know is to only use the transposition table for the best move,
but when I tried that in my old program it made the search tree quite a bit
larger...

What kind of structure do you use in your programs? (if you are willing to
share...)
Am I missing sometimes simple here?

Hope you can help me...
--
Greetings
Hans



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.