Algorithm 函数的渐近增长
如何确定给定的fn和gn是θ,ω,大ω,小ω,还是小ω? -我认为一种方法是绘制函数fn和gn的图形。即使通过绘制图表,我们怎么说fn在θ,ω,大ω,小ω,还是小ω?我不清楚。有人能提供更多的细节吗 我也不确定这是不是正确的方法。有谁能告诉我还有没有其他更简单的方法。Algorithm 函数的渐近增长,algorithm,computer-science,complexity-theory,Algorithm,Computer Science,Complexity Theory,如何确定给定的fn和gn是θ,ω,大ω,小ω,还是小ω? -我认为一种方法是绘制函数fn和gn的图形。即使通过绘制图表,我们怎么说fn在θ,ω,大ω,小ω,还是小ω?我不清楚。有人能提供更多的细节吗 我也不确定这是不是正确的方法。有谁能告诉我还有没有其他更简单的方法。 举个例子:fn=sq rootn和gn=n^sin n下面是使用极限计算给定fn和gn的Big-O的方法 在同一组轴上绘制fx和gx的大x值函数应有助于您立即识别渐近行为。首先,您需要了解所调用函数的复杂性。这可能会被记录下来,但
举个例子:fn=sq rootn和gn=n^sin n下面是使用极限计算给定fn和gn的Big-O的方法
在同一组轴上绘制fx和gx的大x值函数应有助于您立即识别渐近行为。首先,您需要了解所调用函数的复杂性。这可能会被记录下来,但在可能不是的情况下,您必须查看这些函数的源代码
在这个简单的例子中,您可以计算嵌套循环的数量,以了解事情需要多长时间。如果在从1到t的循环中有一个从1到n的循环,并且只有在内部调用的函数需要恒定的时间,或者只在内部进行算术运算,比如说,这就是t。如果你碰巧知道t你不能通过观察它来确定渐近增长。对于每种类型的渐近增长关系都有正式的定义,可以准确地解释它们的含义。通过从数学上确定两个函数是否满足关系的形式定义,可以确定它们是否适合给定的关系 例如,Big-O的几个等价形式定义之一如下: f=Og当且仅当lim[n->inf]fn/gn
从理论上讲,绘制函数图是不够的。尽管绘制了一张图表,然后根据它进行推理。而且,实际上,如果您将其绘制为足够大的值,则应该足够了 正确的方法是构造一个证明: 当存在正K和n0时,函数fn为Ogn,使得每n>n0,函数fn
让我们把它放在一起:K
它来自循环,但我这里的问题是计算函数的渐近符号。比如说fn=5n+1^4-n^2 gn=n+5^4+n+10^2。对于这样复杂的函数,我们怎么能说它在θ,大的oh,ω,小的o,小的ω中呢?用字号大小的输入,它们都是O1。对于多精度输入,数字可能会变得任意大,这取决于用于加法和加电的算法。如果使用标准教科书方法,将n和m相乘,其中n和m是正整数,取m*logn,相加取m+logn。对于平方和倍频,符号^2n和符号n。因此,在这种情况下,你的例子将是图表^2n。如果你使用更先进的算法,它可以更快地处理大的输入。@Charles:他说的不是计算这些函数的复杂性,而是函数本身的复杂性。我想你指的是L Hospitals规则。我认为对于Big-O,他们提到的条件是limx->infinityfx/gx=0这是小O的定义。Big-O只要求极限是有限的——它可以大于零。但如果我想避免那些数学计算,并且我更喜欢绘制图形,我能对所有5个渐近符号θ、大O、ω、小O和小ω都这样做吗?如果是的话,我如何从图中计算出来。我假设如果fn大于gn,那么它应该是ω和小ω。同样,如果fn低于gn,那么它就是大oh和小o。对吗?但是我不确定θ。我已经看过了所有5个函数的形式定义,我完全理解了上面描述的更简单的函数,fn=n,gn=n^2。但是我不理解的是复杂的函数,比如说1fn=5n+1^4-n^2gn=n+5^4+n+10^2 nlogn^2,n^2logn3 1/sq rootn,1/logn43^n+4n-17*n/17+6,3^n+3第一个例子很简单,可以使用我给出的经验法则。fn中的最高功率是4,gn中的最高功率也是4,因此f是Og、Omegag和Thetag。在第二个和第三个例子中,不清楚所涉及的最高幂是多少,因此必须取两个函数的比率并计算它们的极限。停止对抗不可避免:如果你想在更复杂的函数上计算渐近增长关系,你必须计算极限。这是没有办法的。如果你不知道如何计算极限,找一个微积分文本。如果我把上面的1推到这个1fn=5n+1^4.1-n^2gn=n+5^4+n+10^2,对于43^n+4n-17*floorn/17+6,3^n+3,它显然是一个指数函数。fn是n+4的幂,gn是n+3的幂,所以我想我们可以说,对于n的任何值,fn的增长速度都比gn快。因此fn=wgn和Omegagn。你同意吗?对于big oh来说,条件应该是fn,不管是否合适,我明白你的意思。然而,我不认为我清楚地理解你上面提到的关于fn的证明解释=奥根。你能详细说明你的理由吗=Ogn?对不起,证据中有一个错误:我忘了解释K。我还试图让它更清楚。现在好点了吗?