Zach Wegner wrote:That was my first thought too. I don't think either method is fundamentally better, each has its advantages.
I don't think anyone tried my idea ("What you might try is searching with a zero window if either moves>N or best_score>alpha.") though. Bob!! Your cluster beckons!! It wants to test this idea!
It appears to be a moot issue to me anyway. If you don't use aspiration search at the root, so that you always start with (-inf, +inf) then either algorithm works _exactly_ the same way, because the first move will _always_ improve on -inf.
If you use aspiration search at the window, why would you want to defer starting null-window searches? If the first move fails low (leaves alpha intact) why not do a null-window search on the rest in case they fail low as well because the aspiration window is wrong? By searching the null-window, you will discover this faster, and it is the way my code has always worked.
I first used PVS in 1978, quite by accident. Murray Campbell and I were discussing this idea at the ACM event in Washington, DC. We were running on a Univac, and I suggested that we dial up my local Vax box and make the changes and see how it works. It looked pretty good, with the only odd thing being fail highs on very minor score changes, which was OK. The next round, our Univac developed a memory problem and I switched back to the vax and had a few exciting moments when we came out with a Nxf7!! sort of output, only to see the score rise by 2 or 3 millipawns.
Even in 1978 we just searched the first move with normal alpha/beta and then went into the null-window search, just as the code exactly does in Crafty...