正确解决大O证明问题

时间:2011-01-21 23:05:38

标签: big-o discrete-mathematics

我目前正在参加一个课程,其中包含一个我还没有太多经验的主题 - Big-O。以下是我需要回答的问题类型的示例。请注意:这些问题类似于我需要做的功课,但是,数字等都会改变。

正在寻找解决方案。我正在寻找有关如何有效编写证明的解释。

问题看起来像这样(第一个等式是f(n),第二个等式是g(n)):

(a) 5^(log_5(n)) and 3n+2
(b) n^2 and sqrt(3)^(log(n))

我明白,要有效地编写证明,我必须证明

|f(x)| <= c|g(x)| for all x >= k

(k == n_0取决于你的教学方式) 所以对于第一个,我将问题简化为

n is O(3n+2)

我并不完全确定如何开始第二个。

从这里,我如何选择值c和k?它们只是简单的任意值,只是使方程式成立,还是有更多我缺失的东西?我见过很多例子,但这些都没有解释他们如何获得c和k的值。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

记住big-O的目的无论如何:你试图用一个足够大的输入来表示函数增长,其速度不比某个其他函数(它的上限)“快”。考虑到这一点, k 可以相当随意,但您可能希望选择不等式所包含的 k 的最小非负值。如果找不到明确的最小 k ,请选择一个有效的 k 。此外,由于我们通常在上限的最重要项上“抛出”常数,同样地,选择不等式所包含的最小正 c 。同样,如果你无法确定“最小的”,只需选择一个有效的。一旦你回想起 k c 所代表的内容,就不难记住这就是它们的用途。

你的老师/教授可能会有不同的想法,所以你可能希望仔细检查,但这几乎就是这个特殊的音乐专业人士从算术课程中读到的那些毕业生

希望有所帮助!