[英]Comparing growth rate of exponential function?
假设我们有两个函数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)应该具有相同的增长率。
为什么使用方法二会得到错误的答案?
您出问题的地方:“忽略常数项”。
t(n)=(n + 1)/ n = n / n + 1 / n = 1 + 1 / n> 1
我认为您的错误是假设以下情况:
如果对数log f(x)/对数log g(x)是常数,则f(x)=Θ(g(x))。
这是一个简单的反例。 设f(x)= x 2和g(x)= x。 然后
日志日志f(x)=日志日志x 2 =日志(2日志x)=日志2 +日志log x
和
日志日志g(x)=日志日志x
在这里,日志log f(x)和日志log g(x)只是一个常数(即log 2)不同,但是显然f(x)和g(x)以相同的速率增长并非正确。 换句话说,在取两个函数的增长率的对数后忽略常数是不安全的。
您的逻辑中还有第二个错误。 如果计算f(n)/ g(n),则得到
2 2 n +1 / 2 2 n
= 2 2 n + 1-2 n
= 2 2 n
如果您两次记录此日志,则会得到
lg lg 2 2 n
= lg 2 n
= n
因此,比率的对数对数甚至不是(n +1)/ n; 取而代之的是n,它仍趋于无穷大。 这也将告诉您f(n)的增长比g(n)快得多。
希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.