《算法分析与设计》实验教学大纲

合集下载

算法分析与设计教学大纲

算法分析与设计教学大纲

算法分析与设计教学大纲算法分析与设计教学大纲一、引言算法是计算机科学中的核心概念之一,它是解决问题的步骤和方法的描述。

算法分析与设计是一门重要的课程,旨在培养学生的算法思维和解决问题的能力。

本文将从教学目标、课程内容、教学方法和评价方式等方面,对算法分析与设计教学大纲进行探讨。

二、教学目标1. 培养学生的算法思维能力。

通过学习算法分析与设计,学生能够理解算法的基本概念、原理和方法,掌握常用的算法设计技巧,培养解决实际问题的能力。

2. 提高学生的编程能力。

算法与编程密切相关,通过实践编程训练,学生能够运用所学算法知识解决实际问题,提高编程能力。

3. 培养学生的团队合作能力。

算法分析与设计通常需要团队合作,通过分组作业和项目实践,培养学生的团队协作和沟通能力。

三、课程内容1. 算法基础知识。

包括算法的定义、特性、分类和表示方法等内容,让学生对算法有一个全面的了解。

2. 算法分析。

介绍算法的时间复杂度和空间复杂度分析方法,培养学生分析算法效率的能力。

3. 常用算法设计技巧。

包括贪心算法、分治算法、动态规划算法等,通过具体案例讲解和实践编程训练,让学生掌握这些常用的算法设计技巧。

4. 数据结构与算法。

介绍常用的数据结构,如数组、链表、栈、队列、树和图等,以及与之相关的算法,如排序、查找、遍历等。

5. 算法应用与实践。

通过案例分析和项目实践,让学生将所学算法应用到实际问题中,提高解决实际问题的能力。

四、教学方法1. 理论教学与实践相结合。

理论教学是算法分析与设计的基础,但单纯的理论教学往往难以激发学生的学习兴趣。

因此,教师应该结合实际案例和编程实践,让学生通过实践掌握算法知识和技能。

2. 分组作业与项目实践。

算法分析与设计通常需要团队合作,通过分组作业和项目实践,可以培养学生的团队协作和沟通能力,同时提高解决实际问题的能力。

3. 讨论与互动。

教师应该鼓励学生参与课堂讨论,提问和回答问题,促进学生之间的互动和交流,加深对算法知识的理解和掌握。

算法设计与分析教学大纲

算法设计与分析教学大纲

算法设计与分析教学大纲一、课程介绍1.1 课程背景算法设计与分析是计算机科学的一门重要课程,其主要目的是教授学生算法设计的基本原理、常用算法的实现技巧以及算法性能的分析方法。

本课程旨在培养学生的算法设计能力和问题解决能力,为其今后从事计算机领域的研究和开发工作打下坚实的基础。

1.2 课程目标本课程的目标是使学生:- 掌握算法设计的基本思想和方法;- 熟悉常见的算法设计和实现技巧;- 理解算法的正确性和效率分析方法;- 能够运用所学算法解决实际问题。

二、教学内容2.1 算法基础- 算法的定义与特性;- 算法的表示方法;- 算法设计的基本思想;- 算法分析的基本概念。

2.2 常见算法设计技巧- 递归与分治法;- 贪心法;- 动态规划;- 回溯法。

2.3 数组与矩阵算法- 线性查找;- 二分查找;- 排序算法(如冒泡排序、快速排序等);- 矩阵运算与应用。

2.4 图算法- 图的基本概念与表示方法;- 图的遍历算法(如深度优先搜索、广度优先搜索等);- 最短路径算法(如Dijkstra算法、Floyd算法等);- 最小生成树算法(如Prim算法、Kruskal算法等)。

2.5 字符串算法- 字符串匹配算法(如朴素匹配算法、KMP算法等);- 字符串编辑距离算法;- 字符串压缩与编码算法。

三、教学方法3.1 理论讲授通过课堂讲授,介绍算法设计与分析的基本概念、原理和方法,并结合具体案例进行讲解,帮助学生深刻理解算法的设计思想和实现技巧。

