Michael Sherwin wrote:I wonder if my language was clear enough when trying to describe the example for progress, so I will give a simple position based example.
[d]r1bqk1nr/pppp1ppp/2n5/2b1p3/2B1P3/5N2/PPPP1PPP/RNBQK2R w KQkq - 4 4
Bf1 is not a move worth considering to us humans, but how is a computer also able to determine this? It has to 'look'. A computer can not look at the board like a human does. It has to use search.
I think this is a good position to illustrate the point I am making.
I think you will find that a computer spends about as much time considering Bf1 as a human does. I ran this position on Komodo and on a 20 ply search which took a little over 3 minutes, Komodo spent a lot of time on the first 3 or 4 moves then hung up on the 5th move which it decided was the best move. Bf1 was near the end of the list and it went by it so fast it was not measurable. In fact in less than 1/10 of a second it scrolled past 5 or 6 moves and Bf1 was one of them.
This means that for all practical purposes the program spent NO time on this move. Of course we know it did spend SOME time, but I think humans spend SOME time processing any position that involves whatever mechanism allows them to throw out most of the moves. It's splitting hairs to claim the computer is wasting a lot of time on Bf1 and for all practical purposes it is ignoring Bf1. Even if you built a plausible move generator that was smart enough to throw out 90% of the moves without involving any kind of search, it would take some time for the algorithms mechanism to accomplish its purpose - probably more time that Komodo spent on Bf1.
If I ran that position for a couple of days I might find that on a super deep search Komodo spends a couple of seconds on that move - but it's spending 24 hours on the total search. That's still a good trade-off, spending 23 hours and 58 seconds finding the best move and taking 2 seconds to verify that Bf1 is a stupid move. That would not be enough time to even stand up to go get a cup of coffee.
If a human were given 24 hours per move to win a chess game and the fate of the universe were depending on his winning the game, he should take at least a couple of seconds examining moves that look very unlikely - and this is probably why computers can now outplay humans - if there were something really profound about Bf1 that was not obvious the computer would find it, but a human might never consider it, ever. (In this case we all agree Bf1 is a backward move but it's not always so obvious - some moves have hidden value and humans miss them due to their "selective search" heuristic. )
A search that truly "forward prunes" in the sense that a move is never reconsidered at later iterations will never succeed, except in the rare cases that some algorithm can determine with 100% certainty that the move is incorrect. There are only a few positions where you can construct a proof based on reasoning about the position if you forbid looking ahead of any kind (depending on what you consider looking ahead) - and it's totally stupid to forbid looking ahead in the misguided notion that it might be the holy grail of computer chess.
We already use a reduced null-move search to look at Bf1 and we do determine this way that Bf1 deserves no further attention. But, can this be improved upon? Well, if all the moves that would be rejected by an even more shallow null-move search were played two at a time then a null-move search on top of that preformed still did not lead to an improved eval then it should be safe to prune.
So, in the above diagram, Bf1 combined with Ng1, Ng5 or Nh4 etc., cannot recommend Bf1 then Bf1 is not worth looking at further as no progress can even be threatened with that move.