2010-06-20 82 views
0

我计算大哦的复杂度时遇到了更多的问题。由于日志库操作,我无法解决两个问题。这里有两个问题:对数算法的大哦复杂度

N =#数据项被操纵

1)N^3 + N^2日志(基数为2)N + N^3日志(基数为2)N

2)2n^3 + 1000n^2 + log(基数4)n + 300000n

当日志具有基数时,我感到困惑。你如何计算这些复杂性?任何人都在意如何解释如何尽可能详细地解释复杂性?

回答

4

对数的基数是不相关的。你可以忽略它。因此:

1)它是O(n^3 log n),因为这是增长最快的术语。

2)出于同样的原因,它是O(n^3)

由于log base a (x) = log base b (x)/log base b (a)的基数不相关,所以任何对数都与常数不同。

我建议你阅读更多关于对数here的性质。

+1

留下一点点到学生:) – Stephen 2010-06-20 20:27:19

0

你并不需要“为基数计算的复杂性”,你可以比较其增长速度到其他条款的(见本graph of logarithm growth rates,给你一个想法)

注意,要解决这些问题,你不需要注意日志的基础。

O(x + y + z) === O(max(x,y,z)) 

因此,决定总结术语中哪一个最大,并且可以解决您的问题。

0

在计算渐近复杂度时,n被认为非常大,因此可以忽略常数。当你有一笔款项时,只考虑最大的期限。

在你的例子,这导致:

1)N^3的log(n)

2)N^3