Algorithm 两台不同机器之间的时间复杂度问题

Algorithm 两台不同机器之间的时间复杂度问题,algorithm,time-complexity,Algorithm,Time Complexity,我遇到了下面的一个问题 特定算法的时间复杂度T(n)=3T(n-1)+1 因此,在渐近条件下,上述算法的时间复杂度为O(3^n) 在特定机器X上执行算法的实现需要t秒的n个输入 问题是,假设有一台机器Y的速度是机器X的27倍,那么在相同的t秒内Y可以处理多少个输入 我能在脑海中模糊地解决这个问题。。但无法再解释了 有没有一种简单的方法来解决这个问题?简短回答:快速机器将处理n+3项 由于时间复杂度为O(3n)。这意味着,如果我们用1增加n,它将花费大约三倍的时间。如果我们用2来增加n,那么它将花

我遇到了下面的一个问题

特定算法的时间复杂度T(n)=3T(n-1)+1

因此,在渐近条件下,上述算法的时间复杂度为O(3^n)

在特定机器X上执行算法的实现需要t秒的n个输入

问题是,假设有一台机器Y的速度是机器X的27倍,那么在相同的t秒内Y可以处理多少个输入

我能在脑海中模糊地解决这个问题。。但无法再解释了


有没有一种简单的方法来解决这个问题?

简短回答:快速机器将处理n+3项

由于时间复杂度为O(3n)。这意味着,如果我们用1增加n,它将花费大约三倍的时间。如果我们用2来增加n,那么它将花费9倍的时间,我们用3来增加n,那么工作量将增加27倍

因此,速度快27倍的机器将比速度慢的机器多处理三个项目。这当然只在渐近条件下成立:如果n已经很大。对于小n,方程中的其他项可能有更大的影响

更严格地说,我们可以这样看:速度越快的机器在同一时间所做的功是速度越慢的机器的27倍

这意味着:

T(f(n))=27×T(n)

其中f(n)是我们想要找到的函数。渐近T(n)标度为O(3n),这意味着我们有如下等式:

3f(n)=27×3n

因此认为:

f(n)=log3(27×3n)

因此:

f(n)=n+log3(27)

由于log3(27)等于3,因此意味着:


f(n)=n+3

你认为解决方案是什么?@WillemVanOnsem我认为27n是一个答案,因为无论是什么算法,Y都比X快27。但从另一个角度来看。。答案是n+3。。所以我不能理解idea@WillemVanOnsem你能帮我吗?非常感谢。我反复读了你的解释。我不能理解的一件事是,T(f(n))=27×T(n)。我把T(n)理解为处理n个输入所消耗的时间,因为它是时间复杂度。我说的对吗?@jwkoo:T(n)是机器的步数。因此,右边的T(n)是慢速机器处理n个元素的步数。我们知道,在相同的时间内,快速机器可以完成27*T(n),所以我们正在寻找f(n)可以满足的。哇。。。你是最棒的。我认为时间复杂度是指n个输入所消耗的时间。也许我必须从头开始学习这些概念。