3.2 课堂练习在理论讲授的基础上,组织学生进行算法设计的实践与练习,通过编写代码解决问题,培养学生的分析和解决问题的能力。

3.3 实验教学设置相关实验项目,让学生通过实验操作来巩固和应用所学算法知识,培养学生独立分析和解决实际问题的能力。

3.4 作业与考核布置实践作业,要求学生独立完成算法设计与实现,以检验学生对所学知识的掌握程度。

通过考核测试学生对算法设计和分析的理解与应用能力。

《算法分析与设计》教学大纲

《算法分析与设计》教学大纲

《算法分析与设计》教学大纲《算法分析与设计》教学大纲大纲描述课程代码:3235058总课时:32课时(32课时听课)总学分:2课程类别:限制选修课程适用专业:本大纲适用于计算机科学与技术专业的预习要求:高级通过本课程的学习,学生可以理解和掌握算法设计的主要方法,培养正确分析算法复杂性的基本能力,为独立设计求解问题的最优算法和分析给定算法的复杂性打下坚实的基础。

课程教学的基本要求:算法分析与设计是一门理论课程,是计算机科学和计算机应用的核心本课程主要介绍算法设计的基本方法。

它的第一门课程是高等数学、程序设计和数据结构。

通过本课程的学习,我们可以在掌握算法设计基本方法的基础上,加深对计算机领域常用的非数值算法的理解和应用。

本课程采用教师教学和学生自学相结合的教学方法。

它主要由教师讲授,结合理论知识,并通过具体算法进行演示,加深理解。

在教学过程中,利用多媒体课件进行操作演示,帮助学生进一步理解和掌握。

教学大纲使用说明:教学大纲适用于计算机科学与技术专业。

如果授课时数少于32小时或多于32小时,可根据教学实践选择相关内容。

第1章:指导和基本数据结构课时:4课时通过本章的学习,学生可以理解算法的概念和特点,学习分析算法的一般方法,掌握大纲文本计算机科学中常用的数据结构,并理解本教材中描述算法所使用的语言此外,如果你已经学习了数据结构,你可以跳过1.4节。

本章重点:算法,分析算法,用SPARKS语言编写的算法,基本数据结构和递归与消去递归要点:算法与分析算法难度:递归与消去递归第1节:算法第2节:分析算法第3节:用SPARKS语言编写算法第4节:基本数据结构第5节:递归与消去递归练习:练习1在书的后面第2章:分而治之方法时数:4小时通过本章的学习,学生可以理解分而治之方法的内涵,然后从二分法的基本思想被用来描述几种经典而精致的算法,包括二进制检索算法、分类算法、选择算法等。

同时,对每种算法都给出了一个数量级的分析,这样学生就可以理解本章介绍的算法,并且可以用来解决实际问题。

算法分析与设计课程教学大纲教案

算法分析与设计课程教学大纲教案

《算法设计与分析》课程教案(Design & Analysis of Computer Algorithms)一、课程基本信息课程编号:10134060课程类别:专业必修课适用专业:计算机科学与技术学分:3总学时:52,其中讲授44学时,实验8学时先修课程:程序设计基础、离散数学、数据结构后续课程:课程简介:本课程是软件工程专业的重要专业课,是软件技术中面向设计,处于核心地位的教育课程,无论是计算机系统、系统软件还是解决计算机的各种应用课题都可归结为算法设计。

本课程系统介绍许多经典的非数值算法,算法分析的基本方法,以及算法复杂性的相关知识。

主要教学方法与手段:课堂多媒体课件结合实验选用教材:沈孝钧编著《计算机算法基础》、机械工业出版社、2014年。

必读书目:1. Thomas H. Cormen,etc. 《Introduction to Algorithms, Second edition》.MIT Press,2001.3。

2. 王晓东,《算法设计与分析》,清华大学出版社,2003.1。

选读书目:1. Sara Baase,Allen Van Gelder,《Computer Algorithms : Introduction to Design and Analysis (Third Edition)》(影印版),高等教育出版社,2001.6。

