Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Node counting confusion.

Author: Bruce Moreland

Date: 14:23:29 01/17/98

Go up one level in this thread



On January 17, 1998 at 16:43:39, Don Dailey wrote:

>I have long suspected the  lack of a "standard" way  of doing this.  I
>think most of us  use a similar method but  it's not so clear.  I have
>always used the method of  counting strictly legal moves and requiring
>that they be  fully executed by the program  but  I can think  of good
>arguments for counting in other ways.

If you have "Advances in Computer Chess 3", look on page 52, at the
pseudo-code for Belle's search, which is the single most useful piece of
computer chess pseudo-code that anyone has ever written

A node is a call to "search" or "quies", the way Thompson has it laid
out.  This is the way I count it.

I think it is best to try to count approximately like this, but if your
search is organized differently, you might have to fudge a little bit.
For instance, if you hash only the root of a quiescent search, you might
do the hash table lookup before calling "quies" from "search", and
perhaps you will avoid calling "quies" based upon this lookup.  I think
this should count as a node, since you could just as easily write this
by adding a parameter to "quies" that determines whether this function
does a hash table probe, and call this function with "true" from
"search" and "false" from "quies".  See what I mean?

I don't think a node needs to be legal in order to be counted, I think
it is fine to let your move generator capture illegal positions after
the node is counted.  An illegal position can be thought of as a
position which hangs a king.  It's OK to count positions that hang a
queen, so it's not too much worse to count positions that hang a king.

>For example, most good programs  will evaluate a position that  hasn't
>occured yet to save a significant amount of  time.  An example of this
>is in quies where you know in advance a  capture move will be punished
>brutally.   I do  not   count count these  as  nodes  but it  could be
>strongly argued that I should.

I don't think you should count a node that is discarded by the static
exchange evaluator, if this is what you mean.

>I believe some programs count "moves generated."  This is not an issue
>if  you   are using a   purely incremental  move generation  but would
>inflate (or deflate  depending on your point  of view) the node counts
>since most of these moves get cut off before they are even considered.

If anyone does this, they will return absolutely enormous numbers, my
guess is way over a million NPS on normal hardware.  I don't think
anyone is doing this.

>Another method  is to count end  nodes  only, which will  deflate your
>node counts    over  my method  but   probably  not  by large  amounts
>(depending on a lot of factors like the shape of the tree.)

Internal nodes are fine to count, I think.  We are counting nodes per
second, and an internal node is a node, right?

>Some programs generate and "make" illegal moves as part of the testing
>for legality.  I view this as inefficient but leads to the question of
>whether these should be counted as nodes.   When I do check testing to
>determine if  a move is  legal should I count this  as a node since in
>some sense I'm definitely evaluating it?  I don't, but maybe I should?
>This adds a significant number of nodes to the nodes/second count.

No.  You are also "evaluating" every move you generate -- you order
these moves based upon a rough evaluation -- but I don't think you
should count these moves either.

>I am always  reluctant to attach  any significance  to big  (or small)
>node count claims.  Until you can actually compare apples to apples it
>can be quite misleading.  Also this is  certainly not the true measure
>of  a   chess program but   nevertheless  it's  an  interesting topic.
>Certain programs claim such high node counts that it's  hard for me to
>believe they are counting  nodes the same way  that some others  might
>be.

Nodes per second is just a number generated as a by-product of search.
This number can be larger or smaller depending upon how efficient your
search is, and how much knowledge you try to generate with search as
opposed to the eval function.

Anyone who tries to inflate their node count by creative accounting
should take a moment to realize that reporting a larger NPS does not
actually make you stronger.  Likewise, when comparing programs, users
shouldn't assume that one with a higher (or lower) node count is better.

bruce



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.