算法3_绪论

算法分析

算法分析(Algorithm Analysis):对算法所需要的两种计算机资源——时间和空间进行估算

  • 时间复杂性(Time Complexity)
  • 空间复杂性(Space Complexity)

算法分析的目的:

  • 设计算法——设计出复杂性尽可能低的算法
  • 选择算法——在多种算法中选择其中复杂性最低者

时间复杂性分析的关键:

  • 问题规模:输入量的多少;
  • 基本语句:执行次数与整个算法的执行时间成正比的语句

渐进符号

1、大O符号
若存在两个正的常数c和n0,对于任意n≥n0,都有T(n)≤c×f(n),则称T(n)=O(f(n)),或称算法在O(f(n)中。
2、大Ω符号
若存在两个正的常数c和n0,对于任意n≥n0,都有T(n)≥c×g(n),则称T(n)=Ω(g(n))
3、Θ符号
若存在三个正的常数c1、c2和n0,对于任意n≥n0都有c1×f(n)≥T(n)≥c2×f(n),则称T(n)=Θ(f(n))

最好、最坏和平均情况

如果问题规模相同,时间代价与输入数据有关,则需要分析最好情况、最坏情况、平均情况。

  • 最好情况:出现概率较大时分析
  • 最差情况:实时系统
  • 平均情况:已知输入数据是如何分布的,
    通常假设等概率分布

非递归算法的分析

一般步骤:

  1. 决定用哪个(或哪些)参数作为算法问题规模的度量
  2. 找出算法中的基本语句
  3. 检查基本语句的执行次数是否只依赖于问题规模
  4. 建立基本语句执行次数的求和表达式
  5. 用渐进符号表示这个求和表达式
    在这里插入图片描述

关键:建立一个代表算法运行时间的求和表达式,然后用渐进符号表示这个求和表达式。

算法的后验分析

一般步骤:

  1. 明确实验目的
  2. 决定度量算法效率的方法,为实验准备算法的程序实现
  3. 决定输入样本,生成实验数据
  4. 对输入样本运行算法对应的程序,记录得到的实验数据
  5. 分析得到的实验数据

慕课:算法及其时间复杂度

算法A解问题P:
把问题P的任何实例作为算法A的输入,每步计算是确定性的。A 能够在有限步停机,输出该实例的正确的解。

基本运算与输入规模
•算法时间复杂度: 针对指定基本运算,计数算法所做运算次数
•基本运算:

  • 排序: 元素之间的比较
  • 检索: 被检索元素 x与数组元素的比较
  • 整数乘法: 每位数字相乘(位乘) 1 次
    m位和n位整数相乘要做mn次位乘
  • 矩阵相乘: 每对元素乘 1 次
    ij矩阵与jk矩阵相乘要做ijk次乘法
  • 图的遍历: 置指针

•输入规模:输入串编码长度通常用下述参数度量:

  • 排序:数组中元素个数 n
  • 检索:被检索数组的元素个数 n
  • 整数乘法:两个整数的位数 m, n
  • 矩阵相乘:矩阵的行列数 i, j, k
  • 图的遍历:图的顶点数 n, 边数 m

•算法基本运算次数可表为输入规模的函数
•给定问题和基本运算就决定了一个算法类

算法的两种时间复杂度

对于相同输入规模的不同实例,算法的基本运算次数也不一样,可定义两种时间复杂度
最坏情况下的时间复杂度 W(n) 算法求解输入规模为 n 的实例所需要的最长时间
平均情况下的时间复杂度 A(n) 在给定同样规模为 n 的输入实例的概率分布下,算法求解这些实例所需要的平均时间

A(n) 计算公式
平均情况下的时间复杂度 A(n)
设 S 是规模为 n 的实例集 实例 I∈S 的概率是 PI
算法对实例 I 执行的基本运算次数是 tI
在这里插入图片描述

在某些情况下可以假定每个输入实例概率相等

算法的伪码表示

赋值语句:<-
分支语句:if …then … [else…]
循环语句:while, for,repeat until
转向语句:goto
输出语句:return
调用:直接写过程的名字
注释://…

函数的渐近的界

大O符号
设 f 和 g是定义域为自然数集 N上的函数。 若存在正数 c 和 n0,使得对一切n>=n0有0<=f(n)<=cg(n)成立, 则称 f(n) 的渐近的上界是 g(n),记作
f (n) = O(g(n))

大Ω符号
设 f 和 g是定义域为自然数集N上的函数。若存在正数 c 和 n0,使得对一切 n>=n0有0<=cg(n)<=f(n)
成立,则称 f(n) 的渐近的下界是 g(n),记作
f (n) = Ω(g(n))

小o符号
设 f 和 g是定义域为自然数集 N上的函数。若对于任意正数 c 都存在n0,使得对一切n >=n0有0 <=f(n) < c g(n)成立, 则记作
f (n) = o(g(n))

小ω符号
定义:设 f 和 g是定义域为自然数集 N上的函数。若对于任意正数 c 都存在 n0,使得对一切 n >=n0
0<=cg(n)<f(n)成立, 则记作
f (n) = ω(g(n))

Θ符号
若 f (n) = O(g(n)) 且 f (n) = Ω(g(n)),则记作
f (n) = Θ(g(n))

有关函数渐近线的界的定理

定理1:
设f和g是定义域为自然数集合的函数。
在这里插入图片描述
一些重要结果:

在这里插入图片描述在这里插入图片描述
定理2:
设f,g,h是定义域为自然数集合的函数。
在这里插入图片描述
定理3:
假设函数f 和g的定义域为自然数集,若对某个其它函数 h, 有 f =O(h) 和 g=O(h), 那么 f + g = O(h)。

该性质可以推广到有限个函数。算法由有限步骤构成。若每一步的时间复杂度函数的上界都是 h(n),那么该算法的 时间复杂度函数可以写作 O(h(n))。

几类重要的函数

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值