Preface
在这里,我将记录下在参加算法分析与设计课程与阅读算法导论时觉得的应该“划线”的地方。
Intro
算法是一个满足下列条件的计算:
- 有穷性 / 终止性:有限步内必须停止;
- 确定性:每一步都是严格定义和确定的动作;
- 能行性:每一个动作都能够被精确地机械执行;
- 输入:有一个满足给定约束条件的输入;
- 输出:满足给定约束条件的结果。
算法分析的数学基础
计算复杂函数的阶
- 标记符号:同阶
Θ, 低/高阶
O/Ω, 严格低/高阶
ο/ω (定义,极限);
- 要会用渐进符号的性质:传递性、自反性、对称性、转置对称性;
- 并非所有函数都是可比的,
e.g.
n和
n1+sin n;
和式
其中:
- 对于单调通项,向积分放缩:
∫m−1nf(x)dx≤∑k=mnf(k)≤∫mn+1f(x)dx
- 对于这里的c是确定的常数,有例题:
递归方程
其中:
- 对于减去一个低阶项,有例题::
- 对于换元法,有例题:
- 涉及
⌈⌉,⌊⌋的处理,有例题:
将n放缩为取整 e.g.1
n分奇偶项讨论
证明中可能用到的几个事实:
-
n!=ο(nn)
而
lg(n!)=Θ(lg(nn))
-
n!=ω(2n)
-
lg(n!)=Θ(n lgn)
-
∀a>0,lgb(n)=ο(na)
对于几个符号,要会用定义,但不能总在定义里面。
ο 和
ω 的两种定义。
要会用性质:传递性、自反性、对称性、转置对称性。
三分性