Tord Romstad wrote:Uri Blass wrote:zamar wrote:Explanation is pretty obvious here:
* New thing added to Stockfish 1.5 is that it _extends_ PV from transposition table. Usually it works, but sometimes it gives bizarre lines like this. Without extension it would only show "PV = 1. Bb7 x d5".
I still do not understand.
How did the tranposition table get Ke8 after Bxd5
I agree: It does look a little suspicious in this case. I'll have a look at it and try to find out what really happens, if I'm able to reproduce your analysis (should be easy if you used a single search thread, but perhaps very difficult if you used more than one).
You'll always get a good PV in the end, by waiting until the fail high has been resolved. In practice, this can sometimes take a very long time, because Stockfish doesn't try to resolve fail highs at the root immediately, but postpones it to the next iteration instead (most people would probably say that this is absurd and completely crazy and obviously can't work well, and I would be tempted to agree. Fortunately Joona didn't think so, and to my surprise it seems to work extremely well in practice). Sometimes the search will fail high at the next iteration as well, and you may end up waiting several plies for an exact score and a real PV. I wonder if it would be a good idea to disable aspiration windows in analysis mode, to make sure the user always get exact scores and high-quality PVs.
Here is how we originally implemented the PVS stuff in 1978. Ken did this in Belle in 1980, I did it in 1978 while talking to Murray Campbell at the Washington ACM computer chess tournament.
If you get a fail high at the root, make this the best move but do not re-search. If you get a second fail high at the root, now you go back and re-search the first fail-high move to get a score, then do a normal null-window on the second fail-high move. If it fails high here, you know it is better and you did less work than if you also searched it completely to resolve the score.
The only thing I didn't like about this was (a) you can run out of time after only a single move has failed high, and you have no PV, which means no move to ponder. I solved this in Crafty with the "puzzling search" which is used to find a move to ponder if there is none in the PV nor the hash table. (b) I don't know how bad or good the score is, so I can't tell whether to use extra time or not. I might have had a very bad score, followed by a fail high on a different move, and now the question is, does this move bring the score back up to an acceptable level or is it still very bad? I eventually quit using this approach for that very reason. Overall it seemed to make no real difference. One way is faster and helps in some positions, the other way is more accurate and helps in other positions...