算法分析(简介)
来源:互联网 发布:钉钉绑定阿里云邮箱 编辑:程序博客网 时间:2024/06/01 08:31
算法分析即指对一个算法所需要的资源进行预测,内存,通信带宽或计算机硬件等资源偶尔是我们主要关心的,一个算法所需要的资源越多,该算法的复杂性越高,反之,所需要的资源越少,该算法的复杂性越低,在计算机的资源中,最重要的是时间和空间(即存储器)资源,因此算法复杂性有时间复杂性和空间复杂性之分,不言而喻,在对给定问题设计算法时,设计出复杂性尽可能低的算法是设计算法时追求的目标,如果给的问题已有多种算法时,选择复杂性最低者,是在选用算法时遵循的重要准则,更确切的说,算法的复杂性是算法运行时所需要的计算机资源的量,需要时间资源称为时间复杂性,需要的空间资源称为空间复杂性,如果分别用N,I,A,表示算法要解问题的规模,算法的输入和算法本身的函数,而且用C表示复杂性,那么应该有C=F(N,I,A)。其中F(N,I,A)是N,I,A的确定的三元函数,如果把时间复杂性和空间复杂性分开,并分别用T和S来表示,那么应该有T=T(N,I,A),S=S(N,I,A)。通常让A隐含在复杂性函数名当中,因而将T和S分别简写为T=T(N,I),S=S(N,I)。
由于时间复杂性与空间复杂性概念相同,计量方法相似,且空间复杂性的分析相对简单,所以现在主要讨论时间复杂性。
复杂性分析的常用符号:若存在两个正常数c,n0,对于任意n>n0,都有|T(n)|<=c|F(n)|,则称,T(n)集合在集合O(F(n))中。记作T(n)=O(F(n)),O读作“大欧”。他的直观含义是:T(n)的增长速度不会比F(n)差,大O表示法(big-Oh notation)表示的是时间运行的上限,同理可以定义下限Ω,如果上下限相等,还可以用Θ表示。
最坏情况和平均情况:1一个算法的最坏情况运行时间是在任何输入下运行时间的一个上界。知道了这一点,就能确保算法的运行时间不会比这一时间长。2对于某些算法,最坏情况还是出现的相当频繁的。3大致上看来,“平均情况”和最坏情况一样差。
增长的量级:运行时间的增长率,或称增长的量级,这样,我们就只考虑公式中的最高项,因为当n很大时,低阶项相当来说不太重要,,另外,还忽略最高次项的常数系数,,因为在考虑较大规模上的输入下,对于增长率来说,系数是次要的。
按照符号O的定义,容易证明它有如下运算规则:
(1) O(f)+O(g)=O(max(f,g));
(2) O(f)+O(g)=O(f+g);
(3) O(f)O(g)=O(fg);
(4) 如果 g(N)=O(f(N)),则O(f)+O(g)=O(f);
(5) O(Cf(N))=O(f(N)),其中C是一个正的常数;
(6) f=O(f);
- 算法分析(简介)
- 算法分析 方法简介
- 算法及其分析简介
- 课程简介及算法分析
- SPH算法简介(二): 粒子受力分析
- SPH算法简介(二): 粒子受力分析
- 生命游戏简介及算法分析(整理)
- 视频分析算法的原理简介
- 视频分析算法的原理简介
- 完美数简介及算法分析
- 视频分析算法的原理简介
- 麻省理工大学公开课笔记:算法导论(二)——课程简介及算法分析
- 算法导论<1、课程简介与算法分析>
- 算法复杂度分析中的符号(Θ、Ο、ο、Ω、ω)简介
- 《数据结构与算法分析》哈希表(散列)简介与实现
- 算法复杂度分析中的符号(Θ、Ο、ο、Ω、ω)简介
- 算法复杂度分析中的符号(Θ、Ο、ο、Ω、ω)简介
- hdu题目分析(简介)
- C++ 类中静态成员
- 大端(Big Endian)与小端(Little Endian)详解
- 从字符串中提取全部的数字并组成新字符串
- inverset="true" 详细解释
- C#中复杂控件的序列化
- 算法分析(简介)
- 单片机C语言函数之中断函数(中断服务程序)
- 学习Struts时遇到的错误,及解决方法
- 凌阳教育四个月就业班的培训课程大纲
- SPI概述 一种标准的四线同步双向串行总线。
- MFC架构之CCmdTarget类
- 记项目管理师考试的一天
- 新书《C#4.0权威指南》接受预订了!
- .net 无限分类