Yes, if you already limit nullmove it might be harder to test because of the possible different combinations.Uri Blass wrote:I do not use null move pruning if the evaluation is above beta.Tony wrote:Did you test it ?Uri Blass wrote:I do not understand how null move can help move ordering when every move fail high.Tony wrote:In addition, a lot of people started doing this since it was used in Fruit, but only a few realize that Fruit did it wrong (or rather, the way it was implemented, it didn't do it).Zach Wegner wrote:Usually this condition is just checking if beta equals infinity, i.e. it is possible to fail high at all. Alpha does not have anything to do with it, and if you check for negative mate scores this will weed out some possible cutoffs (not sure how many). If it only tests for positive mate scores, then it probably won't matter: it's hard to mate an opponent by null moving.smcracraft wrote:
Code: Select all
!(MATESCORE (alpha)) && /* Score is not a mate score */
There is no reason to do it either. Nullmove always helps move ordering.
Suppose that you search from the opening position
1.e4 Nf6 2.Qh5 Nxh5 3.null black move
of course you are going to find that black has a threat but every move is going to have a threat so the fact that you started from null is not going to help you to get better move ordering.
First test something and then try to understand it is the correct order.
Unfortunately it is hard to test changes when the difference is small and in test positions I do not have consistent results(sometimes I need to search more nodes to get the same depth and sometimes I need to search less nodes espacially when there are other factors that are different because if the tree is different the order of pieces in the piece list is also different and the order of moves is different)
searching null move first may change the order of moves but I see no reason to assume that it is going to improve the order of moves.
When I rewrite movei I may change things and have order of pieces in the piece list that is not dependent on the tree that I searched so things may be different.
I always nullmove, since it always gives me something. Killer moves, threaths, hash moves (iid) etc.