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