2. Sartaj Sahni,《数据结构、算法与应用》,北京:机械出版社,2000。

二、课程总目标:本课程通过系统讲授算法分析的基本方法,使学生掌握基本的算法设计技术。

在算法分析设计的数学基础训练中,以提高学生算法设计与分析的素质和能力。

通过该课程的学习和上机实习,使学生掌握通用算法的几种设计方法,以及学会对算法的时间和空间的复杂性进行分析,建立下界理论的概念;同时通过讲授NP理论的主要概念及一些近似算法,为学生从事计算机算法的研究工作奠定基础。

算法分析与设计教学大纲

算法分析与设计教学大纲

算法分析与设计教学大纲一、课程概述二、预修条件1.数据结构基础知识。

2.编程语言基础。

三、授课目标1.掌握算法分析的基本方法和工具。

2.理解常见算法的设计思想和实现技巧。

3.能够独立设计、实现和优化算法解决实际问题。

四、教学内容1.算法基础知识(1)算法的概念和分类(2)算法分析的基本概念和方法(3)复杂度分析(4)递归与递归算法(5)分治法与减治法2.基本算法设计(1)贪心算法(2)动态规划算法(3)回溯算法3.高级算法设计(1)图算法:最短路径、最小生成树等(2)网络流算法:最大流、最小割等(4)近似算法:近似算法的基本思想与应用4.数据结构与算法分析(1)线性表和链表(2)栈和队列(3)树和二叉树(4)图和图的遍历算法五、教学方法1.理论课讲授:通过教师讲解、演示和示范等方式,让学生掌握算法基本知识和分析方法。

2.实践教学:通过课程设计和编程实践,让学生动手实践算法设计与实现,并对其进行分析和优化。

3.讨论与交流:组织学生进行小组讨论和互动交流,培养学生的合作学习能力和问题解决能力。

六、教学评估1.平时成绩:考察学生的课堂参与、作业完成情况和实验报告质量。

2.期中考试:考察学生对课程内容的掌握和理解。

3.期末考试:考察学生对课程内容的整体把握和综合应用能力。

七、参考教材1. 算法导论(第3版)- Thomas H. Cormen等2. 算法设计与分析基础(第4版)- Levitin A. V.八、教学资源1.电子课件和习题集。

2.在线编程平台和算法分析工具。

九、教学进度安排1.第1-2周:算法基础知识2.第3-5周:基本算法设计3.第6-8周:高级算法设计4.第9-11周:数据结构与算法分析5.第12-14周:综合应用与实践6.第15周:复习与总结备注:以上为算法分析与设计教学大纲的基本框架和内容,具体教学安排和进度可根据实际情况进行调整补充。

最新资料算法设计与分析实验大纲-通用

最新资料算法设计与分析实验大纲-通用

一、实验课程设置目的和任务算法分析与设计是一门面向设计、应用性和实践性都很很强的课程。

通过实验使学生能够更好地理解和掌握常用算法设计的方法,并进一步培养学生独立设计算法和分析算法的能力,这对于学生们来说是非常重要和必不可少的。

二、实验基本要求1、学生要充分理解理论课的教学内容。

2、在实验中学生应该勤动手、勤思考,做到理论与实践相结合。

3、要在完成实验作业的时候提交实验报告,完整叙述出实验的各项内容。

三、实验题目实验一递归算法设计实验内容:熟悉递归算法的基本思想和基本步骤,熟练掌握递归公式的推导和定义方法,用递归算法解决阶乘问题、Fibonacci数列和Hanoi塔问题。

实验目标:掌握递归算法的设计方法。

实验二分治法实验内容:设计实现分治法解决二分搜索法和棋盘覆盖问题,注意算法步骤及细节部分。

实验目标:掌握用分治策略解决二分搜索法和棋盘覆盖问题的算法。

主要仪器:计算机主要低值易耗品:无实验三动态规划算法实验内容:设计实现用动态规划方法解决矩阵连乘问题、最长公共子序列问题的算法。

