Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 比较指数函数的增长率?_Algorithm_Function_Big O_Time Complexity_Asymptotic Complexity - Fatal编程技术网

Algorithm 比较指数函数的增长率?

Algorithm 比较指数函数的增长率?,algorithm,function,big-o,time-complexity,asymptotic-complexity,Algorithm,Function,Big O,Time Complexity,Asymptotic Complexity,假设我们有两个函数f(n)=22n+1和g(n)=22n。我想用两种不同的方法比较这两个函数的增长率 方法一:取比例 让我们定义t(n)=f(n)/g(n)。然后 t(n)=f(n)/g(n) =22n+1/22n =22n+1-2n =22n 所以我们假设f(n)比g(n)增长快得多 方法二:使用对数 如前所述,设t(n)=f(n)/g(n)。现在,让我们以两边的圆木为底: lg t(n)=lg(f(n)/g(n)) =lg(22n+1/22n) =lg 22n+1-lg 22n) =2n+1

假设我们有两个函数f(n)=22n+1和g(n)=22n。我想用两种不同的方法比较这两个函数的增长率

方法一:取比例 让我们定义t(n)=f(n)/g(n)。然后

t(n)=f(n)/g(n)

=22n+1/22n

=22n+1-2n

=22n

所以我们假设f(n)比g(n)增长快得多

方法二:使用对数 如前所述,设t(n)=f(n)/g(n)。现在,让我们以两边的圆木为底:

lg t(n)=lg(f(n)/g(n))

=lg(22n+1/22n)

=lg 22n+1-lg 22n)

=2n+1-2n

现在,让我们以两边的圆木为基础:

lgt(n)=(n+1)lg2/n lg2

=(n+1)/n

忽略常数项,我们得到lgt(n)=1,这是一个常数,因此f(n)和g(n)应该具有相同的增长率

为什么我用方法二得到了错误的答案?

你错在哪里:“忽略常数项”

t(n)=(n+1)/n=n/n+1/n=1+1/n>1你错在哪里:“忽略常数项”


t(n)=(n+1)/n=n/n+1/n=1+1/n>1

我认为您的错误假设如下:

如果logf(x)/logg(x)是常数,那么f(x)=Θ(g(x))

这里有一个简单的反例。设f(x)=x2和g(x)=x。然后

日志f(x)=日志x2=log(2日志x)=日志2+log x

对数g(x)=对数x

在这里,logf(x)和logg(x)只相差一个常数(即log2),但显然f(x)和g(x)的增长率不同。换句话说,在获取两个函数的增长率日志后忽略常数是不安全的

你的逻辑还有第二个错误。如果你计算f(n)/g(n,你得到

22n+1/22n

=22n+1-2n

=22n

如果你记录两次,你就会

lg 22n

=lg 2n

=n

所以比率的对数不是(n+1)/n;相反,它是n,它仍然趋向于无穷大。这也会告诉你f(n)的增长速度比g(n)快得多


希望这有帮助

我认为您的错误假设如下:

如果logf(x)/logg(x)是常数,那么f(x)=Θ(g(x))

这里有一个简单的反例。设f(x)=x2和g(x)=x。然后

日志f(x)=日志x2=log(2日志x)=日志2+log x

对数g(x)=对数x

在这里,logf(x)和logg(x)只相差一个常数(即log2),但显然f(x)和g(x)的增长率不同。换句话说,在获取两个函数的增长率日志后忽略常数是不安全的

你的逻辑还有第二个错误。如果你计算f(n)/g(n,你得到

22n+1/22n

=22n+1-2n

=22n

如果你记录两次,你就会

lg 22n

=lg 2n

=n

所以比率的对数不是(n+1)/n;相反,它是n,它仍然趋向于无穷大。这也会告诉你f(n)的增长速度比g(n)快得多


希望这有帮助

这个问题似乎离题了,因为它是关于数学的。你假设
a/b=(log a)/(log b)
,这通常是错误的。这个问题似乎离题了,因为它是关于数学的。这个问题似乎离题了,因为它是关于数学的。你假设
a/b=(log a)/(log b)
这通常是错误的。这个问题似乎离题了,因为它是关于数学的。1+1/n在上面是以常数2为界的。@Scott Hunter是的,你是对的。我犯了一个错误,1+1/n在常数2上有界。@Scott Hunter是的,你是对的。我是在哪里弄错的