[英]Finding the upper bound of a function
示例 3 找到 f(n) = n^4 + 100n^2 + 50 的上限
解:n^4 + 100n^2 + 50 ≤ 2n^4,对于所有 n ≥ 11 ∴ n^4 + 100n^2 + 50 = O(n^4 ) 且 c = 2 且 n0 = 11
在上面的问题中,解决方案说 n>11 并且 n-nought 是 11。谁能解释为什么是 11? 供参考 - 这是 Narasimha Karumanchi 的 Data Structures and Algorithms Made Easy 中的一个问题
它不是说n>11
而是说n4 + 100n2 + 50 ≤ 2n4
,对于所有n ≥ 11
。
这是真的吗? 您可以将公式中的n
替换为11
并自行检查。
11
是怎么获得的? 通过解决不等式。
它不是找到函数的上限。 它是对具有大 O 符号的函数的渐近分析。 因此,常数c = 11
对分析无关紧要,如果您能证明不等式对所有大于任何常数的n
均有效,例如c = 100
,则将被接受。 顺便说一下,您可以通过数学归纳法证明对于所有n > 11
都是正确的。
f(n) = n^4 + 100n^2 + 50
直观上, n^4
增长非常快; n^2
增长速度不如n^4
; 而50
根本没有增长。
但是,对于较小的n
值, n^4 < 50
; 此外, n^2
项前面有一个因子 100。 由于这个因素,对于较小的n
值,n^4 < 100 n^2。
但是因为我们直觉n^4
比n^2
增长得快得多,所以我们预计,对于足够大的 n, 100 n^2 + 50 < n^4
。
为了断言和证明这一说法,我们需要更精确地了解“for n enough”的含义。 你的教科书找到了一个准确的值; 他们声称:对于 n ≥ 11, 100 n^2 + 50 < n^4
。
他们是怎么发现的? 也许他们解决了n
的不等式。 或者也许他们只是通过注意到以下几点来直觉它:
100 n^2 = 10 * 10 * n * n`
n^4 = n * n * n * n
因此,一旦 n 大于 10, n^4
将是两者中较大的一个。
总之:只要 n ≥ 11, f(n) < 2 n^4
。 因此, f(n) 满足f(n) = O(n^4)
的教科书定义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.