实验目标:掌握用动态规划思想解决矩阵连乘问题、最长公共子序列问题的解题步骤及细节实现方法。

主要仪器:计算机。

主要低值易耗品:无实验四贪心算法实验内容:设计实现采用贪心算法解决单源最短路径问题。

实验目标:熟练掌握用贪心算法解题过程。

主要仪器:计算机。

主要低值易耗品:无实验五回溯法实验内容:实现用回溯法解决图的着色问题的算法。

实验目标:掌握用回溯法解决图的着色问题的基本步骤和涉及到的简单结论。

主要仪器:计算机。

主要低值易耗品:无实验六数值概率算法实验内容:计算π值和定积分的概率算法。

实验目标:掌握用随机投点法计算π值和定积分。

四、实验项目列表五、实验成绩考核办法必修题目6个。

根据实验课的出勤情况和实验完成情况给出实验课成绩。

六、参考书目1、《算法设计与分析》(第2版),王晓东编著,清华大学出版社,2008.2世上没有一件工作不辛苦,没有一处人事不复杂。

《算法设计与分析》教学大纲

《算法设计与分析》教学大纲一、课程概述算法设计是计算机科学的一门分支学科,是软件技术的一个重要方向。

算法设计既是软件设计的关键,也是培养学生成为未来软件工程师所不可或缺的一门专业知识.算法设计与分析课程将高级语言程序设计、数据结构和计算方法等内容紧密地结合在一起,全面培养学生分析问题、解决问题的能力.这门学科的重点是在培养和培训学生学会经典算法方面的知识与应用,因此它对学生的专业发展具有极其重要的意义.算法设计与分析的先修课程是高级语言程序设计、数据结构、高等数据、组合数学。

二、课程目标1.知道《算法设计与分析》这门学科的性质、地位和独立价值。

知道这门学科的研究范围、分析框架、研究方法、学科进展和未来方向.2.理解这门学科的主要概念,尤其是算法的时间复杂度和空间复杂度。

3.初步学会运用数学的方法推导和证明算法的时间复杂度和空间复杂度。

4.掌握常用的经典算法,培养学生在软件设计时对算法设计的重视,并能够把所学的知识应用到具体的软件设计实践中去。

三、课程内容和要求这门学科的知识与技能要求分为知道、理解、掌握、学会四个层次。

这四个层次的一般涵义表述如下:知道——-是指对这门学科和教学现象的认知。

理解——-是指对这门学科涉及到的概念、原理、策略与技术的说明和解释,能提示所涉及到的教学现象演变过程的特征、形成原因以及教学要素之间的相互关系。

掌握—-—是指运用已理解的教学概念和原理说明、解释、类推同类教学事件和现象。

学会——-是指能模仿或在教师指导下独立地完成某些教学知识和技能的操作任务,或能识别操作中的一般差错。

教学内容和要求表中的“√”号表示教学知识和技能的教学要求层次。

本标准中打“*”号的内容可作为自学,教师可根据实际情况确定要求或不布置要求。

教学内容及教学要求表四、课程实施数据库系统是计算机专业和通信工程专业的必修课。

一般情况下,计算机专业为54课时,函授为36课时。

课时安排及教学方法表五、教材和参考书目1.王晓东. 计算机算法设计与分析(第3版)北京:电子工业出版社,20072。

算法分析与设计 教学大纲

算法分析与设计一、课程说明课程编号:390211X10课程名称:算法分析与设计/ Design and Analysis of Algorithms课程类别:学科基础课学时/学分:32/3先修课程:数据结构、离散结构、集合论与代数适用专业:软件工程教材、教学参考书:[1]计算机算法分析与设计(第三版),王晓东,北京:电子工业出版社,2007[2]Introduction to Algorithms, Thomas H.Cormen, Charles E.Leiserson, Ronald L.Rivest,Clifford Stein, The MIT Press,2009[3]算法分析导论(第2版),Robert Sedgewick,Philippe Flajol ,电子工业出版社,2015二、课程设置的目的意义《算法分析与设计》是软件工程本科专业的学科基础课,是一门综合性、理论性和实践性较强的课程,通过对计算机算法系统的学习与研究,理解和掌握算法设计的主要方法,培养对算法的计算复杂性正确分析的能力,为独立设计算法和对算法进行复杂性分析奠定坚实的理论基础。

