如何通过测量对数 - 对数图的梯度来估计插入排序的时间复杂度?

时间:2014-02-08 00:45:46

标签: time complexity-theory gradient

log-log plot of insertion sort running time

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

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

1 个答案:

答案 0 :(得分:2)

对数的商数约为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尝试证明的内容。