算法分析与设计概论

目录:

引论及算法分析

算法设计模式

算法分析的数学基础

一、引论及算法分析

70年代Kunth出版了《The Art of Computer Programing》以算法为主线,确立了算法为计算机科学基础的重要主题。1974年获得图领奖

70年代后,算法作为计算机科学的核心,推动了计算机科学的飞速发展。

 

可计算理论

——计算模型

——可计算问题/不可计算问题

——计算模型的等价性---图灵/Church命题

计算复杂想理论:在给定的计算模型下研究问题的复杂想

  1. 固有复杂性
  2. 上界
  3. 下界
  4. 平均
  5. 复杂性问题的分类
  6. 抽象复杂性研究

算法正确性证明

——证明算法对所有输入都停止

——证明对每个输入都产生正确的结果

——程序调通不等于证明算法正确

算法复杂性分析

目的:预测计算所需资源量

复杂性测度:时间、空间、I/O是输入大小的函数

用途:为求解一个问题选择最佳策略、最佳设备

数学基础:离散数学、概率论、代数等。建立算法复杂性的数学模型,然后对模型化简。

 

算法复杂性分析的度量

1.时间复杂性:算法输入产生结果需要的原子操作或“步”数

                        时间复杂性是输入大小的函数

                        假设每一步执行需要常数时间

2.空间复杂性:输入产生结果所需要存储空间的大小

3.最坏复杂性:max

4.最小复杂性:min

5.平均复杂性:数学期望

 

算法分析的模型:单处理机、串执行、无并发

基本数据操作、基本数据类型

二、算法的设计模式

算法设计模式:暴力搜索、分治、图说与枚举、(分支界限、回溯)、随机化方法

 

算法实现方法:

递归与迭代

顺序、并行、分布式

确定性与非确定性

近似求解与精确求解

最优化设计方法:线性规划、动态规划、贪心算法、启发式算法

 

三、算法分析的数学基础

3.1计算复杂性函数的阶

用增长率描述算法的效率,忽略低阶项,保留最高项,忽略常系数

渐进效率:

——输入规模非常大

——忽略低阶项和常系数

——只考虑最高阶

典型的增长阶、记号等

 

同阶函数集合:

算法分析与设计概论

算法分析与设计概论

 

低阶函数集合:

算法分析与设计概论

 

高阶函数集合:

 

算法分析与设计概论

 

3.2和式的估计与界限

线性和:

级数

和的界限:

证明:

算法分析与设计概论

 

3.3递归方程

递归方程:是用小的输入值来描述一个函数的方程或不等式

求解递归方程的三个主要方法:

替换方法

猜想加数学归纳法证明。

——联想已知的T(n)

算法分析与设计概论

算法分析与设计概论

迭代方法:循环的展开递归方程,要知道通项公式。把递归方程转化为和式,再用求和解决。

算法分析与设计概论

Master定理:

算法分析与设计概论

算法分析与设计概论

算法分析与设计概论

对于红色部分,Master定理无能为力。

使用方法:

算法分析与设计概论

算法分析与设计概论