在确定一个函数是否是另一个函数的大数据时,我仍然无法理解更复杂的证明,例如: (f(n)= O(g(n))。
示例:
F(n) http://upurs.us/image/63058.gif
G(n) http://upurs.us/image/63059.gif
我意识到我们希望在条件下满足证明,当n> 1时,S.T f(n)< = C1 * g(n)。湾我看过无数的教程,无法掌握这个概念。在列出的示例中,我将如何选择常量并使用该信息来完成证明?谢谢。
答案 0 :(得分:2)
您需要做的就是将f(n)
和g(n)
的重要字词视为n
转到infinity
。
现在考虑f(n)
:
和g(n)
:
现在结论:
答案 1 :(得分:0)
我认为这个问题确实有两个部分。首先是确定哪个函数(如果有的话)具有更大的渐近增长。第二个是证明你所确定的是正确的。
至于第一部分,我建议只查看序列中最高功率的术语。 f 和 g 的条款均为2.5( 5n ^ 2 * sqrt(n)和 6n ^ 2 * sqrt(n),分别)。在丢弃系数后,当 n 变为无穷大时,哪一个增长得更快?事实证明,丢弃系数会产生相同的精确函数(即 n ^ 2 * sqrt(n)),因此函数具有相等的渐近增长。这意味着我们可以证明 f = O(g)和 g = O(f)。
为了证明第一个,我们只需找到一些 C 和 k ,以便所有 n &gt; k ,我们有 C * g(n) &gt; F(N)。我认为最简单的方法之一是通过矛盾证明。也就是说,假设所有 C 和 k , f(n) &gt; C <所有 n&gt;的/ em> * g(n) ķ。然后,在减少表达式之后,我们可以选择 C 和 k 的大值来证明这个假设是错误的。