算法中的一些符号 O(big-Oh) Ω(big-theta) Θ(big-theta)
2015-10-30 21:15
274 查看
一、概述
这是我们在算法的时间复杂度分析中经常会碰到的几个符号。符号后面括号里的是他们相应的读法。简单来说,第一个符号的意义相当于“小于等于”;第二个符号的意义相当于“大于等于”;第三个符号的意义相当于“等于”。其实还有一个o(little-oh),它的意义相当于“小于”,这里不做讨论。后面的讨论中都用比较通俗的话语来叙述,当然也是为了方便书写。二、意义
O(big-Oh):首先,这是我们在学习工作中描述算法时间复杂度用的最普遍的符号。它是渐进上界,其作用是将我们得到的算法在最坏情况下(worst case)时间复杂度表达式简化成对应的多项式(比如n^2等)。所以在我们证明的过程中,目的是证明我们的式子要“小于等于”目标多项式。
Ω(big-Omega):
这个符号我们一般用的比较少,一个是因为我们一般不会去考虑算法运行时间的下界,另一个是因为下界时间也不好证明。没错,他就是渐进下界,其作用是将我们得到的算法在最好情况下(best case)时间复杂度表达式简化成对应的多项式(也比如n^2等)。所以在我们证明的过程中,目的是证明我们的式子要“大于等于”目标多项式。
Θ(big-theta):
如果O和Ω可以用同一个多项式表示,那么这个多项式就是我们所要求的渐进紧的界了。其作用是将我们可以较准确地得到算法的时间复杂度表达式对应的多项式(也比如n^2等)。所以在我们证明的过程中,目的是证明我们的式子要“等于”目标多项式。
三、总结
一般来说,我们在学习工作中用O的频率比较高,它也是我们比较关心的算法描述符号。所以如果记不住就先记住它吧!相关文章推荐
- 动易2006序列号破解算法公布
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- C++实现一维向量旋转算法
- Ruby实现的合并排序算法
- C#折半插入排序算法实现方法
- 基于C++实现的各种内部排序算法汇总
- C++线性时间的排序算法分析
- C++实现汉诺塔算法经典实例
- PHP实现克鲁斯卡尔算法实例解析
- C#获取关键字附近文字算法实例