算法效率分析基础-算法四

主要内容:

介绍研究算法效率的通用框架

  • 介绍三种符号: O(读作O),Ω(读作omega),和Θ(读作theta).这些数学借来的符号已经成为讨论算法效率的特定语言
  • 使用通用框架系统对非递归算法进行分析.这种分析主要的工具是先定义一个代表算法运行时间的求和表达式,然后使用标准的求和法则对表达式进行化简
  • 使用通用架构系统对递归算法进行分析.在这里主要分析工具不是求和,而是一种称之为递推关系的特殊等式,我们会告诉大家如何建立这种递推关系,然后对其介绍一种求解方法.
  • 对斐波那契数列进行分析

分析框架

我们即将描述一个分析算法效率的一般性框架.首先必须支出有两种算法效率:时间效率(time complexity)和空间效率(space complexity).时间效率也称之为时间复杂度,指出正在讨论的算法运行的有多快;空间效率也称空间复杂度,关心算法需要的额外空间.如今额外的空间问题已经不是我们重点关注的问题.对于大多数问题来说,我们在速度上取得的进展远远大于空间上的进展

  1. 输入规模的度量
    几乎所有的算法对规模更大的输入都需要运行更长的时间.例如,需要更多的时间来对更长的数组排序,更大的矩阵相乘也需要花费更多的时间.所以在研究算法效率的时候把它当做一个以算法输入规模n为参数的函数是非常合乎逻辑的.在大多数情况下,选择什么参数是一目了然的.例如对于排序,查找,寻找列表的最小元素以及其他与列表有关的问题来说买这个参数就是列表的长度.对一个n次多项式
    在这里插入图片描述
    的求值问题来说,这个参数是多项式的次数,或者说是他系数的个数,系数的个数比次数大一

  2. 运行时间的度量单位
    掌握一下规律,我们不难发现一个算法中的基本操作:它通常是算法最内层循环中最费时的操作.例如,大多数排序算法是通过比较列表中的待排序元素来工作的.对于这种算法来说基本操作就是对键的比较.再举一个例子,求解数学问题的算法一般会设计四则运算:加减乘除,其中耗时最大的是除法,其次是乘法,最后是加减法.
    这样我们建立起了一个算法时间效率的分下框架.他提出,对于输入规模n的算法,我们可以统计他的基本操作执行次数,对其效率进行度量.我们接下来将介绍递归算法和非递归算法的执行次数.
    我们介绍该框架的一个重要应用
    算法效率分析基础-算法四_第1张图片
    C(n)是基本操作的执行次数

  3. 增长次数

算法效率分析基础-算法四_第2张图片
表中数字的数量级对于算法的分析具有深远意义.这些函数中增长最慢的是对数函数.实际上他的增长如此之慢,以至于我们认为:如果一个程序的算法具有对数级的基本操作次数,改程序对于任何实际规模的输入几乎都会在瞬间完成.还要注意虽然特定的操作次数会明显依赖对数的底,但是一下方程
在这里插入图片描述
允许他在不同的底之间转换,仅对对数部分以外的新增一个乘法常量.这就是为什么我们仅对函数的增长次数以及其常数感兴趣时,要忽略常数的底,简写为log n.

在效率的另一端是幂函数2的n次方和阶乘函数n!,一个需要记住的要点是:

一个需要指数级操作次数的算法只能用来解决规模非常小的问题

我们还可以用另一种方式算法效率分析基础-算法四_第3张图片
4. 算法最优,最差和平均效率
算法效率分析基础-算法四_第4张图片
一个算法的最差效率(worst-case efficiency)是指当输入规模为n的情况下在最坏情况下的效率.这时,相对于其他规模为n的输入,该算法运行时间最长.
通过确定算法运行时间上界,分析最坏情况下为我们提供了算法效率的一个非常重要的信息.
对于规模为n的算法来说,算法的运行时间不会超过最坏输入情况下的运行时间Cworst(n)

一个算法的最优效率(best-case efficiency)是指输入规模为n时算法在最优情况下的效率.对于顺序查找,Cbest(n)=1

平均效率是随机输入
算法效率分析基础-算法四_第5张图片
5. 分析框架概要
算法效率分析基础-算法四_第6张图片

渐进符号和基本效率类型

  • O(g(n))是增长次数小于等于g(n)(及其常数倍,n趋向于无穷大)的函数集
  • Ω(g(n))是增长次数大于等于g(n)(及其常数倍,n趋向于无穷大)的函数集
  • Θ(g(n))是增长次数等于g(n)(及其常数倍,n趋向于无穷大)的函数集

算法效率分析基础-算法四_第7张图片

  1. 符号O

算法效率分析基础-算法四_第8张图片

算法效率分析基础-算法四_第9张图片
2. 符号Ω
算法效率分析基础-算法四_第10张图片
3. 符号Θ
算法效率分析基础-算法四_第11张图片
算法效率分析基础-算法四_第12张图片
4. 渐进符号的有用特性
在这里插入图片描述
算法效率分析基础-算法四_第13张图片
5. 基本的渐进效率类型
算法效率分析基础-算法四_第14张图片

非递归算法的数学分析

算法效率分析基础-算法四_第15张图片
在这里插入图片描述

  1. 分析非递归算法效率的通用方案
    算法效率分析基础-算法四_第16张图片
  2. 算法分析常用的求和公式和法则
    算法效率分析基础-算法四_第17张图片
    算法效率分析基础-算法四_第18张图片
    算法效率分析基础-算法四_第19张图片
    算法效率分析基础-算法四_第20张图片
    算法效率分析基础-算法四_第21张图片

递归算法的数学分析

算法效率分析基础-算法四_第22张图片
算法效率分析基础-算法四_第23张图片
算法效率分析基础-算法四_第24张图片
算法效率分析基础-算法四_第25张图片

  1. 通用方案
    算法效率分析基础-算法四_第26张图片

算法效率分析基础-算法四_第27张图片
算法效率分析基础-算法四_第28张图片
算法效率分析基础-算法四_第29张图片
算法效率分析基础-算法四_第30张图片
算法效率分析基础-算法四_第31张图片

计算第n个斐波那契数

算法效率分析基础-算法四_第32张图片
算法效率分析基础-算法四_第33张图片
算法效率分析基础-算法四_第34张图片
算法效率分析基础-算法四_第35张图片
算法效率分析基础-算法四_第36张图片

算法经验分析

算法效率分析基础-算法四_第37张图片
算法效率分析基础-算法四_第38张图片

你可能感兴趣的:(算法)