Without the null move observation

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

User avatar
Don
Posts: 5106
Joined: Tue Apr 29, 2008 4:27 pm

Re: Without the null move observation

Post by Don »

Barardo wrote:Hi everyone.
I have a question: is it possible to create a 2800 elo (theoretical) chess engine without using the null move observation?
If so what would be the algorithms that it would use?
The null move observation is also used in quies search, not just null move pruning. If you are asking about null move pruning only, then multi-cut is almost as good as null move pruning. A version of multi-cut used in Komodo instead of null pruning was only a few ELO weaker, I think it was around 5 or 10 ELO. So that would clearly make a 2800 ELO engine.

The null move observation is everywhere however. It's almost the same thing is saying that the static evaluation score can be viewed as a lower bound on the true score (with considerable uncertainty of course) and it's used heavily (often with margins or other reasoning's) in chess programs.

I have yet to find anything better for quies search than the industry standard "stand pat" search.
User avatar
Don
Posts: 5106
Joined: Tue Apr 29, 2008 4:27 pm

Re: Without the null move observation

Post by Don »

Uri Blass wrote:
Desperado wrote:Well, if you really talk of the "null-move-observation", there is
a clear NO. The null-move-observation is the fundamental
base of every quiescence search in todays standard search techniques.

In context to pruning and reduction techniques it may be possible to
reallocate the gain to other known algorithms like mentioned by Matthew
or like Bob said, an improved LM-technique may do the job.

Michael
I disagree.
The qsearch is not based on the observation that you usually have something better than null move but on the observation that non captures usually do not have a significant effect on the evaluation.
I take the more general point of view. This is sort of a discussion based on semantics, and I see 2 different definitions at least already put forth here.

But the underlying concept is the same. Basically if you use the chessprogramming wiki definition, "the observation that for the side to move there is almost always a better alternative (move) than doing nothing" then it's semantically the same as saying that you are probably not in trouble.

Obviously, if there is probably a move that helps, then the current score can be viewed as a lower bound, the exact stand pat rule used in every chess program.

According to Bob the null move observation is about null move pruning and I agree, and it works with either definition. If you use the wiki definition, first of all many programs do not even do null move pruning unless the score is already above beta because it's already a likely cutoff. The stand pat rule in quies is the SAME rule except that no verification search is tried. Stand pat and null move pruning are close brothers.

The fact that captures are tried in the ques search falls out naturally and recursively from the null move observation using the wiki definition. There is almost always a better alternative, but if it's not a capture then the opponent can apply the same rule without much error, so we might as well only try captures (and of course checks.)









I expect similiar qsearch to work also in games when there is often nothing better than null move but you have a set of moves that gives a big change in the evaluation that you try them in the qsearch.

I also do not believe that you need normal qsearch for 2800 engines and using some good static exchange evaluator instead of the qsearch may be enough to get a 2800 engine that is clearly weaker than the engines of today.

Uri
Sven
Posts: 4052
Joined: Thu May 15, 2008 9:57 pm
Location: Berlin, Germany
Full name: Sven Schüle

Re: Without the null move observation

Post by Sven »

Don wrote:
Barardo wrote:Hi everyone.
I have a question: is it possible to create a 2800 elo (theoretical) chess engine without using the null move observation?
If so what would be the algorithms that it would use?
The null move observation is also used in quies search, not just null move pruning. If you are asking about null move pruning only, then multi-cut is almost as good as null move pruning. A version of multi-cut used in Komodo instead of null pruning was only a few ELO weaker, I think it was around 5 or 10 ELO. So that would clearly make a 2800 ELO engine.

The null move observation is everywhere however. It's almost the same thing is saying that the static evaluation score can be viewed as a lower bound on the true score (with considerable uncertainty of course) and it's used heavily (often with margins or other reasoning's) in chess programs.

I have yet to find anything better for quies search than the industry standard "stand pat" search.
Hi Don,

thanks for your support, so I am not fully alone with my view.

Sven
User avatar
Desperado
Posts: 879
Joined: Mon Dec 15, 2008 11:45 am

Re: Without the null move observation

Post by Desperado »

Sven Schüle wrote:
Don wrote:
Barardo wrote:Hi everyone.
I have a question: is it possible to create a 2800 elo (theoretical) chess engine without using the null move observation?
If so what would be the algorithms that it would use?
The null move observation is also used in quies search, not just null move pruning. If you are asking about null move pruning only, then multi-cut is almost as good as null move pruning. A version of multi-cut used in Komodo instead of null pruning was only a few ELO weaker, I think it was around 5 or 10 ELO. So that would clearly make a 2800 ELO engine.

The null move observation is everywhere however. It's almost the same thing is saying that the static evaluation score can be viewed as a lower bound on the true score (with considerable uncertainty of course) and it's used heavily (often with margins or other reasoning's) in chess programs.

I have yet to find anything better for quies search than the industry standard "stand pat" search.
Hi Don,

thanks for your support, so I am not fully alone with my view.

Sven
By the way, my viewpoint keeps standing, based on my definitions,
the NMO is key for the most BTS.
But i also have to accept that the "standpat" handling by itself, is not
bonded to any assumtion, even not to the NMO. Again...

standpat = decide to play the position as it is

return(standpat)

If we modify this expression, this is by definition not longer standpat!
And this is definitelly not used in chess-engines over the last decades.

But what is used is

estimatedLowBoundValue = blackBoxValue()

which can be formed to

doNull()
estimatedLowBoundValue = -blackBoxValue()
undoNull()
if(estimatedLowBoundValue>=beta) return(estimatedLowBoundValue)

For my personal summary:

1. HGM is right that the term "standpat" has nothing to do with NMO
2. Here i am assisting you Sven, we dont use "standpat", but NMO
3. Bob mentioned the term "NMO" is already defined in another way.
But certainly not in the most general way. A more general way is:

NMO = assumption: a real move is doing better than the nullmove.

The assumption cannot be hurt or influenced by the way we determine
the estimatedLowerBound, therefore blackBox() (search(),evaluation()..)

imho, Michael
User avatar
Don
Posts: 5106
Joined: Tue Apr 29, 2008 4:27 pm

Re: Without the null move observation

Post by Don »

Desperado wrote:
Sven Schüle wrote:
Don wrote:
Barardo wrote:Hi everyone.
I have a question: is it possible to create a 2800 elo (theoretical) chess engine without using the null move observation?
If so what would be the algorithms that it would use?
The null move observation is also used in quies search, not just null move pruning. If you are asking about null move pruning only, then multi-cut is almost as good as null move pruning. A version of multi-cut used in Komodo instead of null pruning was only a few ELO weaker, I think it was around 5 or 10 ELO. So that would clearly make a 2800 ELO engine.

The null move observation is everywhere however. It's almost the same thing is saying that the static evaluation score can be viewed as a lower bound on the true score (with considerable uncertainty of course) and it's used heavily (often with margins or other reasoning's) in chess programs.

I have yet to find anything better for quies search than the industry standard "stand pat" search.
Hi Don,

thanks for your support, so I am not fully alone with my view.

Sven
By the way, my viewpoint keeps standing, based on my definitions,
the NMO is key for the most BTS.
But i also have to accept that the "standpat" handling by itself, is not
bonded to any assumtion, even not to the NMO. Again...

standpat = decide to play the position as it is

return(standpat)

If we modify this expression, this is by definition not longer standpat!
And this is definitelly not used in chess-engines over the last decades.
The null move observation is an observation, not an implementation. We reason on it and use it for many things.

This is one of those stupid conversations where people get hung up on semantics and definitions. We all agree on what we are talking about we just don't agree on what it should be called so no more posts on this subject for me.

But what is used is

estimatedLowBoundValue = blackBoxValue()

which can be formed to

doNull()
estimatedLowBoundValue = -blackBoxValue()
undoNull()
if(estimatedLowBoundValue>=beta) return(estimatedLowBoundValue)

For my personal summary:

1. HGM is right that the term "standpat" has nothing to do with NMO
2. Here i am assisting you Sven, we dont use "standpat", but NMO
3. Bob mentioned the term "NMO" is already defined in another way.
But certainly not in the most general way. A more general way is:

NMO = assumption: a real move is doing better than the nullmove.

The assumption cannot be hurt or influenced by the way we determine
the estimatedLowerBound, therefore blackBox() (search(),evaluation()..)

imho, Michael
User avatar
Desperado
Posts: 879
Joined: Mon Dec 15, 2008 11:45 am

Re: Without the null move observation

Post by Desperado »

Don wrote:
Desperado wrote:
Sven Schüle wrote:
Don wrote:
Barardo wrote:Hi everyone.
I have a question: is it possible to create a 2800 elo (theoretical) chess engine without using the null move observation?
If so what would be the algorithms that it would use?
The null move observation is also used in quies search, not just null move pruning. If you are asking about null move pruning only, then multi-cut is almost as good as null move pruning. A version of multi-cut used in Komodo instead of null pruning was only a few ELO weaker, I think it was around 5 or 10 ELO. So that would clearly make a 2800 ELO engine.

The null move observation is everywhere however. It's almost the same thing is saying that the static evaluation score can be viewed as a lower bound on the true score (with considerable uncertainty of course) and it's used heavily (often with margins or other reasoning's) in chess programs.

I have yet to find anything better for quies search than the industry standard "stand pat" search.
Hi Don,

thanks for your support, so I am not fully alone with my view.

Sven
By the way, my viewpoint keeps standing, based on my definitions,
the NMO is key for the most BTS.
But i also have to accept that the "standpat" handling by itself, is not
bonded to any assumtion, even not to the NMO. Again...

standpat = decide to play the position as it is

return(standpat)

If we modify this expression, this is by definition not longer standpat!
And this is definitelly not used in chess-engines over the last decades.
The null move observation is an observation, not an implementation. We reason on it and use it for many things.

This is one of those stupid conversations where people get hung up on semantics and definitions. We all agree on what we are talking about we just don't agree on what it should be called so no more posts on this subject for me.

But what is used is

estimatedLowBoundValue = blackBoxValue()

which can be formed to

doNull()
estimatedLowBoundValue = -blackBoxValue()
undoNull()
if(estimatedLowBoundValue>=beta) return(estimatedLowBoundValue)

For my personal summary:

1. HGM is right that the term "standpat" has nothing to do with NMO
2. Here i am assisting you Sven, we dont use "standpat", but NMO
3. Bob mentioned the term "NMO" is already defined in another way.
But certainly not in the most general way. A more general way is:

NMO = assumption: a real move is doing better than the nullmove.

The assumption cannot be hurt or influenced by the way we determine
the estimatedLowerBound, therefore blackBox() (search(),evaluation()..)

imho, Michael
Hello Don, i dont understand your sharp tone. For me it was interesting
to see that the standpat principle and the nullmove observation are
2 different things. To define things in a correct or better way is the first step to avoid such threads, where obviously we do not all agree of what
we are talking about.

Michael
Sven
Posts: 4052
Joined: Thu May 15, 2008 9:57 pm
Location: Berlin, Germany
Full name: Sven Schüle

Re: Without the null move observation

Post by Sven »

Sorry to say this but this discussion was almost useless for me. Even the available literature is not trusted any longer, which makes me really wonder a lot.

Sven
User avatar
hgm
Posts: 27787
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Without the null move observation

Post by hgm »

Don wrote:This is one of those stupid conversations where people get hung up on semantics and definitions. We all agree on what we are talking about we just don't agree on what it should be called so no more posts on this subject for me.
Well, for the record then:

I don't agree with you at all, because you are plain wrong.

You claim that in games where the null-move observation is not true, (like Checkers, Reversi, Amazons end-games) stand-pat cannnot be used.

That is wrong, and a gross denial of the facts. Engines for these games do exist, they use stand pat, and they work fine.

Of course every discussion conducted in any language is 'just semantics'. If you use the word 'true' when you mean 'false', any discusion 'only' addresses the semantics of 'true'. Such gross semantic errors are very confusing, and definitely deserve to be addressed.
User avatar
hgm
Posts: 27787
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Without the null move observation

Post by hgm »

Desperado wrote: standpat = decide to play the position as it is

return(standpat)

If we modify this expression, this is by definition not longer standpat!
And this is definitelly not used in chess-engines over the last decades.
I think you are confusing the definition of an action with strategic advice on when to perform that action. Let me translate what you are saying to a more common context:
hgm wrote:definition:
walking = repeatedly putting one leg in front of the other

I go walking.

If we modify this statement, e.g. "If the distance is less than 5km, I go walking, otherwise I take the car" it is by definition no longer called walking.
So I have definitely not been walking since a long time (since I bought a car, to be exact), although I almost always travel on foot.
Do you agree that this would be silly in the extreme? Things are what they are, and don't become something else just because you have an alternative to them. In particular, standing pat is standing pat, even when you don't do it in cases when it would be less prudent to stand pat.

Another way of looking at it is that in most Chess engines "return(standpat)" is not the only line of code there is. It is always done conditionally, on the depth if on nothing else:

if(depth <= 0) return(standpat);

So now does that also make it is no longer stand pat according to your definition?
Gerd Isenberg
Posts: 2250
Joined: Wed Mar 08, 2006 8:47 pm
Location: Hattingen, Germany

Re: Without the null move observation

Post by Gerd Isenberg »

Desperado wrote: For my personal summary:

1. HGM is right that the term "standpat" has nothing to do with NMO
2. Here i am assisting you Sven, we dont use "standpat", but NMO
3. Bob mentioned the term "NMO" is already defined in another way.
But certainly not in the most general way. A more general way is:

NMO = assumption: a real move is doing better than the nullmove.

The assumption cannot be hurt or influenced by the way we determine
the estimatedLowerBound, therefore blackBox() (search(),evaluation()..)

imho, Michael
This is Don Beal's statement on that matter in 'A Generalized Quiscence Search' (1990), reprinted as edited version in 1999 "The Nature of Minimax Search" page 105, assuming a simple evaluation (material only + psq) not aware of tempo:
The option to 'stand pat' can equally well viewed as an option to choose the evaluation after a null move, rather than the static evaluation now, since the material does not change with a null move.