上界下界和准确界

Posted lfri

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了上界下界和准确界相关的知识,希望对你有一定的参考价值。

定义

$O$ 符号

定义:令 $f(n)$ 和 $g(n)$ 是从自然数集到非负实数集的两个函数,如果存在一个自然数 $n_0$ 和一个常数 $c>0$,使得

$$\forall n \geq n_0,\ f(n) \leq cg(n)$$

称 $f(n)$ 为 $O(g(n))$.

用极限的判断方法是:

$\displaystyle \lim_n \to \infty\fracf(n)g(n) \neq \infty$ 蕴含着 $f(n) = O(g(n))$.

$\Omega$ 符号

定义:令 $f(n)$ 和 $g(n)$ 是从自然数集到非负实数集的两个函数,如果存在一个自然数 $n_0$ 和一个常数 $c>0$,使得

$$\forall n \geq n_0,\ f(n) \geq cg(n)$$

称 $f(n)$ 为 $\Omega(g(n))$.

$\displaystyle \lim_n \to \infty\fracf(n)g(n) \neq 0$ 蕴含着 $f(n) = \Omega(g(n))$.

$\Theta$ 符号

定义:令 $f(n)$ 和 $g(n)$ 是从自然数集到非负实数集的两个函数,如果存在一个自然数 $n_0$ 和两个正个常数 $c_1, c_2$,使得

$$\forall n \geq n_0,\ c_1g(n) \leq g(n) \leq c_2g(n) $$

称 $f(n)$ 为 $\Theta(g(n))$.

$\displaystyle \lim_n \to \infty\fracf(n)g(n) = c$ 蕴含着 $f(n) = \Theta(g(n))$.

举例

1、像插入排序这样的算法,由于运行时间从线性到平方,因此没有准确界。

2、任一常函数是 $f(n)$ 为 $\Theta(g(n))$.

3、$f(n) = \Theta f(n+1)$?不一定。例如 $2^n$ 满足,$n!$ 不满足。

4、求 $f(n) = log(n!)$ 的确界

因为 $log(n!) = \sum_i=1^nlog(i)$,显然 $\sum_j=1^nlog(j) \leq \sum_j=1^nlog(n)$,即 $\sum_j=1^nlog(j) = O(nlogn)$;又 $\sum_j=1^nlog(j) \leq \sum_j=1^n/2log(\fracn2) = \fracn2log(\fracn2) = \fracn2logn - \fracn2log2$,那么 $\sum_j=1^nlog(j) = \Omega (nlogn)$,因此 $\sum_j=1^nlog(j) = \Theta (nlogn)$

 

以上是关于上界下界和准确界的主要内容,如果未能解决你的问题,请参考以下文章

了解上界和下界?在 Java 泛型中

《算法设计与分析》期末不挂科

最大子矩阵(手动降维)

算法分析中常用的几种渐进符号

scala-协变逆变上界下界

scala-协变逆变上界下界