《算法分析与设计》

算法分析与设计是计算机专业比较重要的一们专业课,研究计算科学中的典型问题以及解决他们的各种方法,并将各种算法进行分析、归纳、总结和分类,进而提高分析问题的能力。

 

常见的问题:排序、查找、串处理、图、组合、几何、数值。

用到的工具方法:蛮力法、分治法、减治法、变治法、时空权衡、动态规划、贪婪法、回溯法、分支界限(我们当时只讲到包括变治法之前的几类算法)

解决问题的五个步骤:问题的提出、理解问题、设计算法思路、伪代码描述、效率分析

 

简述各类工具方法,以及其典型的算法:

蛮力法:

定义:根据问题的表象,基于问题的描述和设计的概念,直接的解决问题的方法。

特点:几乎所有问题,首先想到蛮力法,普遍性;效率通常很低,但用其效率来衡量其他算法的效率高低;有些时候,蛮力法也有一定的实用性。

典型:冒泡排序、选择排序、穷举查找。

 

分治法:

定义:将规模较大问题分解为若干个规模较小的且性质不变的子问题,对子问题进行求解后,将其解进行组合,产生母问题的解。

分治法效率分析的统一模式:将规模n的大问题,分解成a个规模为nb得子问题,a>1,b>1,n=bk次方;此时,时间效率的递推关系式必是:T(n)=aT(n/b)+f(n),其中,f(n)是将总问题分解成子问题,以及将a个子问题的解进行合并而产生母问题解所需要的时间;通用分治递归式的闭合结果有三种情况,根据abd次方的关系划分——公式不好写出来,略。

典型:计算二叉树的高度,大整数的乘法,凸包问题。

 

减治法:

思路:将n的主问题的解与小规模子问题的解进行分析比较,找出他们之间的“关系”,再由底向顶进行迭代求解或由顶向底递归求解。如,汉诺塔问题

减治法分为三类:减常量规模、减常量因子规模、减可变规模。

典型:图的遍历,生成组合对象(Johnson算法),俄式乘法(除22)。

 

变治法:

主要步骤:1.变换;2.求解。

主要类型:

实例化简:问题不变,实例变得更简单。

改变表现:实例不变,表现的形式改变。

问题化简:将不熟悉的问题转化为熟悉的且已有现存算法的问题。

典型:高斯消去法,求逆矩阵,霍纳法则。

posted @ 2008-12-05 18:46  Kaffeeck  阅读(655)  评论(0编辑  收藏  举报