Math 显示总和∑;i到n(逻辑)是O(非逻辑连接)

Math 显示总和∑;i到n(逻辑)是O(非逻辑连接),math,big-o,Math,Big O,我认为它有效的一种方式是我们可以说∑_i^{n(logi)} STD的效率有关:C++中的map < /代码>!软件的时间复杂度分析与编程、投票重新开放有关。但在问题中应该这样说,以使其更加明显。不过,如果是这样,我会同意重新开放。

我认为它有效的一种方式是我们可以说
∑_i^{n(logi)}<∑_我^{n(logn)}
然后试图证明它是O(logn),但从这里该怎么办呢?有什么建议吗?

如果你只需要证明和是O(n logn),你可以证明

∑logi≤ ∑logn=n logn

因此,您的函数是O(n logn)。如果您想更正式一些,可以使用常数c=1和n0=1

更有趣的问题是通过证明Ω(n logn)下界来证明和是Θ(n logn)。为此,请注意,总和大于或等于总和中最后n/2项的总和。总和中的每个项至少为log(n/2)。这给出了(n/2)log(n/2)=(n/2)(logn-log2)的下限,即Ω(n logn)。因此,你的总和是O(n logn)和Ω(n logn),所以它是Θ(n logn)


希望这有帮助

我真的对Ω(n logn)感到困惑,你能详细解释一下吗,非常感谢much@user3196567当然这样想:你的总和是log1+log2+…+日志。将其拆分为日志1+日志2+…+对数(n/2)+对数(n/2+1)+…+日志。这个总和肯定至少和log(n/2)+log(n/2+1)+log(n/2+2)+……+一样大日志。反过来,这个总和至少和log(n/2)+log(n/2)+…+一样大对数(n/2)=(n/2)对数(n/2)。然后你可以使用Ω的形式定义来证明(n/2)log(n/2)=Ω(n log n),结果如下。Downvoter:你能解释一下我能做些什么来改进这个答案吗?这个方法比较简单,但并不总是给出正确的答案。例如1+2+4+…+2 ^这是一个很好的答案,这显然与<>代码> STD的效率有关:C++中的map < /代码>!软件的时间复杂度分析与编程、投票重新开放有关。但在问题中应该这样说,以使其更加明显。不过,如果是这样,我会同意重新开放。