在我们有多项式的情况下:
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给我一个紧张的约束。
非常感谢。
答案 0 :(得分: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&lt; = 8n ^ 2 - 4n&lt; = 8n ^ 2 - 4n + 2&lt; = f(n)
所以你可以选择c1等于4。
这些问题没有一个正确的答案。您只需要一个可以显示的常量使c1n ^ 2小于f(n)。
对于第二个示例,您要添加所有术语,因此请删除它们。 9n ^ 2&lt; = 9n ^ 2 + 3n / 2 + 1/4,因此选择c_1 = 9。
我认为作为一般算法,您可以采用最大阶数系数并减去所有负系数(并忽略正系数)。假设您获得正值,那将为您提供正确的答案。如果没有,你要么必须摆弄n0,要么让c1小于1。