Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: PV length question

Author: Severi Salminen

Date: 04:26:50 10/31/02

Go up one level in this thread


>I am afraid its not like that. "pv_length[ply]=ply" clause is there because, if
>the current node contrbutes to the PV length, it will be only of length 'ply',
>this will increase if this node gets a PV from some child node (which is done
>inside UPDATE_PV). So IOW pv_length[ply]=ply has got significance ONLY for leaf
>nodes. For other nodes anyway it gets ovwewritten inside UPDATE_PV as soon as we
>get a child with score>alpha. So if we have a way of knowing that a node is a
>leaf node then we can do "pv_length[ply]=ply"  only for child nodes. For other
>nodes it will be copied from the child having score>alpha.
>So in a depth=4 search (after doing depth=1,2,3 searches) the moment we enter
>the root node (ply==0) we do 'pv_length[ply]=ply' pv_length[0] becomes 0.
>I hope I am clear this time !!

Everything is correct. When you enter root node in depth==4 search, you _must
not_ set pv_length[Ply]=Ply (that is pv_length[0]=0). In root node we _allways_
have a valid PV (expect at the 1st iteration) which we can and must use at the
next iteration. That is the reason for your problem. So add the next if
statement.

if(ply)
  pv_length[ply]=ply;

That prevents pv_length[0] from deleting. Or write a totally separate
roosearch() function. That is the preferred approach.

Severi



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.