0

在我们有多项式的情况下:

f(n) = 8n^2 - 4n + 2

然后我们将有 g(n) = n^2

BigTheta(f(n)) = 0 <= c1g(n) <= f(n) <= c2g(n), n > n0

我知道要找到 c2,我们将添加所有系数:8 - 4 + 2 因此 c2 = 2,对吗?但是c1呢?c1 总是等于 1 吗?还是它总是等于最小的正系数?这里的一般规则是什么?

另一个例子,如果我们有:

f(n) = 9n^2 + 3n/2 + 1/4
g(n) =  n^2

我知道 c2 = 10.75 但是 c1 = 1 还是 1/4?

我正在寻找一个一般规则来找出 c1 给我一个紧密的界限。

非常感谢。

4

1 回答 1

1

很难说它会“永远”是什么。但是对于您的示例,8n^2 - 4n + 2 始终至少与 4n^2 一样大,因此您可以选择 c1 为 4(或任何更小的值:1、2 或 3)。我是怎么知道的?好吧,我们想要一个小于 f(n) 的 c1n^2 形式的函数;8n^2 小于 8n^2 + 2 (换句话说,我们可以忽略添加的项),但我们必须担心 -4n 项。因此,最简单的方法是说由于 4n 小于 4n^2,8n^2 - 4n^2 将始终小于 8n^2 - 4n + 2(因为我减去了更大的东西)。所以,

4n^2 = 8n^2 - 4n^2 <= 8n^2 - 4n <= 8n^2 - 4n + 2 <= f(n)

所以你可以选择c1等于4。

这些问题没有一个正确的答案。您只需要一个可以显示的常数,使 c1n^2 小于 f(n)。

对于第二个示例,您要添加所有术语,因此只需删除它们。9n^2 <= 9n^2 + 3n/2 + 1/4,所以选择 c_1 = 9。

我想作为一种通用算法,您可以采用最大阶系数并减去所有负系数(并忽略正系数)。假设你得到一个正值,这会给你一个正确的答案。如果没有,您将不得不摆弄 n0 或使 c1 小于 1。

于 2013-09-13T14:47:53.210 回答