写之前罗嗦两句,这本书看起来好厚啊,字看起来好小啊,内容会不会很多啊,我能不能坚持下去啊,就算坚持下去会不会有预期的收获啊……
先在心里给自己一巴掌再说。这是我选择的道路,就是再难走,也要咬牙走完了再发牢骚和怨天尤人。
那就酱,开始吧。
第一章 算法在计算中的作用
综述,发展历程,实践中的作用等等。
第二章 算法基础
第二章没有太多的干货,大体介绍了一下本书要用的伪代码的编程原则,引用了排序数字这样一个典型例子,并介绍了一下两个排序用的方法:增量方法和分治法。这里稍微说一下其中涉及到的两个原则。
循环不变式的正确性:
- 初始化:循环的第一次迭代前,它为真。
- 保持:如果循环的某次迭代之前它为真,那么下次迭代之前它仍为真。
- 中止:再循环中止时,不变式为我们提供一个有用的性质,该性质能证明算法是正确的。
这三点看起来很眼熟,与高中所学的归纳法很想,但是有些区别,主要在于当时学的演绎推理过程没有验证结尾的合理性,我觉得,这是因为演绎推理是为了证明一个规律的合理性,所以提供了起点和循环的动力就可以达到目的。而要证明循环不等式是要抽象条件,获得结果。所以我们不仅要证明我们抽象出的规律是正确的,还要证明这个规律使用正确(在正确的位置得到结论)。
递归的三个步骤:
-
分解原问题为若干子问题,这些子问题是原问题规模较小的实例。
-
解决这些子问题,递归求解,若是问题规模较小,则直接求解。
-
合并这些字问题的解 成为原问题的解。
第三章 函数的增长
本章主要讲了表示复杂度的记号和一些常用的符号和函数
- 渐进紧确界:
类似于
- 渐进上界:
类似于
- 渐进下界:
类似于
- 非渐进紧确上界:
类似于
- 非渐进紧确下界:
类似于