文档介绍:中国地质大学
研究生课程论文
课程名称: 算法设计与分析
教师姓名: 戴光明
研究生姓名:
研究生学号: ****
研究生专业: ***********
所在院系: 计算机学院
类别: √
日期:
评语
对课程论文的评语:
平时成绩:
课程论文成绩:
总成绩:
评阅人签名:
注:1、无评阅人签名成绩无效;
2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;
如有平时成绩,必须在上面评分表中标出,并计算入总成绩。
目录
第一章 算法导引 4
一、 算法及其特性 4
二、 算法分析 4
第二章 分治法 6
一、 一般方法 6
二、 二分检索法 6
三、 归并分类 7
四、 特斯拉森矩阵乘法 8
五、 总结 8
第三章 贪心算法 9
一、 一般方法 9
二、 背包问题 9
三、 最小生成树 10
四、 单源点最短路径 11
第四章 动态规划 12
一、 优化问题 12
二、 一般原理 12
三、 多段图 12
四、 每对结点间的最短路径 14
五、 最优二分检索树 14
六、 0-1背包问题 16
七、 调度问题 16
八、 TSP问题 17
第五章 基本检索与周游算法 18
一、 一般方法 18
二、 双连通图和深度优先检索 19
三、 决策树(博弈树) 21
第六章 回溯法 22
第七章 分支限界法 22
一、 一般方法 22
二、 回溯法解0-1背包问题 22
三、 分支限界法解0-1背包问题 23
第八章 总结 24
算法导引
课前题目:
编写程序:
编写两个矩阵相乘的程序;
如图,菱形ABCD中,E是AD的中点,EF垂直于AC交CB的延长线于F,求证四边形AFBE是平行四边形。
A
E
D
F
B
N
M
C
图1-1 平行四边形
算法及其特性
1、算法是什么?
算法是计算的方法。
2、什么是计算?
计算是基于规则的符号串的变换;
计算是基于规则的物理信息的变换;
计算是基于规则的信息的变换。
为了使计算机械化,图灵提出了图灵模型,在此基础上将理论进行技术实现,1946年诞生了第一台计算机(读写头、纸带、四元组),在内存条上进行输入输出。
算法的特性?
无二义性:由于算法是由机器执行的,所以算法的每一步都必须是确定的。
能行性(可计算性与不可计算性):算法的每一步机器都能够执行(计算机能够解决的问题是有限的)。
有限性(可计算性与计算复杂性)。
算法分析
算法分析就是分析算法的复杂性。
算法分析的计算机模型:
冯诺依曼计算机:串行执行的计算机。
均匀存储:假设存储量是够的。
基本运算的时间为整数。
两个重要的量:
问题的规模n。
频率的计数f(n)。
3、求时间复杂度:
冒泡排序:
Bubblesort A(1->n)
do i->1 to n
do j->i+1 to n
if A[j] < A[j] then exchange A[j] and A[j];
continue j;
continue I;
print A(i->n);
计算过程:
f(n) = nC1 + n(n+1)C2/2 + nC3
f(n) = n(C1 + C2/2 + C3) + n2C2/2
对以上公式进行简化,表示如下:
f(n) = n2C4 + nC5 (其中C4 = C1 + C2/2 + C3,C5 = C2/2)
进行分析后可知,运算的上界为:g(n)= O(n2)
当n >= n0时,若n足够大,f(n) <= Cn2 。
2)汉诺塔:
hanoi (int n,char left,char middle,char right)
{ if (n==1) printf (left-> right)
else
{ hanoi (n-1, left, right, middle)
print( left-> right)
hanoi (n-1, middle, left, right)
}
}
设时间为f(n),规模为n:
f(n) = 2f(n-1)+ C1=2(f(n-2)+ C1)+ C1=……= C12n
所以g(n)=O(2n)。
根据算法的时间界g(n)对算法进行分类:
两类:
多项式时间复杂度算法P(理论可行实际也可行):O(c) < O(logn) < O(n) < O(nlogn) < O(n2) < O(n3)
指数时间复杂度算法NP(理论可行实际不可行,需要限制规模或用近似解):O(2n) < O(n!) <O(