如何在theta证明中找到常量c1,c2和n0?

时间:2014-03-19 23:05:09

标签: performance algorithm optimization big-o complexity-theory

假设我想知道函数是否是theta组n^3的一部分。 经过一些代数步骤后,我设法得到以下函数:

c1 <= 4 / n - 4/n^2.5 + 4/n^4 <= c2

在那一步,我应该找到常量n0c1c2。我是谁 问告诉我,我应该猜测它们而不需要对零点进行精确分析。

但我怎么能猜到它们呢?如何以结构化的方式查找这些常量 处理像上面这样的复杂函数?

修改

如果函数已包含上限,则很容易找到上限,例如

c1 <= 10 - 1/n^2 <= c2

在这种情况下,上限c2将为10。 但在这种情况下,您如何处理c1n0

1 个答案:

答案 0 :(得分:2)

对于大证明,你不需要最好的常数。你可以做出“荒谬的”#34;选择如c1 = 0.001和c2 = 1000和n0 = 1000000,只要你能完成证明,一切都会好的。 (我的一位教授喜欢在讲课时这样做。)

如果由于某种原因你想要紧密的常数,那么你需要学习如何在一个间隔内最小化/最大化一个函数。微积分在这里很有用。请注意,例如,c1的紧密度和n0的紧密程度之间可能需要权衡。在你的第二个例子中,由于1 / n ^ 2正在减少,我们需要c1 <= 10 - 1 / n0 ^ 2,所以n0越大,c1越接近10。