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