算法设计发的顶顶顶顶顶与分析-课程实验指导书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《算法设计与分析》课程实验指导书
作者:姜文君杨明李梦娴
单位:信息科学与工程学院
2015年4月
一、实验教学目标
《算法设计与分析》旨在教会学生处理各种问题的方法,而通过实验,使学生能够把所学的方法用于具体的问题,并对所用算法进行比较分析,从而提高学生分析问题、解决问题的能力。只有通过实验,学生才能判定自己所拟算法是否正确,是否算得上一个较优算法。
通过该课程的实验,使学生对课堂中所讲述的内容有一个直观的认识,更好地掌握所学的知识。同时培养学生的实际动手能力,加强学生创新思维能力的培养。
二、实验教学主要内容
实验课外时间组织:实验课外消化理论课堂,老师对项目实验的讲解,并且做好相关的设计与实现。
实验课内时间组织:学生在学院机房集中上机,实验教师在机房采用辅导和自由讨论相结合的方式进行指导。最终完成实验项目的检查。
三、实验要求
《算法设计与分析》是计算机专业的专业核心课程,其先修课程有数据结构和至少一门高级语言。
算法设计与分析课程将覆盖计算机软件实现中的大部分算法,并具有一定的深度和广度,使学生对计算机常用算法有一个全盘的了解;通过此课的学习,学生应该具有针对所给的问题设计和实现高效算法的能力。通过上机实验,将使学生熟悉、掌握课堂教学中所学的大部分算法。
同时,上机实验是对学生在软件设计方面的综合训练,包括问题分析、总体结构设计、用户界面设计(可选)、程序设计基本技能和技巧等,以培养良好的
编程风格和科学作风。通过理论联系实际,以最终提高学生动手操作的能力以及分析问题的能力。为了顺利完成《算法设计与分析》课程实验,学生应做到:
1、熟练掌握一种高级程序设计语言及相关开发工具。
2、认真学习教材以及老师课堂讲解的项目实验相关内容,提前做好分析设
计和实现。
3、自行完成代码编写,不得超袭。实验课上课时间做好项目陈述和检查的
准备,也可以针对一些问题做相应的讨论。
4、遵守机房纪律,服从辅导教师指挥,爱护实验设备。
5、实验课上进行相关的程序检查和测试,结束后提交所有的文档和源程序。
四、评分细则
实验总分值80+附加分(实现了额外的程序实验等)
实验项目名称分值评分标准备注
1.分治算法实验(用分治法查找数组元素的最大值和
最小值)10考勤2分,设计4分,程序检查2分,文档2分
2.分治算法实验(用分治法
实现归并排序算法)10考勤2分,设计4分,程序检查2分,文档2分
3.动态规划法求解背包问题10考勤2分,设计4分,程序检查2分,文档2分
4.贪心算法实验(求解背包
问题)10考勤2分,设计4分,程序检查2分,文档2分
5.贪心法求最短路径10考勤2分,设计4分,程序检查2分,文档2分
6.回溯法实验(八皇后问题)10考勤2分,设计4分,程序检查2分,文档2分
7.分支限界法实验(单源最
短路径)10考勤2分,设计4分,程序检查2分,文档2分
8.随机算法实验(Sherwood线性时间选择
算法)10考勤2分,设计4分,程序检查2分,文档2分
五、实验项目
实验一分治算法实验(用分治法查找数组元素的最大值和最小值)
1.实验目的
通过上机实验,要求掌握分治算法的问题描述、算法设计思想、程序设计。
2.实验要求
在满足分治法的条件下,根据不同的输入用例,能准确的输出用例中的最大值与最小值。并计算出程序运行所需要的时间。
3.实验内容
用分治法查找数组元素的最大值和最小值
(1)问题描述
给定任意几组数据,利用分治法的思想,找出数组中的最大值和最小值并输出。
(2)实验步骤
①先解决小规模的问题,如数组中只有1个元素或者只有两个元素时候
的情况。
②将问题分解,如果数组的元素大于等于3个,将数组分为两个小的数
组。
③递归的解各子问题,将(中分解的两个小的数组再进行以上两个步骤
((最后都化为小规模问题。
④将各子问题的解进行比较最终得到原问题的解。
4.实验环境
VS2010、VS2012
5.实验预习要求
算法设计与分析、C/C++
6.评分标准
考勤2分,设计4分,程序检查2分,文档2分
7.实验报告
体现设计和主要算法的描述,并附上关键源程序的分析思路。
8.附录
计算程序运行时间的算法如下所示:
#include
#include
#include
using namespace std;
void main()
{
int i,j=0;
double k=0.0;
clock_t start,end,over;
start=clock();
end=clock();
over=end-start;
start=clock();
for(i=0;i<1000000000;i++)
j=j+i;
end=clock();
printf("The time is%6.3f",(double)(end-start-over)/CLK_TCK);
}
实验二分治算法实验(用分治法实现归并排序算法)
1.实验目的
通过上机实验,要求掌握分治算法的问题描述、算法设计思想、程序设计。
2.实验要求
了解用分治法求解的问题:当要求解一个输入规模为n,且n的取值相当大的问题时,如果问题可以分成k个不同子集合,得到k个不同的可独立求解的子问题,其中1 3.实验内容 (1)问题描述 给定任意几组数据,利用分治法的思想,将数据进行排序并将排好的数据进行输出。 (2)实验步骤 ①先解决小规模的问题。 ②将问题分解,将数组分为两个小的数组。 ③递归的解各子问题,将 中分解的两个小的数组再进行以上两个步骤