算法增长的顺序

时间:2013-10-06 09:10:42

标签: algorithm computer-science

假设您将程序作为N的函数计时并产生 下表。

        N   seconds
-------------------
    19683      0.00
    59049      0.00
   177147      0.01
   531441      0.08
  1594323      0.44
  4782969      2.46
 14348907     13.58
 43046721     74.99
129140163    414.20
387420489   2287.85

估算作为N的函数的运行时间的增长顺序。 假设运行时间服从幂律T(N)~n N ^ b。为您 回答,输入常数b。您的答案将被标记为正确 如果它在目标答案的1%范围内 - 我们建议使用 小数分隔符后面的两位数,例如2.34。

有人可以解释如何计算吗?

2 个答案:

答案 0 :(得分:8)

嗯,这是一个简单的数学问题。

I : a*387420489^b = 2287.85 -> a = 387420489^b/2287.85
II: a*43046721^b  =  74.99  -> a = 43046721^b/74.99
III: (I and II)-> 387420489^b/2287.85 = 43046721^b/74.99 ->
-> http://www.purplemath.com/modules/solvexpo2.htm

使用对数来解决。

答案 1 :(得分:3)

1.您应该计算从一行到下一行的增长变化的比率

N          seconds  
--------------------
14348907    13.58   
43046721    74.99   
129140163   414.2   
387420489   2287.85 

2.计算N

的变化比率
43046721 / 14348907 = 3
129140163 / 43046721 = 3
因此,N的变化率为3。

3.计算变化的秒数比率

74.99 / 13.58 = 5.52

现在让我们检查一下多一行的比例,以确保

414.2 / 74.99 = 5.52

所以秒的变化比率为5.52

4.建立以下设施

 3^b = 5.52
 b = 1.55

最后我们得出运行时间增长的顺序为1.55。