假设我们有两个函数 f(n) = 2 2 n+1和 g(n)=2 2 n。我想使用两种不同的方法来比较这两个函数的增长率。
方法一:取比
让我们定义 t(n) = f(n) / g(n)。然后
t(n) = f(n) / g(n)
= 2 2 n+1 / 2 2 n
= 2 2 n + 1 - 2 n
= 2 2 n
所以我们假设 f(n) 比 g(n) 增长得快得多。
方法二:使用对数
如前所述,令 t(n) = f(n) / g(n)。现在,让我们取两边的日志库:
lg t(n) = lg (f(n) / g(n))
= lg (2 2 n+1 / 2 2 n )
= lg 2 2 n+1 - lg 2 2 n )
= 2 n+1 - 2 n
现在,让我们取两边的日志库:
lg lg t(n) = (n + 1) lg 2 / n lg 2
= (n + 1) / n
忽略常数项,我们得到 lg lg t(n) = 1,这是一个常数,因此 f(n) 和 g(n) 应该具有相同的增长率。
为什么我使用方法二得到错误的答案?