三、课程的基本要求通过本课程的学习,要求让学生理解计算机算法效率分析与设计所涉及的基本概念和基础知识,掌握基本的算法分析方法和常见的算法设计方法,能熟练应用课程介绍的算法设计方法来解决软件开发中的实际问题。

通过对算法实例的分析,进一步加深学生对算法设计方法的认识和理解。

具体要求如下:(一)知识学习要求1.理解算法的基本概念和算法的效率分析方法,对应培养方案“培养要求”1-①-B;2.理解分治策略的原理、效率分析,掌握分支策略在常见问题(如:二分检索、归并分类、快速排序、选择问题等)问题中的应用。

理解动态规划的原理、适用条件,了解算法的效率,掌握该算法在常见问题(如:多段图、最优二分检索树、0/1背包问题、货郎担问题、可靠性设计等)问题中的应用。

03020280《算法分析与设计》课程教学大纲(40+8)

算法分析与设计课程教学大纲算法分析与设计课程教学大纲(总学时数:48(40+8),学分数:3)一、课程的性质、任务和目的以算法设计策略为知识单元系统地介绍计算机算法的设计方法和分析方法。

在教学中除介绍算法的基本概念、计算复杂性分析以外,重点介绍递归算法、分治算法、贪心算法、动态规划算法、回溯算法和分支定界算法的基本思想及应用,为计算机专业的学生提供一个广泛扎实的计算机算法知识基础。

二、课程的基本内容和要求(一)算法概述教学内容:1.算法与程序2.算法分析的基本概念和理论3.简单程序的算法复杂性分析教学要求:了解算法的基本概念,算法在程序设计中的重要性。

掌握程序复杂度度量的基本方法。

(二)递归的基本概念教学内容:1.递归的概念2.阶乘函数3.Fibonacci数列4.Ackerman函数5.Hanoi塔问题6.整数划分问题1教学要求:掌握递归程序复杂度的计算方法,了解经典递归问题解法。

学会使用递归方法分析解决实际问题。

(三)分治策略教学内容:1.分治法的基本思想2.递归方程解的展开方法3.二分搜索技术4.大整数的乘法5.Strassen矩阵乘法6.合并排序7.快速排序8.棋盘覆盖问题9.循环赛日程表教学要求:掌握分治策略的基本思想以及用分治法解决问题的一般技巧。

重点掌握二分搜索技术。

(四)动态规划法教学内容:1.动态规划算法的基本思想2.动态规划算法的基本要素3.矩阵连乘问题4.最长公共子序列5.最大子段和问题6.0/1背包问题7.流水作业调度8.图像压缩问题9.凸多边形最优三角剖分10.动态规划的加速原理*教学要求:2掌握动态规划解决问题的一般过程,掌握矩阵连乘问题的计算技巧。

学会使用动态规划解决实际问题。

(五)贪心算法教学内容:1.找零钱问题2.贪心算法的基本要素3.机器调度问题4.活动安排问题5.最优装载问题6.单源最短路径问题7.哈夫曼编码8.最小生成树9.贪心算法的理论基础*教学要求:掌握贪心法解决问题的一般步骤,掌握贪心法和动态规划方法的异同。

《算法分析与设计》课程教学大纲.doc

《算法分析与设计》课程教学大纲Algorithms Analysis and Design一. 课程教学目标:1.任务和地位:《算法分析与设计》是计算机应用与技术专业(本科)的一门专业课,其内容是研究计算机领域及其它有关领域中的一些常用算法,它是计算机科学通常要解决的主要问题之一,因而也是各专业方向可以选修的一门重要的专业基础课。

通过本课程的学习,使学生掌握算法设计的常用方法,以便运用这些方法来设计解决一些常用的或较为复杂的实际问题的算法,并力争做到快捷、有效,从而提高程序设计的质量。

