Once move ordering passes 95% correct, the rest is fluff mathematically.Lyudmil Tsvetkov wrote:if it were that simple, someone would already have done it.Dann Corbit wrote:Branching factor improvement is exponential improvement.Uri Blass wrote:I agree about the history.Dann Corbit wrote:Every single great advancement is chess engines has been due to a reduction in branching factor. While it is obviously a mistake to prune away good stuff let's take a quick look at the list:Uri Blass wrote:I think that better search does not mean lower branching factorDann Corbit wrote:If an engine scales better, it is most likely search that is better (lower branching factor).
The second most likely thing would be the SMP implementation.
The evaluation will not affect scaling much, except for improvement in the move ordering.
It is easy to get lower branching factor by dubious pruning.
I think that evaluation is important and I expect top engines not to scale well if you change their evaluation to simple piece square table evaluation.
1) Alpha-Beta : Enormous improvement over mini-max
2) Null move reduction: Enormous improvement over plain alpha-beta
3) PVS search: Modest improvement over null move reduction due to zero window searches
4) History Reductions: (As pioneered by Fruit) - huge improvent over plain PVS search
5) Smooth scaling reductions in null move pruning (As, for instance, Stockfish) - significant improvement over ordinary null move
6) Razoring (like Rybka and Strelka): Enormous improvement over plain pvs search
7) Late Move Reductions: (with Tord taking the lead in both effectiveness and publication) -- a huge improvement over not having LMR.
There are, of course, many others that I did not mention here.
It is not a coincidence that the top ten engines all have branching factors of about 2, and it is not a coincidence that most weak engines have a large branching factor.
Now, your point in well taken with individual cases. For instance, ExChess had the best branching factor of all engines at one point. But it was not the strongest engine by far. So poorly tuned reductions are not nearly so beneficial as properly tuned reductions.
But almost every big advancement comes from a reduction in branching factor and the next revolution will come from a reduction in branching factor.
There are, of course, some exceptions. The material imbalance table in Rybka was another revolution, and almost entirely due to evaluation improvement in that case (as a 'for instance'). We can thank Larry Kaufman for that, I think.
I do not think it means that always the future is going to be reduction of the branching factor.
The target is to play better and not to reduce the branching factor and I see no reason to assume that the next improvement is going to be more reductions and it also can be more extensions of the right lines.
Other improvements will not be as astounding.
Until branching factor becomes one, it will always be possible to improve it.
I also agree that a perfect evaluation would lead to a branching factor of 1.
It is just that a perfect evaluation is probably many times more difficult to do and exponential improvements via search happen all the time.
In fact, I think that the key to beating SF is simple. Stop focusing on eval and focus on search. The SF team spends way too much time looking at eval and not enough time looking at search.
In this sense, you can call me a disciple of Christophe Theron, who said:
"Search is also knowledge."
from SF framework stats, search and eval patches are split about equal.
so what to do more with search, without improving eval on a par?
someone says, well, about the most important thing in chess programming
is move ordering. well, how do you achieve better move ordering without necessarily resorting to a more advanced move ordering function, which one way or another has to deal with a more refined eval?
And someone will have already done it?
Yes, of course.
Every drop in branching factor (probably there are 50 by now) is a literal revolution in chess engine strength.
Do you never wonder why the expansion in strength of chess engines is exponential in time (possibly even super-exponential)?
Clearly, this is 99% due to branching factor.
Do you understand what the difference between:
36^40
and 1.8^40
IS?
Hint:
1.7868991024601705453143247728944e+62/16251752663 is a very big number.
The first number is the approximate value for a 40 ply search using mini-max
The second number is the same search using the strongest programs today.
The ratio is a truly enormous number.