这一节即将介绍算法分析与设计中的一些基本概念,包括算法的定义、算法的正确性证明、时间复杂度、空间复杂度以及相应的数学理论分析基础!
1.算法的定义
有意思的是,最早的算法是欧几里得的“求最大公因子算法”!
2.算法的正确性
所以设计了一个算法后,怎么说明它是正确的呢?严格的话需要进行算法的正确性证明。
其实算法的正确性证明是一个很复杂的问题,很多算法的正确性证明特别复杂!通常一个很常用的证明方法叫做:循环不变量方法,这个方法通常用来证明主要结构是循环结构的算法的正确性证明上!
例如下面一个例子:证明插入排序算法的正确性。
循环不变量是什么?
3. 算法的复杂性分析
一般会有时间复杂度和空间复杂度。
4. 计算复杂性的阶-同阶(
(1)同阶函数的定义:
从定义中可以看到,要证明同阶的关系,就是要找到满足条件的
(2)低阶函数的定义:
从定义中可以看到,要证明低阶的关系,关键是要要找到满足条件的
(3)高阶函数的定义
从定义中可以看到,要证明高阶的关系,关键是要要找到满足条件的
例子1:
例子2:
(4)严格低阶函数(
要证明严格低阶的关系,只需找到满足恒等式条件的
例3:
(5)严格高阶函数(
由定义可知:
同样的,
(6)函数阶的性质
可以将函数阶与
另外,有一些特殊的函数是没法比较的,例如:
5. Floor和Ceiling函数
它有一下性质:
6.和式的估计与界限
(1)直接求和的界限
(2)递归方程
求解递归方程的三个主要方法:
a.迭代法
来看下面的例子:
b. 替换法
来看下面的例子:
还可以“先猜再证”:
例如下面的例子:
c.Master 定理
直观的理解Master定理:
所以为了应用Master定理,
下面来看Master定理的几个例子:
(例4中
小结:至此,本小节讲解了算法分析与设计中的基本概念以及基本的数学知识,包括时间复杂度、空间复杂度,以及递归方程、Master定理等内容,这些知识对后面的算法分析与设计将会很有帮助!
参考资源:
【1】哈工大骆吉洲《算法分析与设计》PPT