除此,还要使学生学会分析算法、估计算法的时空复杂性,以便理解并科学评估有关算法。

因而,对于计算机专业的技术人员,学习和掌握这方面的知识是很有必要的。

2.知识要求:通过一学期学习要达到如下要求1)掌握算法的定义及基本概念、计算模型和复杂度的质量;2)为分析算法的复杂性作准备,要了解相应的数学知识;3)了解各种分类方法,重点是学会分析分类方法的复杂性。

3.能力要求:通过本课程的学习,学生要掌握几种常用的算法设计策略,包括递归与分治策略、动态规划算法、贪心算法、回溯法和分支限界法等,并会分析算法的效率。

能够用所学方法解决实际问题。

二、教学内容的基本要求和学时分配1.学时分配教学内容章目本课程学分:3学时分配小计讲课课堂讨论(讲解上机题及习题)第一章绪论33第二章递归与分治策略11314第三章动态规划算法729第四章贪心算法516第五章回溯法9211第六章分支限界法33复习32合计408482.具体要求第一章算法概述[目的要求]掌握算法基本概念及算法复杂性分析。

[教学内容]算法与程序、算法复杂性分析。

[重点难点]让同学们了解本门学科在科技发展中地位和作用,增强学好本课程的信心。

[教学方法]课堂讲授与自学(课外)相结合。

[课时]3学时。

第二章递归与分治策略[目的要求]掌握递归与分治策略设计算法。

[教学内容]递归的概念、分治法的基本思想、及分治算法实例。

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

《算法分析与设计》实验教学大纲课程编号:10000284课程名称:算法分析与设计英文名称:Algorithm Analysis and Design适应专业:软件工程执笔人:刘淑英实验教材(指导书):王晓东,计算机算法设计与分析,电子工业出版社,2007主要参考书目:①张铭、刘晓丹译电子工业出版社出版的《数据结构与算法分析》②徐士良主编清华大学出版社出版的《计算机常用算法》第二版③卢开澄主编清华大学出版社出版的《计算机指导引论-设计与分析》一、实验学时总学时:48 总学分:3 实验学时:10二、实验课的任务、性质与目的《算法设计与分析》是计算机专业的专业核心课程,其先修课程有数据结构和至少一门高级语言。

算法设计与分析课程将覆盖计算机软件实现中的大部分算法,并具有一定的深度和广度,使学生对计算机常用算法有一个全盘的了解;通过此课的学习,学生应该具有针对所给的问题设计和实现高效算法的能力。

通过上机实验,将使学生熟悉、掌握课堂教学中所学的大部分算法。

同时,上机实习是对学生在软件设计方面的综合训练,包括问题分析,总体结构设计,用户界面设计,程序设计基本技能和技巧等,以培养良好的编程风格和科学作风。

通过理论联系实际,以最终提高学生动手操作的能力以及分析问题的能力。

本课程的主要目的是研究计算机领域及其它有关领域中的主要算法设计方法及一些常用算法,使学生掌握算法设计的常用方法,以便运用这些方法来设计解决一些常用的或较为复杂的实际问题的算法,并力争做到快捷、有效,从而提高程序设计的质量。

同时,还要使学生学会分析算法、估计算法的复杂性,以便理解并科学评估有一个算法的好坏。

它属于技术基础课,是进行软件设计的核心内容,是一门实践性很强的课程。

学生应具有C或C++、数据结构的基础知识。

三、实验内容(1)分治策略算法(4学时)实验内容:用分治法实现快速排序、归并分类算法;编写程序实现循环赛日程表。

设有n=2k 个运动员要进行网球循环赛。

现要设计一个满足以下要求的比赛日程表:(1)每个选手必须与其它n-1个选手各赛一次(2)每个选手一天只能赛一场(3)循环赛进行n-1天。

实验要求:掌握递归算法实现的过程;了解快速排序算法的思想,掌握用算法设计思想解题的思路。

(2)贪心算法(2学时)实验内容:编写一个简单的程序,实现单源最短路径问题;编写一段程序,实现找零;编写程序实现多机调度问题。

