我正在阅读“算法简介”,并在第3章陷入困境,作者说“可能更令人惊讶的是,当a> 0时,任何线性函数an + b
都是
在O(n ^ 2)“
任何人都可以解释如何证明这一点吗?
答案 0 :(得分:2)
根据定义,线性函数an + b
为O(n^2)
:对于足够大的n
,an + b
小于cn^2
且具有常量,例如{{1} }}
请注意c = 1
是一个上限,但不是一个紧。一旦你能证明一个更严格的界限(在这种情况下O(n^2)
上限),一个不那么紧的界限就没有用了。
答案 1 :(得分:1)
对于一个直觉,"大O"符号是从足够大的输入开始,成本函数不会比O(...)增长得快。这就是全部,它只是一个上限。
线性函数的增长速度不比二次函数,三次函数,指数函数等快。它们都增长得更快,因此an + b
为O(n^2)
,但O(n^3)
,{{ 1}},O(2^n)
等。
然而,它的增长速度比对数快 - 所以你不能说它是O(n!)
。