A Simple Algorithm for Approximating God's Number
Hey guys,
The following is just another one of my crazy approximations of god's number (I think it works best with
h-b move metric, which I think is OBTM), but it is based off of such a simple idea, and the results seem to be very reasonable, that I thought I should just post it before I forget it.
Algorithm
Let's let a formula which gives the number of positions of the
nx
nx
n cube be called \( f\left( n \right) \), then I "claim" that god's number is within a small proximity of the result from using the following algorithm.
[1] Choose a cube size for which you want to approximate god's number for in OBTM and call it N.
[2] Evaluate \( \left\lfloor \text{Log}_{10}\left[ f\left( N \right) \right]+0.5 \right\rfloor \) to get the number of digits of \( f\left( N \right) \).
[3] Now, by experimentation, substitute values for
k in \( \left\lfloor \text{Log}_{10}\left[ k! \right]+0.5 \right\rfloor \) to try to match the value calculated in step [2]. Choose
k + 1 if
k is smaller than the result from [2] and
k + 1 is larger than the result from [2].
The God's number approximation will be the value of
k which is obtained in step [3].
Formula
Using
this approximation of the number of digits of
k! and using Mathematica, I get the following formula which "calculates the lower and upperbound" for a cube of size N.
\( \text{God }\!\!'\!\!\text{ sNo.}\left( n \right)=\left\lfloor \frac{\left\lfloor \text{Log}_{10}\left[ f\left( n \right) \right]+0.5 \right\rfloor \left( \ln \left( 2 \right)+\ln \left( 5 \right) \right)}{\text{ProductLog}\left[ \frac{1}{b}\left\lfloor \text{Log}_{10}\left[ f\left( n \right) \right]+0.5 \right\rfloor \left( \ln \left( 2 \right)+\ln \left( 5 \right) \right) \right]} \right\rfloor \)
, where:
ProductLog[x] is the inverse function of \( xe^{x} \),
choose \( b=2 \) to get the "lowerbound" and choose \( b=3 \) to get the "upperbound".
, and again, \( f\left( n \right) \) is any number of positions formula for cube size
n.
This formula is only necessary for very large
n, and its purpose is to give you an interval where to start testing
k values when finding the number of digits
k! has (which is step [3] of the algorithm).
Results from the Algorithm and the Formula
Below, "GN" is the "actual" God's number approximation using the algorithm, and the bracketed pair is the lowerbound and upperbound achieved from the formula.
n=2, {10,11}, GN = 10
n=3, {20,22}, GN = 21
n=4, {36,40}, GN = 39
n=5, {52,57}, GN = 56
n=6, {73,81}, GN = 79
n=7, {95,103}, GN = 101
n=8, {122,132}, GN = 129
n=9, {148,160}, GN = 157
n=10, {179,193}, GN = 189
n=11, {210,226}, GN = 222
n=12, {245,263}, GN = 259
n=13, {281,301}, GN = 296
n=14, {321,343}, GN = 338
n=15, {360,385}, GN = 379
n=16, {404,432}, GN = 425
n=17, {448,478}, GN = 471
n=18, {496,529}, GN = 521
n=19, {544,580}, GN = 571
n=20, {596,635}, GN = 625
n=100, {10344,10801}, GN = 10687
n=1000, {698895,720084}, GN = 714818
n=1001, {700192,721417}, GN = 716142
Comment
I can see that my approximation for
n = 1001 is smaller than
qqwref's lowerbound of 981766, but I'm not sure exactly if his was correct.