实验要求:掌握贪心算法的基本设计思路,并用其解决实际问题。

(3)动态规划算法(2学时)实验内容:编写一个简单的程序,解决0-1背包问题;编程解决合唱队形安排。

实验要求:掌握动态规划算法设计的基本策略。

(4)回溯算法(2学时)实验内容:用回溯法解8皇后问题;批处理作业调度。

实验要求:掌握回溯法的算法框架和算法的基本思想。

四、实验要求(1)学生在完成预习报告、熟悉实验内容后才能进入实验室进行上机实验。

实验1人一组,由学生独立操作完成实验。

(2)学生分析问题,熟悉解决问题的算法描述。

要求记录上机实验过程,且得到指导教师认可后,学生方可离开实验室。

(3)实验完成后提交实验报告。

(4)实验过程由指导老师监督,听从老师安排和督导。

五、实验项目的设置与内容提要本课程主要通过综合设计性实验,完成一个问题的算法分析设计过程,培养学生解决设计问题的能力,提高学生综合设计能力。

要求学生通过查阅文献、小组讨论完成实验任务。

(1)每次任务完成后由指导老师逐个的检查实验内容、结果并评分,占实验成绩60%。

(2)上机考勤评分,占实验成绩10%。

(3)实验报告占实验成绩30%。

实验一排序问题求解实验目的1)以排序(分类)问题为例,掌握分治法的基本设计策略。

2)熟练掌握一般插入排序算法的实现;3)熟练掌握快速排序算法的实现;4) 理解常见的算法经验分析方法;实验环境计算机、C语言程序设计环境实验学时4学时,必做实验。

实验内容与步骤1.生成实验数据.要求:编写一个函数datagenetare,生成2000个在区间[1,10000]上的随机整数,并将这些数输出到外部文件data.txt中。

这些数作为后面算法的实验数据。

2.实现直接插入排序算法.要求:实现insertionsort算法。

算法的输入是data.txt;输出记录为文件:resultsIS.txt;同时记录运行时间为TimeIS。

直接插入算法思想:Procedure insertionsort(A,n)A(0)=-for j=2 to n doitem=A(j); i=j-1while item<A(i) doA(i+1)=A(i); i=i-1repeatA(i+1)=itemrepeatEnd insertionsort3.实现快速排序算法.要求:实现QuickSort 算法。

算法的输入是data.txt;输出记录为文件:resultsQS.txt;同时记录运行时间为TimeQS。

快速排序算法思想:Procedure QuickSort(p,q)integer p,q;global n,A(1:n)if p< q thenj ← q+1call Partition(p, j)call QuickSort (p, j-1)call QuickSort(j+1, q) 用A(m)划分集合A的函数:Procedure partition(m,p)integer m,p, I; global A(m:p-1)v=A(m); I=mLooploop I=I+1 until A(I)>=v repeatloop p=p-1 until A(p)<=v repeatif I<pthen call interchange(A(i), A(p)) Else exitEndifRepeatA(m)=A(p); A(p)=vEnd partitionend if end QuickSort 实验报告:实验报告应包括以下内容: (1)题目;(2)2个算法的基本思想描述; (3)算法理论分析(参考教材); (4)程序流程图;(5)给出data.txt 、resultsIS.txt 、resultsQS.txt 三个文件任选其一的清单; TimeIS 、TimeQS 的记录结果;(6)实验分析;以表或者图的形式给出这2个算法的经验对比分析结果;并和理论分析结论进行对比。

(7)说明本次调试实验的心得体会、经验等。

如果程序未通过,应分析其原因。

实验二 背包问题求解实验目的1)以背包问题为例,掌握贪心法的基本设计策略。

2)熟练掌握各种贪心策略情况下的背包问题的算法并实现;其中:量度标准分别取:效益增量P 、物品重量w 、P/w 比值;3) 分析实验结果来验证理解贪心法中目标函数设计的重要性。

实验环境计算机、C 语言程序设计环境实验学时2学时,必做实验。

