How to recognize the optimal parent to a node?

Discussion of chess software programming and technical issues.

Moderator: Ras

User avatar
smrf
Posts: 484
Joined: Mon Mar 13, 2006 11:08 am
Location: Klein-Gerau, Germany

Re: How to recognize the optimal parent to a node?

Post by smrf »

Edmund wrote:... How about storing the parent static eval in the TT entry of the child-node and only replace the exising value if it is < than the new one?
Well, of course there some parent data has to be stored in TT entries. But simply maximizing e.g. that parent's static evaluation would not do. This is, because the higher that value would be, the greater the chance, that a preceding move would be too worse to participate within a relevant path inside of the the search tree.

My intention is to take the first occurring parent when evaluating a higher node search level, because of already existing informations coming from iterative deepening which increases the quality of move ordering and thus also the chance to find the "optimal" ancestor. But I am not sure about this and therefore started this thread.
Edmund
Posts: 670
Joined: Mon Dec 03, 2007 3:01 pm
Location: Barcelona, Spain

Re: How to recognize the optimal parent to a node?

Post by Edmund »

smrf wrote:
Edmund wrote:... How about storing the parent static eval in the TT entry of the child-node and only replace the exising value if it is < than the new one?
Well, of course there some parent data has to be stored in TT entries. But simply maximizing e.g. that parent's static evaluation would not do. This is, because the higher that value would be, the greater the chance, that a preceding move would be too worse to participate within a relevant path inside of the the search tree.
Good point!
smrf wrote:My intention is to take the first occurring parent when evaluating a higher node search level, because of already existing informations coming from iterative deepening which increases the quality of move ordering and thus also the chance to find the "optimal" ancestor. But I am not sure about this and therefore started this thread.
Even in iterative deepening moveordering cannot be trusted all the time. Especially regarding parents which are all nodes.


Another option to think about: add another variable to the TT with the hash of the parent node. When a node is entered and a TT-entry is present && the variable is not zero or has the value of the parent's hash, store the hash signature of the child together with the old parent hash in a separate stack and replace the old parents hash with the new one in the TT entry. At the end of the iterative deepening iteration you can then evaluate the entries in the stack.
This should probably be restricted to shallow depths.