Algorithm 通过取对数比较两个复杂度函数?

Algorithm 通过取对数比较两个复杂度函数?,algorithm,math,Algorithm,Math,我发现在渐近比较两个函数时,取两边的对数是一种常用的技术(根据CLRS书籍中问题的一些解决方案) 但它是否总是认为两个函数取对数后的渐近关系表示它们原来的渐近关系 当比较两个指数函数时,我有点怀疑它是否有效 例如,log(3^n)=nlog3,log(2^n)=nlog2,那么它应该表明O(2^n)和O(3^n)处于相同的运行时间级别,这是不正确的。渐近边界隐式地包含一个被忽略的乘法常数 形式上,f(n)=O(g(n))意味着你可以找到n和C,这样n>n=>f(n)

我发现在渐近比较两个函数时,取两边的对数是一种常用的技术(根据CLRS书籍中问题的一些解决方案)

但它是否总是认为两个函数取对数后的渐近关系表示它们原来的渐近关系

当比较两个指数函数时,我有点怀疑它是否有效


例如,log(3^n)=nlog3,log(2^n)=nlog2,那么它应该表明O(2^n)和O(3^n)处于相同的运行时间级别,这是不正确的。

渐近边界隐式地包含一个被忽略的乘法常数

形式上,
f(n)=O(g(n))
意味着你可以找到
n
C
,这样
n>n=>f(n)

当取对数时,乘法常数变为加法常数,
log(f(n))
,并且
f(n)=O(g(n))log(f(n))=O(log(g(n))
不是真的

因此,如果你用对数来比较两个复杂度,你不能去掉一个乘法常数,而是一个加法常数,
n.Log(3)
确实不同于
n.Log(2)。

类似地,
O(n²)
O(n³)
不同,因为
2.Log(n)
3.Log(n)
没有相同的效力