对渐进符号的理解

高等数学和算法导论中都遇到这个东西,谈一谈自己的理解吧

O,Ω,Θ,ω和ο

我觉得是函数之间增长量级大小关系的一种比较

影响两个函数大小关系的主要是最高项的系数和函数本身的内在增长性质(幂次高低,什么函数等等)

Θ刻画的就是两个内在增长性质一样的函数,所以他们的大小只受常数倍倍的系数影响

ω:非渐进紧确的,f(n)=ω(g(n)),意味着f(n)其实和g(n)是内在增长性质不同的(因为对任何常数c,在无穷远处,总有f(n)是大于g(n)的)

ο:分析同上

Ω:可能是仅仅因为常数系数的影响,也可能是内在增长量级不同

O:分析同上

这几种渐进关系的性质(讨论性质,那么肯定是具有普世性的,不能因为个别函数在某种渐进关系上具有某种性质,就说这种性质对所有函数成立)也是不同的

Θ,Ω,O是具备自反性的,w和o是一定不具备自反性的

五种渐进关系都具备传递性

Θ具备对称性,其他四种是不具备这种性质的

Ω和O之间存在转置对称性

最后,函数有无穷多种(或者说函数的特性是各不相同,千变万化的),并不是所有函数之间都具有渐进关系,渐进关系本来就是只是从刻画函数之间的增长关系的来认识两个函数的,任何一种研究函数关系的方法不可能总是行得通的。

渐进关系对算法在很大规模上的输入研究其运行代价时是有价值的

时间: 2024-07-30 06:20:56

对渐进符号的理解的相关文章

如何理解算法中的渐进符号?

我们分析一个算法的时候,常常需要用到数学去描述其性能.最常用的的是?.比如在一段程序中有 For(I = 0,I < n ; I ++) For(J = 0; j < n ; j++); For (cnt = 0; cnt < n ; cnt ++); 我们会说其最坏情况是n^2+ n,这时候,实际上我们没有考虑机器因素,我们把每一条指令的执行时间都当做单位1来看,如果我们考虑到机器因素,比如在A机器上,每条指令执行的速度是c1,那么他的最坏情况是( n^2  +  n) / c1,而在

渐进符号

渐进符号 符号O: 比如说这里有个式子:     f(n)=O(g(n))  他表达了函数f(n)和g(n)的一种关系 什么关系呢? 数学定义如下: 存在c>0 n0>0 使得 n>=n0时: 0<=f(n)<=c * g(n) 恒成立. 我们来用这个式子证明 100(n^2)=O(n^3)       其中      f(n)  是100(n^2)   g(n)  是n^3 要证明  存在c>0 n0>0 使得 n>=n0时: f(n)<=c * g

优雅降级和渐进增强的理解:

优雅降级和渐进增强的理解:渐进增强 :针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果.交互等 改进和追加功能达到更好的用户体验.优雅降级 :一开始就构建完整的功能,然后再针对低版本浏览器进行兼容.区别:优雅降级是从复杂的现状开始,并试图减少用户体验的供给,而渐进增强则是从一个非常基础的 ,能够起作用的版本开始,并不断扩充,以适应未来环境的需要.降级(功能衰减)意味着往回看; 而渐进增强则意味着朝前看,同时保证其根基处于安全地带. 我觉得类似于软件的向上兼容和向下兼容

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

在算法分析中,经常会遇到以下几种渐进符号 渐近精确界记号:ΘΘ(big-theta) 渐近上界记号?:OO(big-oh) 渐近下界记号?:ΩΩ(big-omege) 非渐近紧确上界:o(小-oh) 非渐近紧确下界:ω(小-omege) 下面对渐进符号进行详解: 大写O符号f(n)=O(g(n)),这里f(n)是分析出来算法的执行次数的函数,O的定义:   当且仅当存在正的常数c和n0,使得对于所有的n>=n0,有f(n)<=cg(n).这里cg(n)就是函数f(n)的上限.讲到这是不是很迷糊

算法分析和设计_渐进符号的表示

小声音 big-O notation and its relatives-concepts that belong in the vocabulary of every serious programmer and computer scientist. 为什么要研究它 渐进表示法是算法分析里的基本术语,当听到别人说某段代码以"n的大O时间"运行,而另一段代码以"n平方的大O时间 运行",你需要知道背后的含义. 当某个问题可以用不同的算法解决时,需要用一个东西进行比

&amp;引用符号的理解

在学习栈的应用时突然理解了引用符号(&)的运用.实际上,在对函数进行调用的时候可以直接使用所需要传递的变量,然后在函数定义时的括号里面对所传递的变量加引用符号(&),这样就实现了对主函数里面的变量进行直接操作. 相当于是我在传递变量,而我用函数先对变量进行取地址且赋值到定义的参数变量上,这样新变量就拥有了原变量的地址,变为了原变量的二重身. 下面是简单建立一个链表的代码 1 #include<stdio.h> 2 #include<iostream> 3 #incl

麻省理工学院公开课-第二讲:渐进符号、递归及解法

http://blog.csdn.net/julius819/article/details/8267060 http://www.cnblogs.com/banli/archive/2013/05/21/3089900.html

BGP中正则表达式的理解

今天不经意和网上一个朋友聊到H3CTE 考试,不过很遗憾的上我考挂了,所以才和他讨论的,当时讨论BGP 的路由属性控制MED 和LOCAL-PECR ,突然帽出来个正则表达式,很郁闷的是,我一直都没怎么在乎这个东西,以前只是看到过,以为不怎么重要,今天他突然和我讲了下重要性,而且当时考H3CTE 就需要用上这个,汗~~~居然都不知道.和他聊完我立即找这相关方面的资料,找到了一点点,郁闷很难看懂啊,都是一些符号不好理解啊.没法呀,得学习^_^ 下面是对BGP 正则表达式的介绍 . 匹配任意单个字符

shell脚本中的特殊符号

1.{} 大括号:用法一:通配符扩展eg: ls my_{finger,toe}s这条命令相当于如下命令的组合:ls my_fingers my_toeseg: mkdir {userA,userB,userC}-{home,bin,data}我们将得到 userA-home, userA-bin, userA-data, userB-home, userB-bin,userB-data,userC-home, userC-bin, userC-data,这几个目录用法二:可用于语句块的构造,语