根据输入大小找出算法中的时间步数

时间:2013-10-11 12:58:42

标签: algorithm math

假设您运行输入大小为1000的O(log n)算法,算法需要110 操作。当您将输入大小加倍到2000时,算法现在需要120次操作。什么是 你再次将输入大小加倍到4000时所需操作次数的最佳猜测是什么?

3 个答案:

答案 0 :(得分:4)

Big-O表示法用于表示算法在最坏情况下相对于输入大小的运行时间。它不会预测任何有关实际操作数的信息。它没有考虑低阶项和常数因子。

答案 1 :(得分:1)

解决方案中存在一个与运行时开销相对应的加性常量。以下假定结果是Ɵ(log n)而不仅仅是O(log n)。

enter image description here

如果你想进行广义预测,你可以继续并明确地求解常数,但基于两点这样做是非常可疑的。

答案 2 :(得分:0)

f(n)为运算次数的估算,只需将问题放入等式:

f(n) = c * log(n) // O(log n) algorithm
f(1000) = 110
f(2000) = 120
f(4000) = ?

查找c,您就会找到答案。但是,当然,它只是基于给定数据和限制f行为的最佳猜测估计。

由于多种原因,这不是一个准确的预测:

  • 大O表示法仅给出了算法复杂度的限制行为,而不是实际的复杂度公式。
  • 操作次数可能在很大程度上取决于数据的性质,而不仅仅是多重性n
  • 在可能的数据(通常是最坏的情况)的特定情况下计算限制行为。