Time complexity 如何计算时间复杂度?

Time complexity 如何计算时间复杂度?,time-complexity,Time Complexity,假设函数f的复杂度等级为O(N(logn)2),对于N=1000,程序在8秒内运行。 如何编写一个公式T(N)来计算任何大小为N的输入运行f所需的近似时间 答案如下: 8 = c (1000 x 10) c = 8x10^-4 T(N) = 8x10-4* (N log2 N) 我不明白第一行,10是从哪里来的? 谁能给我解释一下答案吗?谢谢 O(N(logn)^2)描述了运行时如何以N进行缩放,但它不是以秒为单位计算运行时的公式。事实上,Big-O表示法通常不会给出精确的标度函数本身,而是

假设函数f的复杂度等级为O(N(logn)2),对于N=1000,程序在8秒内运行。 如何编写一个公式T(N)来计算任何大小为N的输入运行f所需的近似时间

答案如下:

8 = c (1000 x 10)
c = 8x10^-4 
T(N) = 8x10-4* (N log2 N)
我不明白第一行,10是从哪里来的? 谁能给我解释一下答案吗?谢谢

O(N(logn)^2)描述了运行时如何以N进行缩放,但它不是以秒为单位计算运行时的公式。事实上,Big-O表示法通常不会给出精确的标度函数本身,而是在N变大时给出它的上界。看(有一张很好的图片显示了最后一点)

如果您对函数的实际运行时感兴趣(特别是在非渐近区域,即小N),一个选项是实际运行函数并测量它。对N的多个值执行此操作,在某些网格上选择(可能具有非线性间距)。然后,可以在这些点之间进行插值

我不明白第一行,10是从哪里来的?可以 有人给我解释一下答案吗?谢谢

T(N)是最大时间复杂度
c
是常数或
O(1)
时间,它是算法速度中不受输入大小影响的部分。
10
来自四舍五入以简化数学。它实际上是
9.965784
,这是
1000
log2
,例如

N x log2n
is
1000 x 10

1000 x 9.965784
定义
S(N)=N(对数N)^2

如果您可以假设S(N)限制程序的所有N>=1000

然后你可以用三个好的规则来限制你的执行时间:

S(1000) -  T(1000)
S(N)    -  T(N)

T(N) <= S(N)* T(1000)/S(1000) for all N >=1000

S(1000) approx 10E4
T(1000) = 8

T(N) <= N(log N)^2 * 8 / 10E4
S(1000)-T(1000)
S(N)-T(N)
T(N)=1000
S(1000)约10E4
T(1000)=8

我猜这是个错误:(log1000)^2=9=>8=c(1000x9)你是怎么得出“答案”的?哦。答案可能不正确。对不起,这似乎是高中代数课上的问题,不是编程问题。只是想补充一点,复杂函数不是这样工作的。。还有一个不成文的O(1)常数,当N很小时,它可能很重要,其中1000仍然很小。我不记得上一次有人试图得到t(N)方程,它应该是1000*10^2吗?