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.