mor*_*ode 5 big-o asymptotic-complexity
我正在学习这本书中的大O表示法。
\n\n大O表示法的定义是:
\n\n\n如果存在常数 C 和 k 使得 |f (x)| ,我们说 f (x) 是 O(g(x)) \xe2\x89\xa4 C|g(x)| 每当 x > k 时。\n\n\n
现在这是第一个例子:
\n\n\n示例 1 证明 f (x) = x^2 + 2x + 1 是 O(x^2)。\n\n
\n解:我们观察到,当 x > 1 时,我们可以很容易地估计 f (x) 的大小,因为 x 1。因此
\n0 \xe2\x89\xa4 x^2 + 2x + 1 \xe2\x89\xa4 x ^2 + 2x^2 + x^2 = 4x^2
\n只要 x > 1。因此,我们可以以 C = 4 和 k = 1 为证,证明 f (x) 是 O(x^2)。即f(x)=x^2+2x+1\n1。(请注意,此处不必使用绝对值,因为当 x 为正数时,这些等式中的所有函数均为正数。) \n
老实说,我不知道他们是如何得到 c = 4 的,看起来他们直接跳到方程运算,而我的代数技能相当薄弱。然而,我通过[这个问题的公认答案]找到了另一种方法)在证明算法的 Big-Oh 时找到 C 和 N 的简单方法是什么?)表示如果 k = 1,则将所有系数相加来找到 c。因此 x^2+2x+1 = 1+2+1 = 4。
\n\n现在对于 k = 2,我完全迷失了:
\n\n\n或者,当 x > 2 时,我们可以估计 f (x) 的大小。当 x > 2 时,我们有 2x \xe2\x89\xa4 x^2 和 1 \xe2\x89\xa4 x^2。因此,如果 x > 2,则有\n\n
\n0 \xe2\x89\xa4 x^2 + 2x + 1 \xe2\x89\xa4 x^2 + x^2 + x^2 = 3x^2。
\n因此,C = 3 和 k = 2 也证明关系 f (x) 是 O(x^2)。\n
谁能解释发生了什么?他们使用什么方法?
\n第一种选择:
\n\nC=4?
\n\n来自C=4不平等
0 \xe2\x89\xa4 x^2 + 2x + 1 \xe2\x89\xa4 x^2 + 2x^2 + x^2 = 4x^2 = C*x^2, with C=4 (+)\nRun Code Online (Sandbox Code Playgroud)\n\n(+) 中的第二个不等式对于所有大于 1 的 x 都成立,因为逐项
\n\n2x < 2x^2, given x>1\n1 < x^2, given x>1\nRun Code Online (Sandbox Code Playgroud)\n\nk = 1? \n从上面我们已经证明,只要 x 大于 1,(+) 就成立,即
\n\n(+) is true given x > k, with k=1\nRun Code Online (Sandbox Code Playgroud)\n\n第二种选择:
\n\nk=2?
\n\n根据陈述,我们要研究 x 大于 2 时的 f(x),即
\n\nStudy f(x) for x > k, k=2\nRun Code Online (Sandbox Code Playgroud)\n\n给定 x > 2,显然
\n\n0 \xe2\x89\xa4 x^2 + 2x + 1 \xe2\x89\xa4 x^2 + x^2 + x^2 = 3x^2 = C*x^2, with C=3 (++)\nRun Code Online (Sandbox Code Playgroud)\n\n因为,对于 x>2,我们有
\n\n2x = x^2 given x=2 ==> 2x < x^2 given x>2\nfor x=2, 1 < x^2 = 4, so 1 < x^2 for all x>2\nRun Code Online (Sandbox Code Playgroud)\n\n这两个例子都表明 f(x) 是 O(x^2)。通过使用常数 C 和 k,请记住 f(x) 的 Big-O 表示法可以概括为以下内容
\n\n\n\n\n...我们可以说 f(x) 是 O(g(x)) 如果我们可以找到一个常数 C 使得 |f(x)| 小于 C|g(x)| 或所有 x 都大于 k,即,对于所有\n x>k。(*)
\n
这绝不意味着我们需要找到一组唯一的 (C, k) 来证明某个 f(x) 是某个 O(g(x)),只是某个集合 (C, k) 使得 ( *) 以上成立。
\n\n有关如何指定函数渐近行为的一些参考,请参阅以下链接:\n https://www.khanacademy.org/computing/computer-science/algorithms/asymptotic-notation/a/big-o-notation
\n