Computer Chess Club Archives




Subject: Re: The "same threat extension" as effective way to resolve horizon prob

Author: Uri Blass

Date: 06:53:36 10/01/03

Go up one level in this thread

On October 01, 2003 at 09:42:09, Tord Romstad wrote:

>On October 01, 2003 at 09:08:28, Sergei S. Markoff wrote:
>>>What is the new quasy-Botvinnik extension if
>>Well. I can inform chess community about one of my quasy-Botvinnik methods.
>>I will be glad to receive your own experiment results and/or other
>>considerations about this method.
>>One of Botvinnik ideas is to determine attack/defence targets for further
>>analysis of attack/defend trajectories. One of the way to find this target is
>>null-move search. If the result of null-move search < beta we can see the move
>>which fail low search bound. This move is a current threat. For example it's a
>>threat of losing some piece.
>>During the further search in this node we can found the defending move. The main
>>idea is to extend the search if the threat moves on ply and ply+2 has the same
>>target (capturing the same piece, promotes the same pawn). I can give you
>>example if you want.
>>It's one of simpliest way to use target info. But I think we can receive more
>>improvement exploiting this idea.
>I just posted a message almost identical to my current one on the Winboard
>forum, but I guess CCC is a better place to discuss this.  Is the pseudo-code
>below a correct implementation of your idea?
>int search(int alpha, int beta, int depth) {
>  int value, null_value;
>  move_t *move;
>  if(depth <= 0) return qsearch(alpha, beta, depth);
>  make_null_move();
>  null_value = -search(-beta, -alpha, depth-R-1);
>  unmake_null_move();
>  if(null_value >= beta) return null_value;
>  else ThreatMove[Ply] = CurrentMove[Ply+1];
>  generate_moves();
>  while(move = pick_move(); move != NULL; move = pick_move()) {
>    make_move(move);
>    value = -search(-beta, -alpha, depth-1);
>    unmake_move(move);
>    if(value >= beta) {
>      if(target_square(ThreatMove[Ply]) == target_square(ThreatMove[Ply+2]))
>	/* Extend and re-search */
>	value = -search(-beta, -alpha, depth);
>      if(value >= beta) return beta; }}
>  return alpha; }

I think that it is not correct implementation.
capturing the same piece does not mean capturing the same square.


This page took 0.18 seconds to execute

Last modified: Thu, 07 Jul 11 08:48:38 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.