Over-aggressive pruning

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

FlavusSnow
Posts: 89
Joined: Thu Apr 01, 2010 5:28 am
Location: Omaha, NE

Over-aggressive pruning

Post by FlavusSnow »

I wonder if it would be beneficial to prune extremely aggressively followed by a verification using a more conservative but lower depth search.

Today's top engines are undoubtedly the strongest any engine has ever been; however, I have seen many individual positions where any one of the top 5 has problems due to overly aggressive pruning. Thoughts?
Ferdy
Posts: 4833
Joined: Sun Aug 10, 2008 3:15 pm
Location: Philippines

Re: Over-aggressive pruning

Post by Ferdy »

FlavusSnow wrote:I wonder if it would be beneficial to prune extremely aggressively followed by a verification using a more conservative but lower depth search.

Today's top engines are undoubtedly the strongest any engine has ever been; however, I have seen many individual positions where any one of the top 5 has problems due to overly aggressive pruning. Thoughts?
At the end of the day it is the overall play that counts and not some specific positions that it experienced difficulties.

I was thinking a 2-mode engine, one that is designed for play and one that is designed for analysis. So in analysis mode you might want to reduce aggressive pruning and reduction because probably time is not a factor. You may want to extend moves that are sacrifices, or interesting losing moves or maybe moves that increases positional eval but loses material eval.
mcostalba
Posts: 2684
Joined: Sat Jun 14, 2008 9:17 pm

Re: Over-aggressive pruning

Post by mcostalba »

FlavusSnow wrote:I wonder if it would be beneficial to prune extremely aggressively followed by a verification using a more conservative but lower depth search.
This is how ID (iterative deepening) _already_ works.

There was a thread some time ago about widening the search tree while proceeding along the search depth....

Just to summarize, when you search deeper you also search _wider_ in the previous plies. This is because pruning is depth dependent in almost all the engines so that you prune more at shallow depths than at high depths.
User avatar
Eelco de Groot
Posts: 4567
Joined: Sun Mar 12, 2006 2:40 am
Full name:   

Re: Over-aggressive pruning

Post by Eelco de Groot »

FlavusSnow wrote:I wonder if it would be beneficial to prune extremely aggressively followed by a verification using a more conservative but lower depth search.

Today's top engines are undoubtedly the strongest any engine has ever been; however, I have seen many individual positions where any one of the top 5 has problems due to overly aggressive pruning. Thoughts?
I think a lot of engines are already doing 'some form' of what you mean. The iterative deepening is a form of doing shallow searches first and going progressively deeper, so I think it is not quite what you mean.

For all the moves after the PV move you first do a test, for each of those moves, if it fails high against alpha, alpha being what you achieved with your PV move. Only then (if it Fails High with a nullwindow search) this move is tested with a PV search. It is a form of verification of the nullwindow search. You can try the same principle with the PV move, first test if it fails high with a selective nullwindow search.

This search is cheap and you can easily go a few ply deeper with it than with the expensive PV search. I often tried variations on this, I'm sure it can work, but then I'm not very good at testing elochanges.

A problem is that nullwindowsearches are so imprecise, that they don't help if you already have a good PV. But if you look at Houdini for instance, before giving the PV it first comes with some 'fast' result. It must be doing some sort of nullwindow search there. If it is just that, then I don't know if it really helps anymore after a while, because after a couple of iterations, say about twenty, the moves near the root are so good already, hopefully, that a very selective search probably only threatens to ruin (okay, I'm exagerating a bit, and guessing) your PV if you count in the needed hash and possible overwrites etc.

In (Stockfish clone) Rainbow Serpent I'm using these nullwindow searches only in the last twelve plies of the PV, near the tips, but there the nullwindow searches are going much deeper than the PV search itself. Don't know if it helps much but I found it a nice idea. It does not solve all problems though 8-)

Eelco
Debugging is twice as hard as writing the code in the first
place. Therefore, if you write the code as cleverly as possible, you
are, by definition, not smart enough to debug it.
-- Brian W. Kernighan
RogerC
Posts: 41
Joined: Tue Oct 29, 2019 8:33 pm
Location: French Polynesia
Full name: Roger C.

Re: Over-aggressive pruning

Post by RogerC »

The goal of a chess engine is to play good games with excellent moves 99.9% of the time. Trying to find the 0.1% best moves on some rare positions is useless and will contibute to let the engine spending too much time in elavuations of bad moves and at last, the ELO gain will be negative. The tweaks of all the engines is to find the right proportion of pruning : not too much because you will miss too many good decisive positions, but just Enough to go very fast and very deep in the search...