为什么n ^ 2 logn + n(logn)^ 2 = O(n ^ 2(logn)^ 2)的时间复杂度?

时间:2020-07-05 13:59:58

标签: time-complexity big-o

为什么n ^ 2 logn + n(logn)^ 2 = O(n ^ 2(logn)^ 2)的复杂度为何? 我认为这是对康奈尔(Cornell)期末考试论文(在线找到)的一种解决方案,但我不太确定它是否正确。

2 个答案:

答案 0 :(得分:2)

语句n²log n + n(log n)²∈O(n²(log n)²)有效。这并不是该功能可以提供的最佳上限。但这仍然是事实。注意,f(n)∈O(n²log n)⇒f(n)∈O(n²(log n)²)。这就是为什么人们从不(或不应该)写f(n)= O(g(n)),而应该写f(n)∈O(g(n))的原因。

另一方面,提供的界限有点​​保守,这很可能是因为对于较小的n值(n <1),n²log n小于n(log n)²。或者也许是因为这是测试的一部分,所以它也可能是测试学生是否完全理解f(x)∈O(g(n))意味着什么的方法(一个技巧问题,但一个有趣的技巧问题)。即使我在提出以下问题之前就已经添加了一个问题,下面的语句也是有效的:“n²log n + n(log n)²∈O(n²(log n))”。

假设更保守的界限可能取决于上下文(如果n非常小,并且1已经被认为是“大值”),那么通常会明确指定。

如果没有其他规定,人们会认为此函数的最佳上限是O(n²log n)。

答案 1 :(得分:1)

让我们考虑一下Wikipedia中解释的理论。

据记载,如果 f1 O(g1),而 f2 O(g2) f1 + f2 O(max(g1,g2))

让我们考虑 f1 =n²log n f2 = nlog²n 。 然后 f1 O(nlog log n),而 f2 O(nlog²n)

现在,对于 n> 1 ,由于 n> log n ,我们可以将不等式的两边乘以 n log n 到获得n²log n> nlog²n 。这证明 O(n²log n)> O(nlog²n),根据上面的定义,我们有: O(n²log n)