Author: Severi Salminen
Date: 09:25:51 12/11/00
Go up one level in this thread
>In the psuedocode below, which is the non-first move part of PVS: > > value = -PrincipalVariation(depth-1, -alpha-1, -alpha); > > if (value > alpha && value < beta) > best = -PrincipalVariation(depth-1, -beta, -value); > >I will get truncated PV's. The way to fix this is to replace the >-value in the last call by -value+1. This is needed because the >first call can get a fail-high, and return an exact value if the >new best move is one unit better than the previous one (I use >fail-hard). The research will then fail low (score is equal to >alpha) and get a truncated PV. That is right. You must use -value+1 _not_ -value - otherwise you would get a fail-high in child node even with the true score. I think it would be wiser to use fail-soft. If I'm right in fail-hard you always return alpha<=score<=beta? So you won't ever return something lower than alpha or greater that beta. This leads to the fact that PVS won't work properly. You would not get a fail high ever (after the first call which is the point of PVS), because maximum number your first call returns is alpha+1 which is most likely lower than beta. Fail-soft returns allways the true lower bound of the score so it can be greater that beta or lower than alpha. This way the second call could benefit from the first call knowing what the true lower bound might be (-value+1). If I missed something, please correct me :) 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.