只是为了好玩而读这本书,这不是作业。
但是我对第一个主要任务感到困惑:
1-1运行时间的比较
对于下表中的每个函数f(n)和时间t,确定在时间t内可以求解的问题的最大大小n,假设解决问题的算法采用f(n)微秒。
这甚至意味着什么?
下表显示了沿一个轴(1秒,1分钟,1小时等)的一堆时间,另一个轴显示不同的f(n),例如lg n,sqrt(n),n等
我不知道如何填写矩阵,因为我无法理解这个问题。因此,如果f(n)= lg n,则询问可以求解的最大n,例如1秒,但问题需要f(n)= lg n微秒才能解决?这最后一部分甚至意味着什么?我甚至不知道如何设置方程式/比率来解决这个问题,因为我甚至无法将问题的含义放在一起。
我的挂断超过了句子“假设解决问题的算法需要f(n)微秒”,因为我不知道这是指什么。 什么算法解决什么问题花费f(n)微秒的时间?所以如果我调用f(100)它将需要100微秒?所以我需要找到一些n,其中f(n)= lg n微秒= 1秒?
当lg n微秒= 10 ^ 6微秒时,这是否意味着lg n微秒= 1秒,所以n = 2 ^(10 ^ 6)?
答案 0 :(得分:8)
对于每次T
和每个函数f(n)
,您需要找到最大整数n
,以便f(n) <= T
例如,f(n) = n^2, T=1Sec = 1000 ms
:
n^2 <= 1000
n <= sqrt(1000)
n <= ~31.63 <- not an integer
n <= 31
鉴于任何函数f(n)
和某些时间T
,您需要同样找到n
的最大值,并填写表格。
答案 1 :(得分:0)
我将以前两个为例来帮助您完成其余的工作。因为一秒是 10^6
微秒。通过求解将 f(n)
与我们绘制的 f(n)
运行时间相关联的方程,我们可以求解 n
可以在时间限制内运行的最大输入 f
.
1 秒:
log(n2)=1,000,000⟹n2=e1,000,000⟹n=e500,000
1 分钟:
log(n2)=60,000,000⟹n2=e60,000,000⟹n=e30,000,000
其余的可以类似地完成。
附言确保对你从这些方程中得到的 n 值进行下限,因为 n 是一个整数长度输入。