实验内容与步骤1. 理解需要求解背包问题.(1)背包问题的描述:已知有n 种物品和一个可容纳M 重量的背包,每种物品i的重量为i w 。

假定将物品i 的一部分i x 放入背包就会得到i i x p 的效益,这里,10≤≤i x ,0>i p 。

显然,由于背包容量是M ,因此,要求所有选中要装入背包的物品总重量不得超过M.。

如果这n 件物品的总重量不超过M ,则把所有物品装入背包自然获得最大效益。

现需解决的问题是,在这些物品重量的和大于M 的情况下,该如何装包,使得得到更大的效益值。

由以上叙述,可将这个问题形式表述如下:极 大 化目标函数 ∑≤≤ni ixp 1i约束条件Mxw ni i≤∑≤≤1in i w p x i i i ≤≤>>≤≤1,0,0,10(2)用贪心策略求解背包问题首先需确定最优的量度标准。

这里考虑三种策略: 策略1:按物品价值p 降序装包,策略2:按物品重w 升序装包策略3:按物品价值与重量比值p/w 的降序装包(3)分别以上面三种策略分别求以下情况背包问题的解: n=7,M=15, (71,,p p )=(10,5,15,7,6,18,3) (71,,w w )=(2,3,5,7,1,4,1)。

以策略3为例的背包问题的贪心算法描述:procedure GREEDY-KNAPSACK(P,W,M,X,n)//P (1:n )和W (1:n )分别含有按P (i )/W (i )≥P (i+1)/ W (i+1)排序的n 件物品的效益值和重量。

M 是背包的容量,而X (1:n )是解向量。

//real P(1:n),W (1:n ),X (1:n ),M ,cu ;integer i ,n;X ←0 //将解向量初始化为零 cu ←M //cu 是背包剩余容量 for i ←1 to n doif W(i)>cu then exit endif X(i) ←1 cu ←cu-W(i) repeatif i≤n then X(i) ←cu/W(i) endifend GREEDY-KNAPSACK2. 以策略1作为量度标准求解要求问题,记录解向量为X1、目标函数的值fp1(即最后装好包后背包的效益值∑≤≤ni ixp 1i)、背包的重量fw1;3. 以策略2作为量度标准求解要求问题,记录解向量为X21、目标函数的值fp2(即最后装好包后背包的效益值∑≤≤ni i xp 1i)、背包的重量fw2;4. 以策略3作为量度标准求解要求问题,记录解向量为X3、目标函数的值fp3即最后装好包后背包的效益值∑≤≤ni i xp 1i)、背包的重量fw3;实验报告:实验报告应包括以下内容: (1)题目;(2)算法的基本思想描述; (3)程序流程图;(4)给出3个程序任意之一的程序清单;(5)实验分析;通过实验结果对比分析说明哪种策略好。

(6)说明本次调试实验的心得体会、经验等。

如果程序未通过,应分析其原因。

Tips :1. 解向量的表示。

需要注意:因为算法中涉及到排序,如何保证各种物品的原始命名(如果以第几种,即序号,来命名物品)关系需要考虑。

#define MAX 200typedef struct Solution //定义的解向量 { int x[MAX]; 表示该号物品放了多少在背包里,这里i 0x 1≤≤ int order[MAX]; 表示物品的序号,相当于其名字 }Solution; Solution X;所以,初始化时,为: for (i=0; i<n; i++) { X.order[i]=i; X.x[i]=0; }2. 主要函数:void GreedyKnapsack(float profit[],float weight[],float x[],int m, int n) { float cu; int i; cu=float(m); for(i=0;i<n;i++) { x[i]=0; } for(i=0;i<n;i++) { if(weight[i]>cu) break; x[i]=1; cu=cu-weight[i]; } if(i<n) { x[i]=cu/weight[i]; } }实验三 最短路径问题求解实验目的:1)以最短路径问题为例,掌握动态规划的基本设计策略; 2)掌握dijkstra 贪心法求解最短路径问题并实现;3)掌握动态规划方法Floyd 算法求解最短路径问题并实现; 3)分析实验结果。

相关文档
最新文档