Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Special pages
Niidae Wiki
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
Null-move heuristic
Page
Discussion
English
Read
Edit
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
View history
General
What links here
Related changes
Page information
Appearance
move to sidebar
hide
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
In [[computer chess]] programs, the '''null-move heuristic''' is a [[heuristic (computer science)|heuristic]] technique used to enhance the speed of the [[alpha–beta pruning]] [[search algorithm|algorithm]]. == Rationale == [[Alpha–beta pruning]] speeds the [[minimax algorithm]] by identifying ''cutoffs'', points in the [[game tree]] where the current position is so good for the side to move that best play by the other side would have avoided it. Since such positions could not have resulted from best play, they and all branches of the game tree stemming from them can be ignored. The faster the program produces cutoffs, the faster the search runs. The null-move heuristic is designed to guess cutoffs with less effort than would otherwise be required, whilst retaining a reasonable level of accuracy. The null-move heuristic is based on the fact that most reasonable chess moves improve the position for the side that played them. So, if the player whose turn it is to move can forfeit the right to move (or make a [[null move]] – an illegal action in [[chess]]) and still have a position strong enough to produce a cutoff, then the current position would almost certainly produce a cutoff if the current player actually moved. == Implementation == In employing the null-move heuristic, the computer program first forfeits the turn of the side whose turn it is to move, and then performs an alpha–beta search on the resulting position to a shallower depth than it would have searched the current position had it not used the null move heuristic. If this shallow search produces a cutoff, it assumes the full-depth search in the absence of a forfeited turn would also have produced a cutoff. Because a shallow search is faster than deeper search, the cutoff is found faster, accelerating the computer chess program. If the shallow search fails to produce a cutoff, then the program must make the full-depth search. This approach makes two assumptions. First, it assumes that the disadvantage of forfeiting one's turn is greater than the disadvantage of performing a shallower search. Provided the shallower search is not too much shallower (in practical implementation, the null-move search is usually 2 or 3 [[ply (game theory)|plies]] shallower than the full search would have been), this is usually true. Second, it assumes that the null-move search will produce a cutoff frequently enough to justify the time spent performing null-move searches instead of full searches. In practice, this is also usually true. == Problems with the null-move heuristic == There are a class of chess positions where employing the null-move heuristic can result in severe tactical blunders. In these ''[[zugzwang]]'' (German for "forced to move") positions, the player whose turn it is to move has only bad moves as their legal choices, and so would actually be better off if allowed to forfeit the right to move. In these positions, the null-move heuristic may produce a cutoff where a full search would not have found one, causing the program to assume the position is very good for a side when it may in fact be very bad for them. To avoid using the null-move heuristic in zugzwang positions, most chess-playing programs that use the null-move heuristic put restrictions on its use. Such restrictions often include not using the null-move heuristic if * the side to move is in check * the side to move has only its king and pawns remaining * the side to move has a small number of pieces remaining * the previous move in the search was also a null move. == Verified null-move pruning == Another heuristic for dealing with the zugzwang problem is Omid David and [[Nathan Netanyahu]]'s '''verified null-move pruning'''.<ref>{{cite journal|last1=David-Tabibi|first1=Omid|last2=Netanyahu|first2=Nathan S.|author2-link=Nathan Netanyahu|title=Verified Null-Move Pruning|journal=[[ICGA Journal]]|date=September 2002|volume=25|issue=3|pages=153–161|doi=10.3233/ICG-2002-25305|arxiv=0808.1125|bibcode=2008arXiv0808.1125D|s2cid=1041}}</ref> In verified null-move pruning, whenever the shallow null-move search indicates a fail-high, instead of cutting off the search from the current node, the search is continued with reduced depth. == References == {{Reflist}} *{{citation | last1 = Goetsch | first1 = G. | last2 = Campbell | first2 = M. S. | author2-link = Murray Campbell | editor1-last = Marsland | editor1-first = T. Anthony | editor2-last = Schaeffer | editor2-first = Jonathan | editor2-link = Jonathan Schaeffer | contribution = Experiments with the null-move heuristic | pages = 159–168 | publisher = Springer-Verlag | title = Computers, Chess, and Cognition | year = 1990 |isbn=3-540-97415-6 |mode=cs1 }} [[Category:Computer chess]] [[Category:Search algorithms]] [[Category:Heuristics]]
Summary:
Please note that all contributions to Niidae Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Encyclopedia:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Templates used on this page:
Template:Citation
(
edit
)
Template:Cite journal
(
edit
)
Template:Reflist
(
edit
)
Search
Search
Editing
Null-move heuristic
Add topic