Sven Schüle wrote:xmas79 wrote:but it cannot take any kind of cut in PV nodes, as the score required is EXACT
Is that true? In my book, whenever I get a hash hit with a TT entry of type "lower bound" and the value I retrieve is >= beta then I can do a cutoff, even in PV nodes.
Any other opinions?
Sven
Hi Sven,
I was talking about the research, where you have a window of (alpha,+INF), where no beta cutoffs can occur. The only way to have a cut off is then an EXACT score, as getting a score < alpha really means you are NOT in a PV node, or that you could be on a PV node but have wrong a alpha value.
You can easily have cut-offs with exact/lower/upper bounds all the tree around, where you search 1+2+3+4+...+depth PV nodes and 1 bzillion of non PV nodes. In non-PV nodes you can take "always" a cut-off since your window is (alpha, alpha+1), and score can easily go above or below alpha or alpha+1. In PV nodes, when you have a window of (alpha,beta) it's also easy to get a cut off with exact/lower/upper bounds too, but failing high/low means something wrong with your bounds. Fail-high in this situations are typical of mate scores, and when you fail high because you got a mate score back, the window in now (alpha,+INF), so you can no more fail high and to have a TT cut you must hit an exact score (which will be inside the window).
These discussions are really interesting, but now I'm still under pressure at work, so I'll rest for a moment, I'll read all posts again in a few days.
Natale.
ps
Steve Maughan wrote:The PV is only truncated when a PV node find an EXACT hash hit outside of the alpha beta bounds and with a great or equal depth. So as the search progresses the depth increases and eventually those EXACT matches don't cause a cut-off and the engine has to search for itself.
PV is truncated whenever you cannot retrieve a complete PV after hash hit, and this happens when you have an EXACT hash hit and do a cut-off (always for a fail-soft framework, with the score inside the window for fail-hard). If you fail-high at root you do NOT have a PV, you only have a best move in the root position. And inside your TT there is nothing that you can predict, as you don't know in advance which slots were replaced. The research, then, is not guaranteed to find the mate, as it hopefully can follow the moves that lead to the mate, but following is not enough. If the mate is behind the horizon then you CANNOT see it because you don't have a hash hit that says "hey, that's a mate in at most 7 plies from here" because your window is now (alpha,+INF) and the score +INF-7 is inside the bounds, so no cut off will occur. No cut-off means no backup of fail-high information to the root. And that means no mate report.
So by definition I would say:
- when you get a SCORE_IS_AT_LEAST score you are on a CUT node
- when you get a SCORE_IS_AT_MOST score you are on a ALL node
- when you get a SCORE_IS_EXACT score you are on a PV node.
- when you do not get a hash hit you must discover yourself with search.
The draft thing you say won't work because at next iteration you will have no sufficient draft to trigger a hash hit, so you CANNOT have a TT cut at PV nodes, you can only have a hash hit on nodes that have been searched completely, which were then stored as an EXACT entry, and that were of course part of a PV, and a hash hit on one of these nodes will produce a truncated PV *if* you are not able to search *COMPLETELY* its subtree (or retrieve the PV, that is the same thing). That cut-off has then nothing to do with a fail-high then fail-low behaviour.
I hope I made it clear.
Now I must stop!