2014级本科教案.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2014级本科教案

2014级本科 算法设计与分析教案 战学刚 软件学院 2014.8 前言 本稿是为2014级本科生讲授《算法设计与分析》课程的教案。授课教材是王晓东所编的《计算机算法设计与分析》第4版。这里有必要对一些相关问题进行说明。 关于教材的选择:本人从十多年前就开始采用该教材第1版授课,后续的各个版本都曾使用过。如今市面上并不缺少经典的算法教材,本人在过去的十多年间也曾采用过Levitin的《Introduction to the Design and Analysis of Algorithms》、Cormen等人的《Introduction to Algorithms》、和Alsuwaiyel的《Algorithms: Design Techniques and Analysis》作为教材。但由于历史沿袭,软件学院(原计算机学院)的本科算法课程(除个别试点班外)一直采用王晓东的教材,部分原因是多位教师授课,每个教师给两个班上课,为了统一教学内容和考试而这样安排的。 关于授课内容:受学时限制,本课程的授课内容通常包括教材的1—6章。本课程对前修课的正常要求是《计算科学引论》、《离散数学》、《数据结构》、和《C++程序设计语言》。但是,由于受制于本科总学时数的限制,以及软件学院“三+一”的教学模式,《计算科学引论》已经取消。此外,实际用于教学的C++教材和数据结构教材也未能完全覆盖本课程所需的前修知识。因此,本教案的第一章内容较多,主要是复习和补充一些C++、数据结构、甚至离散数学的基本知识。 关于授课方式:本人授课的基本模式是,问题分析——解题思路——数据结构/算法构造——代码实现——算法分析。但本教案并不是完全按照这种模式书写的,很多情况下,只是给出了对应的C++代码,作为本人的授课提示。因此,本教案不能代替教材。它只是教材的补充,用于学生预习和复习。通常的算法课程或教材,并不重视代码实现这部分工作(他们假定学生已经胜任此项工作)。但是,多年的工程实践和教学/科研经历使本人认识到,这部分恰恰是我们本科计算机专业教学的两个薄弱环节之一(另一个薄弱环节是数学基础训练)。因此本人在教学过程中,特别强调动手编程的训练。如果不能把算法设计和分析技术应用到编程实践中,那么本课程的内容就是空中楼阁、水月镜花。 教学要求: 认真听讲,积极讨论,按时完成作业。 作业内容及解法可以讨论,但结果必须本人完成。 平时成绩占40%,期末考试60%。 答疑: 时间:周三、周五下午工作时间。 地点:图书馆#115。 电话:5928205 电邮:algorithm@ 战学刚 2014-8-28 于辽宁科技大学 目录 第一章 绪论 5 1.1 基本概念 5 1.2 数学解题和程序设计对照 5 1.3递归函数 8 1.4 Bohm-Jacopini定理 17 1.5 C++要素 22 1.5.1 数据类型 22 1.5.2 函数的参数 22 1.5.3 类 23 1.5.4 模板 29 1.5.5 命名空间 31 1.5.6 其它 32 1.6 容器和算法 34 1.6.1 顺序容器 34 1.6.2 关联容器 44 1.6.3 泛型算法 45 1.7 堆和不相交集 46 1.7.1 堆 46 1.7.2 不相交集 48 第二章 递归与分治 50 2.1 递归的概念 50 2.2 分治法的基本思想 51 二分搜索 51 基本模式 52 幂 53 最小元素 54 选择排序 54 合并排序 54 快排序 55 第k小元素 57 Triomino 57 大整数乘法及应用 59 第三章 动态规划 64 Finbonacci数列 64 矩阵链问题 64 最长公共子列 67 第四章 贪心法 70 Huffman Tree 70 Dijkstra (Single-Source Shortest Path) 72 MST (Minimum Spanning Tree) 74 第五、六章 图的遍历 79 5.1 二叉树遍历 79 5.2 隐式枚举 81 5.3 显式枚举 86 5.4 分支界限 91 9.5 几个例子 92 5.5.1骑士游历 92 5.5.2农夫过河 94 5.5.3 子集和问题 96 5.5.4 图着色问题 97 5.5.5 背包问题 97 附录A:vector和list简化版的实现 108 A.1 vector简化版的实现 108 A.2 list简化版的实现 111 参考文献 115 绪论 有一种谬论认为,学会程序设计语言就会编程序。我们首先澄清几个基本概念。 1.1 基本概念 计算机程序,简称程序(program),是指一组指示计算机每一步动作的指令,用某种程序设计语言(programming language)编写,运行于某种计算机之上

文档评论(0)

zilaiye + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档