Pradu wrote:Sven I don't understand what you said right here but here's my reasoning for the formula.

- Code: Select all
`bf^depth=leafnodes`

...

This should be universal.

Pradu,

you can't derive the branching factor from just two numbers, depth and leafnodes. The problem in your formula is the first iteration.

Say your bf is 3 (not bad but also not one of the best ones). Does a chess engine produce such numbers?

- Code: Select all
`leafnodes(1) = 3`

leafnodes(2) = 9

leafnodes(3) = 27

...

leafnodes(10) = 59049

Or more likely these ones:

- Code: Select all
`leafnodes(1) = 36`

leafnodes(2) = 108

leafnodes(3) = 324

...

leafnodes(10) = 708588

?

bf tells you how many more nodes (leaf nodes if you like) are searched for an iteration i compared to the previous iteration i-1, so you can't look on the numbers of only one iteration:

- Code: Select all
`(1) bf(depth) = leafnodes(depth) / leafnodes(depth-1)`

Obviously this is valid at most for depth >=2. leafnodes(1) is independent from any branching factor. So you might perhaps write the following:

- Code: Select all
`(2) bf_average = (leafnodes(depth) / leafnodes(1)) ^ (1 / (depth-1))`

Note the different result of (2) compared to your formula, it is quite significant if leafnodes(1) is large compared to bf_average.

I have not tested the practical quality of (2). But still I assume it's better to derive the bf of an engine (for a given position) by applying (1) to the last completed iteration of a search, instead of calculating a somehow arbitrary bf_average using (2).

Perhaps we both should go and test our formulas now

Sven