【问题标题】:Computing time from complexity classes从复杂度类计算时间
【发布时间】:2016-05-27 11:52:14
【问题描述】:

f 有一个复杂度类O(N(logN)^2),对于N = 1000,程序运行时间为 8 秒

计算N = 1,000,000时运行需要多长时间

我计算的时间是 32000 秒,但是我很困惑,因为 N 增长了 1000 倍,但时间增长了 4000 倍。我认为由于这是一个日志函数,N 的因子增加应该小于时间。

是我的计算有误还是有什么我不理解的地方?

【问题讨论】:

  • 因为这是一个对数函数 - 它是 N 乘以对数,所以一切正常。 N 是 1000 倍,(logN)^2 是 4 倍,这些乘以,所以你的计算似乎是正确的。

标签: algorithm big-o


【解决方案1】:

“因为这是一个日志函数”:不,这是一个 linpolylog 函数。因为有一个线性因子N 和一个多重对数因子log^2(N),即对数的多项式。

所以N 增长了一个因子1000log(N) 增长了一个因子2(毫无疑问小于1000)因此log^2(N) 增长了一个因子4,总因子4000 .

【讨论】:

    【解决方案2】:

    您的计算是正确的。 N(logN)^2 的增长速度比 N 快一点。事实上,N 考虑了这两种复杂性,但(logN)^2 是新月形且未绑定,因此比达到足够大输入的常数更大。

    【讨论】:

    • 你想到的是logN^2,它(logN)^2相同
    猜你喜欢
    • 2021-03-03
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 2021-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多