5

I was looking at Fritz Online (https://fritz.chessbase.com/) engine's parameters/performance. Here is screen relating to one of made moves.

enter image description here

It means that there was a general depth equals to 15 but some branches were even explored to depth 39. Engine was analysing at average speed 530k positions per second. It lasted 5 sec. so ~2.6M nodes were evaluated.

Let's consider branching factor 3 at each level. Then there are 3^15=14M leaves to evaluate (not taking into account internal nodes). As we see in case of branching factor 3 we have more nodes to analyze (14M) than it really took place (2.6M) (not even considering branches explored deeper than 15).

Branching factor in chess is aproximately 35. I'm aware there are many, many sophisticated techniques to prune branches in search tree. But really from 35 to less than 3? How it's possible that more than 90% of branches are pruned?

Two remarks:

  1. Provided parameters/performance come from phase between opening and middlegame. This is NOT taken from ending where branching factor is significantly lower.
  2. Depth 15 is not something unusual. In most cases program performed analysis to depth between 13 and 16 in couple of seconds.
  • 2
    Assess a random chess position, all the moves but a few will look ridiculous to you. Same way engines can prune branches which start with bad moves. – ferit Mar 7 '18 at 6:44
  • What is the specific algorithm to do that? Good human player does it intuively and it's hard to provide exact way/algorithm. There are only some psychological researches stating man uses chunks, trajectories, etc. – stanwar Mar 7 '18 at 9:12
  • 1
    @stanwar That's what it means to have an efficient evaluation function, which roughly is a superposition of a long set of factors (king safety, material difference, mobility, ...) which are weighted differently from engine to engine. The weights are determined heuristically. Here are many links where this is discussed: chess.stackexchange.com/questions/17957/… or chess.stackexchange.com/questions/2204/… or chessprogramming.wikispaces.com/Evaluation – user929304 Mar 7 '18 at 10:10
  • Evaluation function can be used to decide which branches to prune. – ferit Mar 7 '18 at 15:47
2

Yes. Chess engines prune moves quite extensively. Chess programming is all about pruning.

When an engine says "search up to depth 15", it really mean depth as in iterative deepening depth-first search. It doesn't mean that the engine attempts to search everything up to depth 15. No good chess engine would search everything to depth 15.

It's complicated, but most of the bad moves should be reduced by depth (or even eliminated), and some critical lines variations extended beyond depth 15.

90% pruning is not uncommon, in fact it'd be more like 99.999999999999999999% according to your definition.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.