计算机算法设计与分析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

中国地质大学

研究生课程论文

课程名称:算法设计与分析

教师姓名:戴光明

研究生姓名:

研究生学号: ********** 研究生专业: *********** 所在院系:计算机学院

类别: A.博士B.硕士√ C.进修生

日期: 2017.01.13

评语

注:1、无评阅人签名成绩无效;

2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;

3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。

目录

第一章算法导引 (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)

第一章 算法导引

课前题目: 编写程序:

1、 编写两个矩阵相乘的程序;

2、 如图,菱形ABCD 中,E 是AD 的中点,EF 垂直于AC 交CB 的延长线于F ,求证四边形

AFBE 是平行四边形。

图1-1 平行四边形

一、 算法及其特性

1、算法是什么?

算法是计算的方法。 2、什么是计算?

1) 计算是基于规则的符号串的变换; 2) 计算是基于规则的物理信息的变换; 3) 计算是基于规则的信息的变换。

为了使计算机械化,图灵提出了图灵模型,在此基础上将理论进行技术实现,1946年诞生了第一台计算机(读写头、纸带、四元组),在内存条上进行输入输出。 3、 算法的特性?

4) 无二义性:由于算法是由机器执行的,所以算法的每一步都必须是确定的。 5) 能行性(可计算性与不可计算性):算法的每一步机器都能够执行(计算机能够解

决的问题是有限的)。

6) 有限性(可计算性与计算复杂性)。

二、 算法分析

算法分析就是分析算法的复杂性。 1、 算法分析的计算机模型:

1) 冯诺依曼计算机:串行执行的计算机。 2) 均匀存储:假设存储量是够的。 3) 基本运算的时间为整数。 2、 两个重要的量:

1) 问题的规模n 。 2) 频率的计数f(n)。 3、求时间复杂度:

1) 冒泡排序:

A

E

D

F

B

N

M

C

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)。

3、根据算法的时间界g(n)对算法进行分类:

两类:

1)多项式时间复杂度算法P(理论可行实际也可行):O(c) < O(logn) < O(n) < O(nlogn) < O(n2) < O(n3)

2)指数时间复杂度算法NP(理论可行实际不可行,需要限制规模或用近似解):O(2n) < O(n!)

3)P->NP方法:智能算法(GA)、随机过程。

相关文档
最新文档