Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: PV array

Author: Richard Pijl

Date: 05:25:35 10/10/02

Go up one level in this thread


On October 10, 2002 at 07:16:27, Nagendra Singh Tomar wrote:

>In ur example; you should note that when we are searching for the opponent's
>best reply for d4 we always have alpha and beta (calculated till the first
>subtree e5 is fully evaluated)in hand. If we find any of the opponent's reply to
>be better than e5 (and asusming that e4 was THE best move), the score of the
>reply WILL be more than the beta set by e4 hence it will fail-high and we will
>not update PV. IF at any point in time we get a move that lies between alpha and
>beta we know that the move lies on the PV based on the tree calculation till
>that time.

This is true for the root node. No problems her

>IOW if at any point in ply 'x+1' we update the PV, this updation WILL percolate
>all the way upto the top, updating the PV moves of all the plies <= x.

This is simply not true.

On ply x (black to move) there is a choice of many moves going to ply x+1 (white
to move).

Assume one of the ply x+1 searches improves alpha, thus overwriting the PV.
This means that black played a move that enabled white to improve alpha.
If all other x+1 searches do not improve alpha, the search that did improve
alpha on ply x+1 yields the lowest score on ply x. In fact, the move that lead
to the improved alpha is a blunder for black so black will select another move.
Richard.

>
>beta is there to say that the opponent has got means to stop u from playing a
>move, so score>beta cannot lie on PV. For a move for which alpha < score < beta,
>the opponent has got no means to stop us from playing this move.
>
>regds
>tomar
>
>On October 10, 2002 at 06:40:50, Dieter Buerssner wrote:
>
>>On October 10, 2002 at 06:20:31, Nagendra Singh Tomar wrote:
>>
>>>No, not really.
>>>I have got a single one-dim array that is part of the singleton ChessBoard
>>>structure.
>>>If a move at ply 'x' is found to be lying on the PV (score > alpha) then I
>>>simply do "PV[x] = this_move" without caring to copy the remaining PV from the
>>>deeper plies, because they would have already added it to the PV array at
>>>appropriate place in the PV array. So by the time I reach ply 'x' after
>>>returning from ply 'x+1' I am sure that the part of the PV starting from 'x+1'
>>>is already in place. I just add this ply's contribution to the PV.
>>>Doing this when i reach the root, all the moves in the PV will be stored in the
>>>one dimensional PV array.
>>>
>>>What do u say ?
>>
>>If I understand you correctly, this should give wrong PVs, which may even
>>include illegal moves.
>>
>>Assume a 2 ply search from the start position. You start with e4 (which shall
>>"win" here). The PV shall be e4 e5. As the second move you try d4, which will
>>not give a better score. But after d4 you search for a best move for the
>>opponent. Now this best move will overwrite the e5 in the above PV. That you
>>don't update the first ply in the PV does not matter - the tail will be
>>destroyed. Having a local copy in the search, or a two dimensional array will
>>get rid of this problem.
>>
>>Regards,
>>Dieter



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.