1、后续课程: 课程简介:本课程是软件工程专业的重要专业课,是软件技术中面向设计,处于核心地位的教育课程,无论是计算机系统、系统软件还是解决计算机的各种应用课题都可归结为算法设计。本课程系统介绍许多经典的非数值算法,算法分析的基本方法,以及算法复杂性的相关知识。主要教学方法与手段:课堂多媒体课件结合实验选用教材: 沈孝钧编著计算机算法基础、机械工业出版社、2014年。必读书目:1. Thomas H. Cormen,etc. Introduction to Algorithms, Second edition.MIT Press,2001.3。2. 王晓东,算法设计与分析,清华大学出版社,2003
2、.1。选读书目:1. Sara Baase,Allen Van Gelder,Computer Algorithms : Introduction to Design and Analysis (Third Edition)(影印版),高等教育出版社,2001.6。2. Sartaj Sahni,数据结构、算法与应用,北京:机械出版社,2000。二、课程总目标:本课程通过系统讲授算法分析的基本方法,使学生掌握基本的算法设计技术。在算法分析设计的数学基础训练中,以提高学生算法设计与分析的素质和能力。通过该课程的学习和上机实习,使学生掌握通用算法的几种设计方法,以及学会对算法的时间和空间的复杂性进
3、行分析,建立下界理论的概念;同时通过讲授NP理论的主要概念及一些近似算法,为学生从事计算机算法的研究工作奠定基础。三、课程教学内容与教学要求1、教学内容与学时分配课程总学时:48 其中讲授学时:40 实验(上机)学时:8课程安排见下表:序号章目名称讲授学时分配1第一章 算法基础知识6第六章 最大流算法72第二章 分治法第七章 NP完全问题第三章 动态规划4第四章 图遍历算法5第五章 贪心算法合计442教学要求(1)以培养学生独立思考、分析问题和解决问题的能力为主要目标,进行讨论式教学,不要求学生死记硬背。(2)本课程强调严谨的思考方法,培养学生利用所学的数学知识分析解决问题能力。教学目标:了解
4、算法的基本概念及其与其他学科的关系,掌握算法复杂度的渐进表示及复杂性分析的基本方法和正确性证明的基本技术。教学内容:第一节 基本概念一、算法的概念和特征二、算法与其他IT学科的联系三、评价算法的标准第二节 算法分析一、算法的正确性分析二、算法的复杂性分析教学要求:重点介绍算法复杂度的渐进表示,以及算法复杂性分析的替换法、递归树法和master定理。掌握分治策略分析问题的基本思路和分析方法,了解典型的分治策略算法。第一节 分治策略简介一、分治策略的基本步骤二、折半查找和归并排序第二节 快速排序的性能分析一、快速排序算法二、复杂性分析第三节 中位数选择与最接近点对一、随机中位数选择算法二、确定的中
5、位数选择算法三、最接近点对第四节 大整数相乘与矩阵乘一、大整数相乘二、矩阵乘重点介绍分治策略设计算法的基本步骤及分治法解决问题的设计思路。掌握动态规划分析问题的基本思路和分析方法,了解典型的动态规划算法。第一节 最长公共子序列与动态规划一、最长公共子序列二、动态规划方法第二节 矩阵连乘一、矩阵连乘问题二、动态规划算法第三节 最优二叉查找树一、最优二叉查找树问题重点介绍动态规划设计算法的基本步骤、最优子结构性质的证明方法和利用最优子结构性质写出求解最优解值递归关系的过程。第四章 图遍历算法掌握图遍历的广度优先算法和深度优先算法,了解图遍历算法的应用。第一节 广度优先搜索一、广度优先搜索算法二、广
6、度优先算法的应用第二节 深度优先搜索算法一、深度优先搜索算法二、深度优先搜索的性质三、深度优先搜索的应用重点讲授广度优先搜索和深度优先搜索算法和区间套及白路径定理。第一节 活动场所选择与贪心策略一、活动场所选择二、贪心策略第二节 贪心算法的应用一、哈夫曼编码问题二、最小费用生成树重点介绍贪心策略分析问题的基本方法及思路,和贪心选择性质证明的基本思路。掌握最大流问题的定义,最大流-最小割定理,福特-福克森算法。了解埃德蒙-卡普算法。一、最大流问题定义二、最大流最小割定理第二节 最大流算法一、Ford-Fulkerson算法二、Edmond-Karp算法重点介绍最大流-最小割定理,剩余网络及福特-
7、福克森算法。第七章 算法基础知识第八章 分治法第九章 动态规划第一十章 图遍历算法第一十一章 贪心算法第一十二章 最大流算法第一十三章 NP完全问题掌握P类,NP类和NPC的定义。了解NP完全问题的证明过程及思路。一、P和NP二、NP完全性第二节 NP完全问题的证明一、NP完全的证明方法二、NP完全问题的证明重点讲授P类、NP类和NPC的定义,Cook定理和NP完全的证明方法及过程。3.实验实验项目名称学时实验内容和实验目标实验性质排序算法比较实验内容:实现插入排序、归并排序和快速排序算法。实验目标:掌握分治算法的实现,了解算法的比较方法。验证动态规划算法布置的有关动态规划问题作业。实验目标:
8、掌握采用动态规划思路分析问题的方法和动态规划算法的设计实现。验证设计贪心算法布置的有关贪心算法问题作业。掌握贪心策略分析问题的方法和贪心算法的设计实现。四、 课程考核考试以闭卷为主(70%),着重检查对算法分析与设计的基本方法掌握情况,及培养学生分析问题解决问题的能力。平时成绩30%,考察作业、读书报告和出勤率。第一十四章 NP完全问题3.实验软件工程专业的重要专业课,是软件技术中面向设计,处于核心地位的教育课程,无论是计算机系统、系统软件还是解决计算机的各种应用课题都可归结为算法设计。第一十五章 算法基础知识第一十六章 分治法第一十七章 动态规划第一十八章 图遍历算法第一十九章 贪心算法第二十章 最大流算法第二十一章 算法基础知识第二十二章 分治法第二十三章 动态规划第二十四章 图遍历算法第二十五章 贪心算法第二十六章 最大流算法第二十七章 NP