Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Practical Alpha-Beta-Conspiracy search

Author: Gian-Carlo Pascutto

Date: 10:40:07 02/20/00

Go up one level in this thread


On February 20, 2000 at 08:41:12, Alessandro Damiani wrote:

>>
>>I did find a flaw in my implementation of the algorithm though. When counting
>>the conspiracy depth, the actual node does should not count as an alternative.
>>In my implementation it does. Am I correct to assume the effect of this is
>>minimal as it's just that one move that is counted too much ? Having it this
>>way allows for a lot cleaner coding...
>>
>
>Let's look at an example. We use the same nodes I used before: node A is at ply
>3, and node X is at ply 8. The line from the root to X is (m(i), 1<=i<9).
>
>At node A m(3) is the move being searched. Therefore at node X you have to
>calculate the conspiracy depth of A by looking at the (quiescence) scores of >all siblings of m(3). The score of m(3) does not take part in the calculation!
>
>We have to implement ABC correctly, before we are able to improve it. >Everything else doesn't make sense.

Hmm yes, but if you count the moves from the variation itself it's easy
to correct for this in the S function, because you know you have always
counted one move too many.

>I think your "max-options" and the ABC-parameter "maxoptions" are the same.

Indeed. Little typo when transcribing the code.

>You forgot the sign:
>
>    v = max(v, -ABC(...))
>
>But I think the error was only in this post and not in your code. Right?
>
>You forgot to increase alpha:
>
>    alpha = max (alpha, v)

Both errors are not in the actual code.

[snip]
>>I hope someone can make sense of this. I'm especially uncertain if the >>MaxDepth and MinDepth procedures are correct. Is it right that they are >>identical to the minimax versions ?
>
>In the negamax notation there is no distinction between min- and max-player.
>Therefore MinDepth() is no more used, and the scores are from the max-player's
>point of view:
>
>proc terminate (node, alpha, beta, dmax, dmin, maxOptions, minOptions) : bool;
>begin
>  v:= eval();
>  if v>=beta and MaxDepth(beta, maxOptions)>=dmax then
>    return true
>  end;
>  if v<=alpha and MaxDepth(-alpha, minOptions)>=dmin then
>    return true
>  end;
>  if v>alpha and v<beta and MaxDepth(v, maxOptions)>=dmax and MaxDepth(-v,
>minOptions)>=dmin then
>    return true
>  end;
>  return false
>end

Thanks a lot for your feedback. ABC still isn't working as it should be
for me, but I don't know whether that's the fault of the algorithm,
my implementation of it or just plain bugs in my chessprogram's code
that surface because of the different search.

Anway, I guess it's no for ABC for now, but maybe I'll try it again
later on. Too bad it's so hard to get feedback about, because I
really think it is a very powerful algorithm.

--
GCP



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.