找到尽可能紧的边界?

时间:2017-08-22 12:03:04

标签: big-o asymptotic-complexity upperbound

2^n −8 = O(2^n)
It says there are some positive constants c and n0 for which
0 <= f(n) <= cg(n) for all n >= n0

我解决了它:

2^n −8 <= c2^n
If c = 1, and n0 = 1
1-8 <= 1*1
-7<= 1
then for all n >= n0 it remains true.

这是真的,但我不明白尽可能紧密地找到界限是什么意思? 谁能解释一下?

1 个答案:

答案 0 :(得分:1)

尽可能紧密意味着找到具有最小增长顺序的函数g(n),使其仍然满足f(n) = O(g(n))。在你的例子中它相对简单(因此你的困惑,我相信) - 只删除除了增长最快的术语(2^n)之外的所有内容。

但是,让我们考虑一个例子,其中最严格的界限可能不会立即显而易见 - 斐波那契序列生成器:f(n) = f(n - 1) + f(n - 2)。查找上限的一种简单方法是进行近似,将n - 2替换为n - 1以提供f(n) ≈ 2 * f(n - 1),即O(2^n)。这不是 tightest 的约束 - 通过求解二次方程式,您会发现最严格的界限实际上是Ө(1.61...^n) - 有关详细信息,请参阅this page