hgm wrote:
The problem with your idea is this: how would you know in advance if something is a 'goodMove', before searching it? If you first had to search ll moves, or a lot of them, even at reduced depth, to figure out which one is 'good', you would have already given away a large part of the reduction advantage.
For me a good move is simply the move found in the hashtable (if this move exists in the hashtable). Otherwise I can search at only 2 or 3 plies to find what looks like a good move and in particular a recapture.
hgm wrote:
And moves that seem good based on search score, often only get this good score by delaying the inevitable, rather than solving it.
That is effectively a good point I have to study in order to see if it could help me for draugths game.
hgm wrote:
There is a second reason why fail-high on the null move is more reliable than the fail-high on a good move: if a deeper search on the null move starts to dig up enough trouble to make it fail low, I will always have an extra tempo up my sleave to pre-emptively slove that trouble, when all else fails. I would not have that if I had already spent my move on a 'good move'.
I have to confess I do not understand this point concerning an "extra tempo". I do not see the difference between eval(P=nullMove, N-R) and eval(P+goodMove, N-R). For these two searches I spent quite the same time because the depth is the same. The only difference is the first move (nullMove vs goodMove). Can you explain why an extra-tempo is available in one case and not in the other ?
hgm wrote:
I once experimented reducing 'overwhelmingly good captures' (which would bring you more than a iece above beta) even more than the null move, based on the idea that the opportunity to make such a capture proved that the preceding opponent move must have been a bad blunder, that really did not deserve to be searched at all. This seemed competative, even when I did it only after the null move failed low. But with a larger reduction, it would have of course been much cheaper to try such recapture searches first, such that you don't even have to do the more expensive null-move search. So first search all recaptures with beta upshifted by 300 and a reduction of 4 ply, (perhaps using SEE guidance to see if this is realistic), and only if they fail low, try null move with R=2.
That looks like I have done with reduction. As I said I do not use the null move because it is often a good move in draughts but our exchanges on the subject tell me I have to analyse if the null move approach could help to discover an existing threat which have to be solved anyway avoiding delaying the problem by the good move.
Not so simple indeed but very interesting!