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.