算法简介(第1-1章)

时间:2015-05-29 17:04:07

标签: algorithm big-o

只是为了好玩而读这本书,这不是作业。

但是我对第一个主要任务感到困惑:

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)?

2 个答案:

答案 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 是一个整数长度输入。