Algorithm 给定输入和时间的时间复杂度

Algorithm 给定输入和时间的时间复杂度,algorithm,time-complexity,Algorithm,Time Complexity,当给定输入和每个输入的时间时,获得函数时间复杂度的最简单方法是什么 例如: n | 10 20 40 80 160 320 640 time | 1 3 9 60 475 3732 29835 我怎样才能找到这个表的时间复杂度呢?假设您对多项式复杂度(O(n)、O(n1.5)、O(n2)…)感兴趣 估计函数实现的时间复杂度的最简单方法是查看最后两个最大的数据点 您将输入大小n从320增加了一倍(*2)到640。 您的执行时间增加了8倍(29835/3732

当给定输入和每个输入的时间时,获得函数时间复杂度的最简单方法是什么

例如:

n    | 10  20  40  80  160  320   640
time | 1   3   9   60  475  3732  29835

我怎样才能找到这个表的时间复杂度呢?

假设您对多项式复杂度(O(n)、O(n1.5)、O(n2)…)感兴趣

估计函数实现的时间复杂度的最简单方法是查看最后两个最大的数据点

您将输入大小n从320增加了一倍(*2)到640。 您的执行时间增加了8倍(29835/3732=7.994…)

因此,您的时间复杂度估计值为O(n3),因为23=8。 需要注意的是,只有在足够大的数据集(n很大)上进行测试,并且低阶项不再显著影响解决方案时,此估计才是正确的。此外,这是算法实现的时间复杂性,而不是算法本身

理解代码复杂性的另一个有用技术是在日志图上绘制它们(t与n)。因为决定复杂度的多项式的阶数将变成对数图上直线的斜率,这可以让你了解复杂度是什么,以及你是否达到了渐近区域。此外,这样的图可以让您了解低阶项、对数项等

然而,通常,通过一些理论分析,您知道算法的假定复杂性,然后您可以将实际计时与理论预测进行比较。这样可以避免评估过程中的许多陷阱