数量级的链式规则

时间:2019-05-13 03:20:56

标签: algorithm big-o

我正在寻找类似链式规则的数量级。假设:

y = O(x)
z = O(y)

然后:

z = O(x)

但是我们可以比这更通用。如果p是多项式:

y = O(x)
z = O(p(y))

然后:

z = O(p(x))

似乎没有一个很难证明。但是,我们可以将其进一步推广吗?

1 个答案:

答案 0 :(得分:1)

证明很简单。假设p(y) = an y^k + ... + a1 y + a0。作为y = O(x),存在一个c的常数y < c*x。因此,p(y) < an*c^k x^k + + ... + a1*c x + a0 = f(x)。如果为c <= 1,则p(y) < p(x)f(x) <= p(x)。如果是c > 1,我们可以说p(y) < c^k p(x)。因此,存在一个c' = c^k这样的常数p(y) < c' p(x)。因此,p(y) = O(p(x))

最终,我们以z = O(p(y))的身份证明了z = O(p(x))

要获得更精确的证明,可以对多项式p(x)的阶数使用数学归纳法。

要概括这种情况,我们应该尝试查找具有f(y) < c' f(x)(如果为y < c x)的特定属性的函数。函数的一大类别是f(x)不断增加,而f(cx) = \Theta(f(x))则不断增加。因此,所有这些功能都将满足传递性。例如,f(x) = sqrt(x)满足约束条件,但f(x) = 2^x不满足约束条件。