算法分析之-渐进记号
漸進記號
漸進記號分為:Θ()、Ω()、ω()、O()、o()
1. Θ記號
f(n)=Θ(g(n))f(n) = \Theta(g(n))f(n)=Θ(g(n))
存在正常數C1,C2和n0,使得對所有的n≥n0,存在正常數C_1,C_2和n_0,使得對所有的n \ge n_0,存在正常數C1?,C2?和n0?,使得對所有的n≥n0?,
都有0≤C1?g(n)≤f(n)≤C2?g(n),f(n)與g(n)在數量級上相等都有0 \le C_1*g(n) \le f(n)\le C_2*g(n),f(n)與g(n)在數量級上相等都有0≤C1??g(n)≤f(n)≤C2??g(n),f(n)與g(n)在數量級上相等
我們試著證明:我們試著證明:我們試著證明:
12n2?3n=θ(n2)\frac12n^2 - 3n = \theta(n^2)21?n2?3n=θ(n2)
第一步,我們必須確定有第一步,我們必須確定有第一步,我們必須確定有
C1n2≤12n2?3n≤C2n2C_1n^2\le\frac12n^2-3n\le C_2n^2C1?n2≤21?n2?3n≤C2?n2
第二步,我們將兩邊除以n2第二步,我們將兩邊除以n^2第二步,我們將兩邊除以n2
C1≤12?3n≤C2C_1\le \frac12 - \frac3n\le C_2C1?≤21??n3?≤C2?
C2≥1/2可以使任意n≥1,不等式右邊成立C_2\ge1/2可以使任意n\ge1,不等式右邊成立C2?≥1/2可以使任意n≥1,不等式右邊成立
C1≤1/14可以使任意n≥7,不等式左邊成立C_1\le1/14可以使任意n\ge7,不等式左邊成立C1?≤1/14可以使任意n≥7,不等式左邊成立
2. O記號
f(n)=O(g(n))f(n) = O(g(n))f(n)=O(g(n))
存在正常數C,n0,使得對所有的n≥n0,都有0≤f(n)≤C?g(n)存在正常數C,n_0, 使得對所有的n\ge n_0, 都有0\le f(n) \le C * g(n)存在正常數C,n0?,使得對所有的n≥n0?,都有0≤f(n)≤C?g(n)
f(n)在數量級小于等于g(n)f(n)在數量級小于等于g(n)f(n)在數量級小于等于g(n)
3. o記號
f(n)=o(g(n))f(n) = o(g(n))f(n)=o(g(n))
存在正常數C,n0,使得對所有的n≥n0,都有0≤f(n)<c?g(n);f(n)在數量級小于g(n)存在正常數C,n_0, 使得對所有的n\ge n_0, 都有0\le f(n) \lt c * g(n);f(n)在數量級小于g(n)存在正常數C,n0?,使得對所有的n≥n0?,都有0≤f(n)<c?g(n);f(n)在數量級小于g(n)
e.g.:2n=ο(n2);2n2≠o(n2)2n = \omicron(n^2);2n ^2 \neq o(n ^2)2n=ο(n2);2n2?=o(n2)
4. Ω記號
f(n)=Ω(g(n))f(n) = Ω(g(n))f(n)=Ω(g(n))
存在正常數C,n0,使得對所有的n≥n0,都有0≤C?g(n)≤f(n);f(n)在數量級大于等于g(n)存在正常數C,n_0, 使得對所有的n\ge n_0, 都有 0 \le C * g(n) \le f(n); f(n)在數量級大于等于g(n)存在正常數C,n0?,使得對所有的n≥n0?,都有0≤C?g(n)≤f(n);f(n)在數量級大于等于g(n)
5. ω記號
f(n)=ω(g(n))f(n) = ω(g(n))f(n)=ω(g(n))
存在正常數C,n0,使得對所有的n≥n0,都有0≤c?g(n)<f(n);f(n)在數量級大于g(n)存在正常數C,n_0, 使得對所有的n\ge n0, 都有 0 \le c * g(n) \lt f(n); f(n)在數量級大于g(n)存在正常數C,n0?,使得對所有的n≥n0,都有0≤c?g(n)<f(n);f(n)在數量級大于g(n)
性質
總結
以上是生活随笔為你收集整理的算法分析之-渐进记号的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 你必须会的DFS的递归实现与堆栈实现
- 下一篇: 算法分析之-主方法分析递归式