算法 渐进 大θ定理 / 实例分析
2017-12-07 04:30
405 查看
定义:f(n)=O(g(n))成立 <-> 有自然数c与n0 使得对于所有n>n0的时候有f(n)< c*g(n)
[平方函数分析] f(n) =10n^2 + 4n+2
为什么说最高次项就决定了时间复杂度 -> 自己想想
定理2-7 对于任何实数x>0 以及任何一个实数 e>0,以下都是成立的
例题 - θ值分析
于有序数组中寻找某个元素 -> 折半查找
while的每次循环都会将搜寻范围减半
最坏假设执行m次,2^m = n -> m=log n = θ(log n)
附议:常规函数与log函数的O 以及 θ 均是本身
只是循环就一次耗时θ(log n),此外每次循环里面有1步要走
时间复杂性,仅仅考虑s/e步数,其他不考虑
因此总的时间复杂性 = θ(log n) * θ(1) = θ(log n)
常规函数的O, Ω,θ均是本身
[线性函数分析] f(n) = 3n+2 利用定义方法证明时间复杂度 = O(n)f(n) = 3n+2 < 4n 在n>2的时候成立 因此 f(n) 的时间复杂度 = 4n的时间复杂度 = O(n)
[平方函数分析] f(n) =10n^2 + 4n+2
同样的 f(n)= 10n^2 + 4n+2 < 11n^2 在n>5的时候成立 因此 f(n)的时间复杂度 = 11n^2的时间复杂度 = O(n^2)
为什么说最高次项就决定了时间复杂度 -> 自己想想
定理2-7 对于任何实数x>0 以及任何一个实数 e>0,以下都是成立的
//以下x与e均是常数,n是变量 (1). (log n)^x < (log n)^x+e -> 因为log是单增函数 (2). (log n)^x < n -> 根据增长率可得成立 (3). n^x < n^x+e -> n是单增函数 (4). n^x * (log n)^e < n^x+e (5). n^x < 2^n ->指数函数的性质
例题 - θ值分析
(1). n^3 + n^2 * log(n) < 2n^3 = O(n^3) n^3 + n^2 * log(n) > n^3 = Ω(n^3) => θ(n^3) (2). 2^n / n^2 > n^k / n^2 = Ω(n^k) 为什么对于任何k均成立,因为2^n大的 大于任何n^k都是成立的 (3). n^4 + (n^2.5) * (log n)^20 <2n^4 =>因为log n无论多少次方都小于n n^4 + (n^2.5) * (log n)^20 >n^4 => θ(n^4)
常用求和对应渐进
于有序数组中寻找某个元素 -> 折半查找
template<class T> int BinarySearch(T a[], const T& x, int n){ int left = 0; int right = n-1 ; while (left <= right) { int middle = (left + right)/2; if (x == a[middle]) return middle; if (x > a[middle]) left = middle + 1; else right = middle-1 ; } return -1;
while的每次循环都会将搜寻范围减半
最坏假设执行m次,2^m = n -> m=log n = θ(log n)
附议:常规函数与log函数的O 以及 θ 均是本身
只是循环就一次耗时θ(log n),此外每次循环里面有1步要走
时间复杂性,仅仅考虑s/e步数,其他不考虑
因此总的时间复杂性 = θ(log n) * θ(1) = θ(log n)
相关文章推荐
- .NET下文本相似度算法余弦定理和SimHash浅析及应用实例分析
- .NET下文本相似度算法余弦定理和SimHash浅析及应用实例分析
- PHP贪婪算法解决0-1背包问题实例分析
- python 读书笔记(2)算法的渐进分析
- 计算机算法分析之渐进记号
- Python排序搜索基本算法之希尔排序实例分析
- Python有序查找算法之二分法实例分析
- Adaboost算法原理分析和实例+代码
- PHP树的深度编历生成迷宫及A*自动寻路算法实例分析
- javaVM 判断对象实例何时回收 用的可达性分析算法,而非引用计数算法
- 实例分析首次适应算法、最佳适应算法、最差适应算法
- ZIP压缩算法详细分析及解压实例解释
- 算法分析及实例解析(二)——贪心算法、动态规划
- 计算机算法分析之渐进记号
- 【算法复杂度分析】主定理
- Python排序搜索基本算法之冒泡排序实例分析
- Python排序搜索基本算法之插入排序实例分析
- Java矩阵连乘问题(动态规划)算法实例分析
- ZIP压缩算法详细分析及解压实例解释