算法导论 总结索引 | 第一部分 第三章:函数的增长

研究算法的 渐近效率

1、渐近记号(40)

1、Θ:
theta数学定义
使得 对于足够大的n,函数 f(n) 能 夹入 c1g(n) 与 c2g(n) 之间,则 f(n) ∈ 集合Θ(g(n))
g(n) 是 f(n) 的一个渐近紧确界

g(n)本身 必为渐近非负

使用 Θ(1) 来意指 一个常量 或者 关于某个常量的一个常量函数

2、O:
Θ记号 渐近地给出 一个函数的上界和下界。当只有一个 渐近上界 时,使用O记号
O数学定义
f(n) = Θ(g(n)) 蕴含着 f(n) = O(g(n)),因为 Θ记号 是一个比O记号更强的概念
使用O记号,可以仅仅通过 检查算法的总体结构 来描述算法的运行时间(看循环)

3、Ω:
Ω记号提供了渐近下界
Ω数学定义
三种记号的图片总结
算法导论 总结索引 | 第一部分 第三章:函数的增长_第1张图片
4、相关定理
定理3.1
通常用它 从渐近上界 和 下界 来证明 渐近确界
当称 一个算法运行时间为 Ω(g(n)) 时,意指对每个n值,不管 选择什么特定的规模为n的输入,对这个输入的运行时间 至少是g(n)的常数倍

插入排序的运行时间 介于 Ω(n) 和 O(n2),上下界是尽可能 紧确的
例如:插入排序的运行时间不是 Ω(n2),因为存在一个输入(排好序),对该输入,插入排序 在Θ(n)时间内运行。然而,这与 插入排序的最坏情况 运行时间为Ω(n2)并不矛盾

5、等式和不等式中的 渐近符号
当渐近记号 独立于 等式(或不等式)的右边时(如 n = O(n2)中),指集合的成员函数:n∈O(n2)

当渐近记号 出现在某个公式中的时候,代表某个 不关注名称的匿名函数。例如:2n2+3n+1 = 2n2+Θ(n) 意指 2n2+f(n),其中f(n)是 集合 Θ(n)中的某个函数(这里f(n) = 3n + 1),按这种方式使用渐近号 可以帮助 消除一个等式中 无关紧要的细节与混乱

6、o:
O记号提供的渐近上界 可能是也可能不是 渐近紧确的。使用 o记号 来表示一个 非渐近紧确的上界(不能是紧确的)
o数学定义
与O记号的主要区别:
在f(n) = O(g(n))中,界 0<=f(n)<=cg(n) 对某个常量 c>0 成立;但在f(n) = o(g(n)) 中,界 0<=f(n)0 成立

在o记号中,当n趋于 无穷时,函数 f(n)相对于g(n)来说 微不足道了
3.1
7、ω:
ω记号 来表示一个非渐近紧确的下界
定义方式一:
ω定义方式1
定义方式二:
ω定义方式2
关系 f(n) = ω(g(n)) 蕴含着
ω记号性质
8、比较各种函数
传递性:
算法导论 总结索引 | 第一部分 第三章:函数的增长_第2张图片
自反性:(只有 可以是紧确的才有的性质)
算法导论 总结索引 | 第一部分 第三章:函数的增长_第3张图片
对称性:(只有 Θ)
对称性
转置对称性:(O与Ω,o与ω)
转置对称性
9、这些性质对 渐近记号成立,在两个函数f和g的渐近比较 和 两个实数 a与b的比较作类比
算法导论 总结索引 | 第一部分 第三章:函数的增长_第4张图片
但是 下列性质 不能携带到 渐近记号:
三分性:对任意的两个实数 a和b,下列三种情况 恰有一种必须成立:ab

虽然 任意两个实数都可以进行比较,但不是所有函数 都可以渐近比较。对两个函数 f(n)和g(n),也许 f(n)=O(g(n))和f(n) = Ω((g(n))都不成立。如:不能使用 渐近记号 来比较函数 n和 n1+sinn 中的幂值 在0与2之间摆动

2、标准记号与常用函数(45)

1、向下取整 与 向上取整
向下取整 向上取整
算法导论 总结索引 | 第一部分 第三章:函数的增长_第5张图片
2、log的一些性质
算法导论 总结索引 | 第一部分 第三章:函数的增长_第6张图片
最后一个式子的证明:对两边取 logb

3、多重函数
使用记号 f(i)(n) 来表示 函数f(n)重复i次作用于 一个初值n上。形式化地定义
多重函数的形式化定义
例:若 f(n) = 2n,则 f(i)(n) = 2in

4、多重对数:
非正数的对数 无定义,所以 只有在 lg(i-1)n > 0 时 lg(i)n 才有定义。区分 lg(i)n(从参数n开始,连续应用 对数函数i次)与 lg(i)n(n的对数的i次幂)
定义 多重对数函数为
多重对数

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