算法2:分析基础

一、算法的特征

(1)可行性:
(2)确定性:
(3)有穷性:
(4)输入:

(5)输出:

二、算法的评价

1.正确性
2.可读性
3.健壮性

4.复杂性

概要地描述一个分析算法效率的一般性框架 . 首先必须指出 , 有两种算法效率 : 时间效率和空间效率
时间效率 指出正在讨论的算法运行得有多快;
空间效率 关心算法需要的额外空间。

运行时间的度量单位
A. 把基本操作作为算法运行时间的度量单位。
所谓基本操作,就是算法中最重要的操作。它们对总运行时间的贡献最大。
B. 计算基本操作的运行次数。
掌握了这样一种规律,就不难发现一个算法中的基本操作:它通常是算法最内层循环中最费时的操作。例如,大多数排序算法是通过比较列表中的待排序元素(键)来进行工作的;对于这种算法来说,基本操作就是对键的比较。

三、算法的增长次数


四、算法的最优、最差和平均效率
一个算法的 最差效率是指当输入规模为n时,算法在最坏情况下的效率。。
一个算法的 最优效率是指当输入规模为n时,算法在最优情况下的效率。
无论是最差效率分析还是最优效率分析都不能提供一种必要的信息:在“ 典型”或者“随机”输入的情况下, 一个算法会具有什么样的行为。这正是 平均效率试图提供给我们信息。

摊销效率: 它并不适用于算法的单次运行,而是应用于算法对同样数据结构所执行的一系列操作。

五、渐进符号和基本效率类型
    O(g(n)) 是增长次数小于等于g(n) (以及其常数倍,n趋向于无穷大)的函数集合。

     n∈O(n2),100n+5∈O(n2), n(n-1) /2 ∈O(n2),n3∈/ O(n2),

    存在大于0的常数c和非负的整数n0,使得:对于所有的n≥ n0来说, t(n) ≤c g(n)

    Ω(g(n)),代表增长次数大于等于g(n)(以及其常数倍,n趋向于无穷大)的函数集合。

    n3∈ Ω(n2), n(n-1) /2 ∈ Ω(n2),但是100n+5 ∈/ Ω(n2)

    存在大于0的常数c和非负的整数n0,使得:对于所有的n≥ n0来说, t(n) ≥c g(n)

    Θ(g(n))是增长次数等于g(n) )(以及其常数倍,n趋向于无穷大)的函数集合。因此,每一个二次方程an2+bn+c在a>0的情况下都包含在Θ(n2)中

    存在大于0的常数c1,c2和和非负的整数n0,使得:对于所有的n≥ n0来说, c2g(n) ≤t(n) ≤ c1g(n)

六、1.渐进符号的有用特性—加法规则
定理:如果t1(n) ∈O(g1(n))并且t2(n) ∈O(g2(n)),则
     t1(n)+ t2(n)∈O(max{g1(n), g2(n)})
    (对于Ω和Θ符号, 类似的断言也为真)

    对于两个连续执行部分组成的算法,应该如何应用这个特性呢?它意味着该算法的整体效率是由具有较大的增长次数的部分所决定的,即它的效率较差的部分.

    2.渐进符号的有用特性乘法规则



猜你喜欢

转载自blog.csdn.net/shuishanshu30/article/details/80861625
今日推荐