算法简介(第 1-1 章)

Intro to Algorithms (chapter 1-1)

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

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

1-1比较运行次

对于下面table中的每个函数f(n)和时间t,确定在时间t可以解决的问题的最大规模n,假设算法为解决问题需要 f(n) 微秒。

这到底是什么意思?

下一个table沿一个轴显示一堆时间(1秒、1分钟、一小时等),另一个轴显示不同的f(n),如lg n、sqrt( n), n, 等等

我不知道如何填写矩阵,因为我看不懂问题。所以如果f(n) = lg n,它要求最大的n可以在例如1秒内解决,但是这个问题需要f(n) = lg n微秒才能解决?最后一部分是什么意思?我什至不知道如何设置方程式/比率来解决这个问题,因为我什至不能把问题的意思放在一起。

我对"assuming that the algorithm to solve the problem takes f(n) microseconds"这句话挂断了,因为我不知道这指的是什么。 what算法解决what问题的时间需要f(n)微秒?那么,如果我调用 f(100) 它将花费 lg 100 微秒?所以我需要找到一些 n where f(n) = lg n microseconds = 1 second?

这是否意味着当 lg n 微秒 = 10^6 微秒时 lg n 微秒 = 1 秒,所以 n = 2^(10^6)?

对于每个时间 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的最大值,并填写table。

我将以前两个为例来帮助您完成其余的工作。因为一秒是 10^6 微秒。通过求解将 f(n) 与我们绘制 f(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

其余类似即可。

P.S。确保对从这些等式中得到的 n 的值进行下限,因为 n 是整数长度输入。