Daniel Shawul wrote:I have to skip intermediate updates because the formula doesn't allow it unlike the textbook's EBF definition.
Any EBF calculation is useless for incomplete trees. Therefore you *must* skip these, as well as the last iteration in case it was interrupted by timeout.
A further correction might be necessary depending on the way you are printing your node counts. If they are cumulative then you'll need to get the values per iteration first, before starting any EBF calculation.
Daniel Shawul wrote:You can see that this ratio is very much different from what is called EBF in text books.
And the text books defintion clearly shows decreasing EBF with depth, unlike the second case which gives values all over the place
. So judge for yourself which one is more accurate.
Replace the nodes(i)/nodes(i-1) by the improved version ("EBF_ID_mod" in the table below): sqrt(nodes(i)/nodes(i-2)), then you'll get these numbers (based on the assumptions that your node counts are cumulative and the last iteration was incomplete - you are free to correct both, of course):
Code: Select all
First set of data:
d dnodes EBF_AI EBF_ID_mod
2 164 12,81
3 163 5,46
4 1535 6,26 3,06
5 390 3,30 1,55
6 5057 4,14 1,82
7 3342 3,19 2,93
8 17163 3,38 1,84
9 9537 2,77 1,69
10 43687 2,91 1,60
11 46885 2,66 2,22
12 131388 2,67 1,73
13 393868 2,69 2,90
14 434872 2,53 1,82
15 2205974 2,65 2,37
16 4025548 2,59 3,04
Second set of data:
d dnodes EBF_AI EBF_ID_mod
2 165 12,85
3 165 5,48
4 1328 6,04 2,84
5 360 3,25 1,48
6 4341 4,04 1,81
7 4353 3,31 3,48
8 8591 3,10 1,41
9 17088 2,95 1,98
10 60807 3,01 2,66
11 57644 2,71 1,84
12 168850 2,73 1,67
13 926145 2,88 4,01
14 756135 2,63 2,12
15 1746284 2,61 1,37
16 2828766 2,53 1,93
Still so bad?
Well, I think the "EBF_ID_mod" curve is not nice but while "EBF_AI" seems to be asymptotically approaching some constant value which looks like the average of "EBF_ID_mod", the latter is already about there from the beginning ...
I agree that the original nodes(i)/nodes(i-1) formula is not optimal, which is caused by the odd/even effects of alpha-beta search. But the improvement for that tiny problem has already been proposed a couple of months ago by Gerd Isenberg, which you might have read.
We can open an "EBF competition" with just two participants
Seriously, for both ways of calculation I think there are advantages and disadvantages. And both are not a perfect tool for getting an estimate of the time needed for the next iteration, if this is a question the engine has to answer. So maybe we can even live with both tools
Sven