对数算法的复杂性很大

时间:2010-06-20 20:18:58

标签: complexity-theory

我在计算Big-oh复杂性时遇到了更多问题。由于日志基本操作,我无法解决2个问题。以下是两个问题:

n =被操纵的数据项数

1)n ^ 3 + n ^ 2 log(base 2)n + n ^ 3 log(base 2)n

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

当日志有基数时,我很困惑。你如何计算这些的复杂性?如果可能的话,任何人都在关心如何通过一些细节来解释复杂性?

3 个答案:

答案 0 :(得分: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 :(得分:0)

您不需要“计算基数的复杂度”,您只需将其增长率与其他字词的增长率进行比较(请参阅此graph of logarithm growth rates,以便给您一个想法)

请注意,要解决这些问题,您无需关注日志的基础。

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

因此,决定哪个总和术语最大,你可以解决你的问题。

答案 2 :(得分:0)

在渐近复杂度的计算中,假设n非常大,因此可以忽略常数。当你有一笔钱时,只考虑最大的术语。

在您的示例中,结果如下:

1)n ^ 3 log(n)

2)n ^ 3