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

Algorithm 根据输入大小找出算法中的时间步数,algorithm,math,Algorithm,Math,假设您运行一个输入大小为1000的O(logn)算法,该算法需要110 操作。当您将输入大小加倍到2000时,该算法现在需要120次操作。是什么 当您再次将输入大小加倍到4000时,您对所需操作数的最佳猜测?大O符号用于指示算法在最坏情况下相对于输入大小的运行时间。它不能预测实际的操作次数。它不考虑低阶项和常数因子。让f(n)作为运算次数的估计,只需将您的问题放入方程中: f(n) = c * log(n) // O(log n) algorithm f(1000) = 110 f(2000)

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

大O符号用于指示算法在最坏情况下相对于输入大小的运行时间。它不能预测实际的操作次数。它不考虑低阶项和常数因子。

f(n)
作为运算次数的估计,只需将您的问题放入方程中:

f(n) = c * log(n) // O(log n) algorithm
f(1000) = 110
f(2000) = 120
f(4000) = ?
找到
c
你就会找到你的答案。但当然,这只是基于给定数据和
f
的限制行为的最佳猜测估计

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

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

解决方案中有一个与运行时开销相对应的加法常数。以下假设结果是Ɵ(logn),而不仅仅是O(logn)


如果你想做一般化的预测,你可以继续显式地求解常数,但基于两点这样做是相当可疑的。

O.O hmmmm,什么是?:OOne提示:O(logn)表示c*logn;现在解这个方程;c在两次算法运行中都保持不变。我们无法计算O(logn)算法的运算次数。O(logn)不等于logn。我们不知道常数,也不知道低阶项。@Kunal它只是一个近似值,一个数量级,而不是实际的运算次数。请注意,如果“它不能预测运算次数”,大O给出了算法运行时间的渐近上界。因此,您是对的,它没有预测任何关于确切运行时的信息。这就是为什么我在回答中说了最坏的情况。