【发布时间】:2018-01-28 19:20:08
【问题描述】:
我正在寻求澄清如何确定特定函数的界限。
例如 1:A(n) = log(2^n) + n^(1/3) + 1000 我是否可以正确地说最后两个术语可以“忽略”,因为它们与第一个术语相比微不足道?因此界限是 O(2^n)?
例如 2: B(n) = n + (1/2)*n + (1/3)*n + (1/4)*n + ... + 1 我对此更不确定,但我猜测它会是 O(n)? 1 被忽略(根据例如 1 中 1000 的推理),这就是我确定的。
也在想如果 E.g. 中的分数2被修改,使得分母以不同的模式运行(例如(1/2)*n +(1/4)*n)+(1/8)*n ...),增长的顺序是比 E.g. 快/慢2?
感谢任何可用的指导!谢谢!
【问题讨论】:
-
对于 B(n) ,取出 n 个共同点,现在剩下 (1+1/2+1/3+...+1/n)。它是Harmonic Series,这个系列到
n的总和是log n。因此总复杂度为O(n log n)。 -
log X是O(log X)而不是O(X)(好吧,至少O(X)不会是最严格的界限)。阅读日志规则,log X^Y可以简化。 -
@Dukeling 在您链接的两个问题中,仅考虑了谐波系列的一部分。这里似乎不是这样。除非最后一个词
1真的是(1/n)*n。 -
@Nelfeal ???正如 Sanket 指出的那样,B(n) = n*(1+1/2+1/3+...+1/n),最后一部分正是问题计算。 1 = n*(1/n) 表示 n > 0,在数学中。
标签: algorithm