Computer Chess Club Archives


Search

Terms

Messages

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

Author: Tord Romstad

Date: 06:42:09 10/01/03

Go up one level in this thread


On October 01, 2003 at 09:08:28, Sergei S. Markoff wrote:

>Hello!
>
>>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.

Hello!

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; }

Tord




This page took 0.17 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.