【问题标题】:How to estimate the time complexity for insertion sort by measuring the gradient of a log-log plot?如何通过测量对数图的梯度来估计插入排序的时间复杂度?
【发布时间】:2014-02-08 00:45:45
【问题描述】:

这是我要分析的图表。我必须找到梯度(斜率),并从中推断出时间复杂度。

我发现斜率等于 1,91。如果是真的,我还应该怎么做?

【问题讨论】:

    标签: time complexity-theory gradient


    【解决方案1】:

    对数的商大约是2,去掉对数是什么意思?

    log(T(n)) / log(n) = 2
    log(T(n)) = 2 * log(n)
    log(T(n)) = log(n²)
    T(n) = n²
    

    T(n) 表示算法的时间复杂度。当然,我们是在渐近地谈论,即使用 Big O notation 我们这么说

    T(n) ∈ O(n²).
    

    您测量了大输入的值 2,并且假设即使对于所有较大的输入,它也将保持不变。

    您可以在多伦多大学的一位导师的页面上read more。它使用基本的微积分来解释它是如何工作的。尽管如此,这一切背后的想法是,对数从常数指数中产生乘法常数,从乘法常数中得到加法常数。

    另外关于剧情的解读,最近 Stack Overflow 上也出现了一个类似的问题:Log-log plot/graph of algorithm time complexity

    但请注意,这实际上只是对时间复杂度的估计。您无法仅通过在有限的输入集上运行算法来证明算法的时间复杂度。不过,这种方法可以让您很好地猜测要尝试使用 analysis of the algorithm 证明什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-18
      • 2021-05-30
      • 2011-09-01
      • 2013-03-14
      • 2013-06-06
      • 2022-11-23
      • 2021-03-05
      • 1970-01-01
      相关资源
      最近更新 更多