【问题标题】:How to calculate sum of log terms with different base?如何计算不同基数的对数项之和?
【发布时间】:2018-11-07 17:14:25
【问题描述】:

我评估了一个具有运行时复杂度的算法,该算法遵循以下日志系列:

(log2 n + 1) + (log3 n + 2) + (log4 n + 3) +.. ...+ (logn n + (n - 1))

如何根据“大 O”表示法计算该算法的时间复杂度?

【问题讨论】:

  • 不同对数基数之间的转换是恒定的,所以通常可以假设都是对数2
  • @juvian 好吧,对数的底取决于n

标签: algorithm data-structures time-complexity big-o complexity-theory


【解决方案1】:

分别考虑对数项和非对数项的总和。

log 项中,log2 n 最大,有 n-1 个项。因此总和小于 (n-1)log2 n,这是 O(n log n)。

非对数项之和为 (n-1)n/2,这是 O(n²)。

我们看到非对数项的总和支配了对数项的总和。因此,结果为 O(n²)。

【讨论】:

  • 非常感谢您回答这个问题。我认为这是我在互联网上遇到的关于这个问题的最佳答案。
  • 假设这些非对数项负责执行 (n-1) 次类似的操作(删除),但对数项负责让算法执行它打算执行的重要操作。那么,我可以从时间复杂度中排除非对数项的总和,即 O(n 平方),使其成为 O(n log n)?
  • 不知道你说的是哪种算法。你发布的只是公式。
  • 这是一个一般示例,我在其中暗示您在该算法中负责执行哪些日志和非日志术语?请把这些信息简明扼要地回答我。谢谢。
  • 没有办法给出明智的答案。如果您正在考虑不同的估算,您会得到另一个计算公式和另一个增长顺序。
猜你喜欢
  • 2015-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多