繁体   English   中英

二次函数的渐近紧界

[英]asymptotic tight bound for quadratic functions

在 CLRS(Cormen、Leiserson、Rivest 和 Stein的算法简介)中,对于 function

) = an 2 + bn + c f ( ) = an 2 + bn + c

他们说

/4, and n 0 = 2·max(| b |/ a , √(| c |/ a )).假设我们将常量c 1 = A / 4, c 2 = 7 / 4,和N 0 a / 4,和N = 2·MAX(| B | B | B | / k / k / k / k / k / k / k / k / k. / k / k / k / k / k / k / k / k / k / k / k / kmax (| b | b
那么0c 1 n 2an 2 + bn + cc 0 2 n所有。
) is Θ( n 2 ).因此f ( ) 是 Θ( n 2 )。

但是他们没有具体说明这些常量的值是如何来的?
我试图证明它,但不能。
请告诉我这些常数是怎么来的?

这些特定常数没有什么特别之处(除了在某个n值的上下文中它们将满足f的 theta 值的事实)。 没有魔法。 如果您可以找到其他正常数,从而使关系成立,那同样有效(实际上,对于任何0<k<1c1都可以是ka )。 虽然既然他们在那里,让我们分析一下c1

我们需要它满足以下不等式:

c1*n^2 <= an^2 + bn + c

让我们取它们的值: c1 = a/4 对于多少n我们可以保证不等式成立? 我们可以解决:

a/4*n^2 <= an^2 + bn + c
<==> 0 <= 3a/4*n^2 + bn + c

二次方程在(-b +- sqrt(b^2-3ac)) / (3a/2) ,由于我们有一个正的前导系数多项式,因此只有正解是有意义的,所以我们需要n > 2 * (sqrt(b^2-3ac) - b) / 3a假设b^2 >= 3ac是很好定义的(如果不是,那么二次是正定的,这甚至更好,因为它在任何地方 >=0 并且不等式适用于所有 n)。 我应该指出这是一个有效的解决方案,尽管我们会做更多的工作,直到我们到达本书的表示。

我们可以将分析分为两种情况。 首先,让我们假设|b|/a >= sqrt(|c|/a) 所以我们可以从sqrt(...)的内部上方用4b^2绑定,并且要求n > 2/3 * [sqrt(4b^2)-b]/a上限可以是2/3 * 3|b|/a = 2|b|/a

第二种情况,假设|b|/a < sqrt(|c|/a) 所以我们可以用4a|c|sqrt(...)内部的上方绑定 , 并且要求n > 2/3 * [sqrt(4a|c|)-b]/a上限可以是2/3 * 3*sqrt(a|c|)/a = 2sqrt(|c|/a)

所以在每种情况下,我们看到当我们取max(|b|/a, sqrt(|c|/a))时,我们的不等式在n > 2 * max时成立

对于c2也是如此。

这个想法是(对于足够大的n )在两个“纯”增长函数(只有一个比例常数)之间“捕获”感兴趣的 function。 在该图中,两个二次函数(以红色和蓝色绘制)被困在两个纯增长函数(以黑色绘制)之间,并指示了每种情况下n 0的最小可能值。

在此处输入图像描述

因此,一旦您选择了c 1c 2的值,您就可以通过将 ZC1C425268E68385D145074C17A4 与两个纯增长函数相交来找到n 0的值。

但是你并不关心获得n 0最小可能值——我们在这里做渐近,所以任何足够大的值都可以——所以你可以使用近似值来获得它的上限。

请参阅 davin 的回答,了解如何将n 0的上限转换为 CLRS 中给出的形式。

要证明任何多项式 f(n)=a0+a1*n+a2*n^2+a3*n^3+...+am*n^m 是 theta(n^m),请遵循两个简单的步骤。 步骤 1. 证明 f(n) 是 bigOh(n^m) 步骤 2. 证明 f(n) 是 bigOmega(n^m)

如果上述两个条件都成立,那么 f(n) 肯定是 bigTheta(n^m)。

这是一个概括。 通过设置 m=2,你得到 f(n) is bigTheta(n^2) 简单..不是吗?

那么它很容易 1.c1<=a + b/n + c/n^2 现在这里 a >0 而 b,c 是正数或负数 现在我们必须选择 n 的值,使得 b/n + c/n ^2 永远不会超过上述方程的 RHS 中的 a,否则它将变为负数,c1 也是如此。 但根据定义 c1 是一个正常数

所以我们要确保 a>b/n+c/n^2

如果我们选择 n=2*max(|b|/a, sqrt(|c|/a) ) 我们将得到 b/n + c/n^2 作为表达式,其值小于 a/2+a/ 4.

因此 a+b/n+c/n^2 将具有最大值为 a+a/2+a/4 和最小值为 a-(a/2+a/4) 这只是 c2 和 c1 的值.

c1=aa/2-a/4= a/4 c2=a+a/2+a/4= 7a/4

这个概念可以扩展到任何多项式的任何值。

干杯!!!

P(n) = an 2 + bn + c = an 2 ( 1 + b / ( an ) + c / ( an 2 )) = an 2 ( 1 ± ( | b | / a ) / n ± ( √ ( | c | / a) / n) 2
因此,如果我们以q = max( | b | / a, √( | c | / a )) 为例
P(n) ≤ an 2 ( 1 + ( q / n ) + ( q / n ) 2 )如果我们取n 0 = q ,我们将得到第二个常数
c 2 = 3a类似地用于下限

c1c2可以任意选择,只要0 < c1 < aa < c2 < infinity即可。 然后根据此计算n0 ,以便所有n>=n0满足不等式0 <= c1*n^2 <= an^2 + bn + c <= c2*n^2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM