算法设计与分析实验指导书(080200050)

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

算法设计与分析实验指导书

东北大学软件学院

2014年

目录

算法设计与分析 (1)

实验指导书 (1)

前言 (3)

实验要求 (4)

实验1 分治法的应用(2学时) (5)

1.实验目的 (5)

2.实验类型 (5)

3.预习要求 (5)

4.实验基本要求 (5)

5.实验基本步骤 (7)

实验2动态规划(2学时) (9)

1.实验目的 (9)

2.实验类型 (9)

3.预习要求 (9)

4.实验基本要求 (9)

5.实验基本步骤 (10)

实验3 回溯法(4学时) (12)

1.实验目的 (12)

2.实验类型 (12)

3.预习要求 (12)

4.实验基本要求 (12)

5.实验基本步骤 (13)

前言

《算法设计与分析》是一门面向设计,处于计算机科学与技术学科核心地位的教育课程。通过对计算机算法系统的学习,使学生理解和掌握计算机算法的通用设计方法,培养对算法的计算复杂性正确分析的能力,为独立设计算法和对算法进行复杂性分析奠定基础。

要求掌握算法复杂度分析、分治法、动态规划法、贪心法、回溯法、分支限界法等算法的设计方法及其分析方法。能将这些方法灵活的应用到相应的问题中,并且能够用C++实现所涉及的算法,并尽量做到低复杂度,高效率。

通过本课程的实验,使学生加深对课程内容的理解,培养学生严密的思维能力,运用所学知识结合具体问题设计适用的算法的能力;培养学生良好的设计风格,激励学生创造新算法和改进旧算法的愿望和热情。希望同学们能够充分利用实验条件,认真完成实验,从实验中得到应有的锻炼和培养。

希望同学们在使用本实验指导书及进行实验的过程中,能够帮助我们不断地发现问题,并提出建议,使《算法设计与分析》课程成为对大家有益的课程。

实验要求

《算法设计与分析》课程实验的目的是为了使学生在课堂学习的同时,通过一系列的实验,使学生加深理解和更好地掌握《算法设计与分析》课程教学大纲要求的内容。

在《算法设计与分析》的课程实验过程中,要求学生做到:

(1)仔细观察调试程序过程中出现的各种问题,记录主要问题,做出必要说明和分析。

(2)认真书写实验报告。实验报告模板见附录1。

(3)遵守机房纪律,服从辅导教师指挥,爱护实验设备。

(4)实验课程不迟到。如有事不能出席,所缺实验一般不补。

(5)本实验采用的开发环境为 Microsoft Visual C++ 6.0,同学在做实验之前要求熟悉该软件的使用方法。

(6)实验成绩主要从以下几方面考核:实验过程态度,实验结果及报告书写。

实验1 分治法的应用(2学时)

1.实验目的

(1)理解分治法的思想。

(2)掌握用分治法解决问题

2.实验类型

设计型

3.预习要求

熟悉Visual C++ 6.0上机编程调试的基本方法。掌握教材上分治法的思想,掌握各种排序方法及二分搜索的思想。

4.实验基本要求

(1)仔细阅读备选实验的题目,选择一个(可选多个)作为此次实验题目,设计的程序要满足正确性,代码中有关键的注释,书写格式清晰,简洁易懂,效率较高,利用C++的模板,设计的程序通用性好,适合各种合理输入,并能对不合理输入做出正确的提示。

(2)可供选择的题目有以下3个:

中位数问题

★问题描述

设X[ 0 : n - 1]和Y[ 0 : n– 1 ]为两个数组,每个数组中含有n个已排好序的数。找出X和Y的2n 个数的中位数。

★编程任务

利用分治策略试设计一个O (log n)时间的算法求出这2n个数的中位数。

★数据输入

由文件input.txt提供输入数据。文件的第1行中有1个正整数n(n<=200),表示每个数组有n个数。接下来的两行分别是X,Y数组的元素。

★结果输出

程序运行结束时,将计算出的中位数输出到文件output.txt中。

输入文件示例输出文件示例

input.txt output.txt

14

3

5 15 18

3 1

4 21

★实现提示

比较两个序列的中位数大小,如果两个数相等,则该数为整个2n个数据的中位数,否则通过比较,分别减少两个序列的查找范围,确定查找的起止位置,继续查找。

(ii)Gray码问题

★问题描述

Gray码是一个长度为2n的序列。序列中无相同的元素,每个元素都是长度为n位的串,相邻元素恰好只有一位不同。用分治策略设计一个算法对任意的n构造相应的Gray码。

★编程任务

利用分治策略试设计一个算法对任意的n构造相应的Gray码。

★数据输入

由文件input.txt提供输入数据n。

★结果输出

程序运行结束时,将得到的所有编码输出到文件output.txt中。

输入文件示例输出文件示例

input.txt output.txt

3 0 0 0

0 0 1

0 1 1

0 1 0

1 1 0

1 1 1

1 0 1

1 0 0

★实现提示

把原问题分解为两个子问题,分别对两个子问题的每个数组后一位加0和1。

(iii)归并排序

★问题描述

目前的网上拍卖系统会显示很多待拍卖的物品,通常这些系统具有按照某个关键字对打出的广告进行排序列出的功能,并且能够按照用户输入的某个关键字进行过虑,找到某些特定的物品。★编程任务

定义一个Advertisement类,该类中至少包含该物品的数量,名称,联系人e-mail,最好有开拍时间及关闭时间,根据用户输入的关键字比如名称,mail,时间等,利用非递归的归并排序对所有的广告进行排序,并列出所有排好序的广告。

★数据输入

由文件input.txt提供输入的所有广告信息。程序中由用户输入要排序的关键字。

★结果输出

程序运行结束时,排好序的广告输出到文件output.txt中,并为每个广告添加序号。

输入文件示例输出文件示例

input.txt output.txt

Coat(物品名称) 3(数量)

a@ 1

Bag

12

相关文档
最新文档