Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: How do other programs handle check extensions?

Author: KarinsDad

Date: 14:31:21 05/05/99

Go up one level in this thread


On May 05, 1999 at 16:47:52, Peter McKenzie wrote:

>On May 05, 1999 at 11:32:15, KarinsDad wrote:
>
[snip]
>>
>>I am doing the opposite. I extend whenever anything interesting is going on
>>(such as non-quiescence) almost as far as I can go. I then mark the
>>non-quiescent children nodes as being searched so that they do not get
>>re-searched (when I get to the next ply).
>
>I don't understand what you are saying.  Whats this about marking non-quiescent
>children nodes?  Sounds like you might be talking about quiescence search not
>extensions.

Capture extensions and check extensions are effectively quiescence search. I are
going to extend until I am in a quiescent state. However, once I search those
children (and grandchildren, etc.), they are no longer interesting to me.
Although I will temporarily keep them in the hash table (just in case another
search finds the same nodes), they will be the first nodes (the grandchildren+,
not the children) to be removed from my hash table once I run out of room in my
hash table and I decide to clean it up. Hence, the very first set of
non-quiescent child nodes (and not the grandchildren and great grandchildren)
get marked so that a) I do not remove them from the hash tree first and b) so
that if I come across that node when I am searching my next ply down, I know
that I at least did a quiescence search on it. I may decide to search or not
search more on it, based on that fact and it's score. The grandchildren and
great grandchildren get marked as "to be removed" from the hash during a cleanup
since they were used to calculate the quiescent score of the child, but other
than that, they are not that interesting.

So, yes, I was talking about quiescence search. However, I do not consider any
difference between extending (my definition of it which is different than yours)
due to non-quiescence or singular extensions or any other reason to extend
further.

>
>I think we have a communication problem here. The common meaning of the word
>'extend' is that you don't count the current node as increasing depth.  So for
>example, say we are doing a 5 ply search from the start position and we go down
>the following line:
>   1.f4 e6 2.h4 Qxh4+
>So you've gone down 4 ply, and therefore normally you'd have 1ply to go.  But if
>you extend a ply for checking moves you wouldn't count Qxh4+ and therefore would
>have 2 ply still to search.  Thats all there is to extensions, its just playing
>with the depth counter.
>Is that what you mean by extending?
>

No, I do not mean this. I mean that if I am searching at ply 4 and I find an
interesting move (for whatever reason), I will extend the searching below that
node (maybe as deep as ply 14 or more). However, I only extend certain types of
moves. I extend non-quiescent moves such as checks and captures. I also extend
singular response moves. I also extend singular extensions. However, I have
several ideas on other reasons to extend.

I have multiple search engines in my code and only one of them is concerned with
how deep you currently are and how deep you are searching. Since several aspects
of my design are different than more conventional programs, I often use
terminology in regard to my own perspective and not that of other people (so it
is easy for people to misunderstand me). When my partner and I designed our
program, we read some of the literature, but purposely stayed away from anyone's
code or techniques. Rather, we decided to try a lot of our own ideas first
(although of course, some things cannot be avoided).

But, in regard to terminology, I am always willing to rephrase so that we are
all on the same page.

KarinsDad :)



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.