如何获得数学模式的功能

时间:2018-04-17 23:45:44

标签: math pattern-matching

如何获得计算下一步的功能? (不一定要准确......)最好的方法是什么?

  • 1:约100ms
  • 2:约400ms
  • 3:约3100ms(3,1秒)
  • 4:约36500ms(36,5秒)
  • 5:约305600ms(约5,1分钟)
  • 6:约1970981ms(约32,8分钟)
  • 7:约13855774ms(约230,9分钟或3,8小时)
  • 8:?????
  • 9:?????
  • 即可。 。 。 。 。 。

它看起来是指数级的,但具有什么比例?

https://www.wolframalpha.com/input/?i=%5B100,+400,+3100,+36500,+305600,+1970981%5D

这是javascript国际象棋极小极大算法(在我的计算机上)所花费的时间。每一步都是搜索树的深度。

1 个答案:

答案 0 :(得分:1)

这就是我在R中的表现:

> times <- c(100, 400, 3100, 36500, 305600, 1970981, 13855774)
> n <- 1:7
> lm.fit <- lm(log(times) ~ n)
> summary(lm.fit)

Call:
lm(formula = log(times) ~ n)

Residuals:
       1        2        3        4        5        6        7 
 0.33742 -0.31605 -0.30811  0.11805  0.20326  0.02751 -0.06208 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  2.22800    0.22945    9.71 0.000197 ***
n            2.03976    0.05131   39.76  1.9e-07 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.2715 on 5 degrees of freedom
Multiple R-squared:  0.9968,    Adjusted R-squared:  0.9962 
F-statistic:  1581 on 1 and 5 DF,  p-value: 1.898e-07

基本想法是time = A*e^(kn)然后log(time) = kn + log(A)。当您对log(time)的{​​{1}}进行线性回归时,n 的系数是增长率,截距是常数倍的对数。在这种情况下,拟合非常好(如R平方统计量超过0.99所示),因此数据的指数模型是合理的。由于n约为9.28,因此非常适合您的数据:

exp(2.228)

请注意,“好”是相对的。近似中的绝对误差相当大,但n = 6和7时相对误差很小。此外,n = 7是一个小样本量,并且基于泛化在那是危险的。最后,随着n增加,诸如垃圾收集之类的事情可能变得更加重要,导致例如更长的运行时间。 n = 8或9比公式预测的那样。