课程概述

本课程主要介绍算法设计与分析的基本方法以及算法复杂性理论基础。通过本课程的学习,要求学生理解并熟练掌握递归与分治法、贪心法、动态规划方法、回溯法、分支定界法,以及高级图论算法、线性规划算法等,理解并掌握算法复杂性的分析方法、NP完全性理论基础等计算复杂性的基本知识及完备性证明概要。

 

证书要求

为积极响应国家低碳环保政策, 2021年秋季学期开始,中国大学MOOC平台将取消纸质版的认证证书,仅提供电子版的认证证书服务,证书申请方式和流程不变。

 

电子版认证证书支持查询验证,可通过扫描证书上的二维码进行有效性查询,或者访问 https://www.icourse163.org/verify,通过证书编号进行查询。学生可在“个人中心-证书-查看证书”页面自行下载、打印电子版认证证书。

 

完成课程教学内容学习和考核,成绩达到课程考核标准的学生(每门课程的考核标准不同,详见课程内的评分标准),具备申请认证证书资格,可在证书申请开放期间(以申请页面显示的时间为准),完成在线付费申请。

 

认证证书申请注意事项:

1. 根据国家相关法律法规要求,认证证书申请时要求进行实名认证,请保证所提交的实名认证信息真实完整有效。

2. 完成实名认证并支付后,系统将自动生成并发送电子版认证证书。电子版认证证书生成后不支持退费。


预备知识

高等数学或数学分析、线性代数或高等代数、概率论与数理统计、离散数学(含图论、集合论、近世代数、数理逻辑基础)、数字逻辑、高级语言程序设计、数据结构

授课大纲

第一周 算法概述及复杂性理论

1.1 问题

1.2 算法的概念

1.3 算法的正确性

1.4 算法的效率

1.5 问题的下界

第一周 算法概述及复杂性理论 作业

第二周 算法分析方法

2.1 概率分析

2.2 合计方法

2.3 记账方法

2.4 势能方法

2.5 实验分析

第二周 算法分析方法 作业

第三周 递归

3.1 递归的算法思想

3.2 选择排序

3.3 生成排列

3.4 递归方程的求解

第三周 递归 作业

第四周 分治(上)

4.1 算法思想

4.2 二分搜索

4.3 快速排序

4.4 归并排序

第四周 分治(上)作业

第五周 分治(下)与动态规划(上)

5.1 残缺棋盘游戏

5.2 大整数乘法

5.3 矩阵乘法

5.4 动态规划算法引言

5.5 动态规划算法思想

5.6 矩阵链乘法问题

第五周 分治(下)与(动态规划(上) 作业

第六周 动态规划(中)

6.1 最优二叉搜索树问题

6.2 最大子段和问题

6.3 装配线调度问题

6.4 最长公共子序列问题

第六周 动态规划(中) 作业

第七周 动态规划(下)与贪心算法(上)

7.1 0/1背包问题

7.2 动态规划总结-基本性质

7.3 贪心算法的基本思想

7.4 任务选择问题(一)

第七周作业

第八周 贪心算法(下)

8.1 任务选择问题(二)

8.2 背包问题

8.3 哈夫曼编码问题

8.4 任务选择实验

第九周 图算法(上)

9.1 图的表示

9.2 宽度优先搜索

9.3 深度优先搜索

9.4 最小生成树问题-Kruskal算法

第十周 图算法(下)

10.1 最小生成树-Kruskal与Prim比较

10.2 最短路径问题

10.3 单源最短路径问题

10.4 所有点对最短路径问题

第十一周 网络流与匹配

11.1 最大流问题

11.2 最大流问题求解

11.3 最小费用流

第十二周 回溯算法

12.1 回溯算法思想

12.2 货箱装载问题

12.3 0-1背包问题

12.4 着色问题

第十三周 分支限界算法

13.1 分支限界算法思想

13.2 货箱装载问题

13.3 0-1背包问题

13.4 案例解析

第十四周 NP完全理论

14.1 判定问题

14.2 P和NP

14.3 NPC问题

14.4 NPC问题的证明

参考资料

《算法设计与分析》,张德富,高等教育出版社,2009

Introduction to Algorithms》,The MIT Press2001 

常见问题


Q : 什么人能学习这门课?

A : 这是计算机学科的一门专业课程,一般在本科二年级下学期或者三年级上学期开设,那么你需要有程序设计的基础,包括高级程序语言设计(不限语言),数据结构等,以及数学类课程基础,包括高等代数,微积分初步,线性代数,概率论与数理统计等,如果你有这些基础的知识,那么欢迎你来上我们的课程。

Q : 相同的课程那么多了,为什么要选这门呢?

A : 因为我们的老师讲的通俗易懂呀,我们的主讲老师精心设计了课程,并花了整整一个学期的时间,把厦门大学人工智能系2016级的上课课堂搬到了网上,选修这门课,如同坐在厦门大学教室里听课,这是别的课程达不到的效果呢。

Q : 这门课会不会很难过?

A : 这是计算机专业、人工智能专业考研必考科目,考点是会全覆盖的;如果想要考研,那么必须翻过这座大山。为了了解而学习,为了进阶而学习,只要你跟着一个周期下来,考试对你来说,就是小case了。

Q : 我们的目标是什么?

A : 请详见授课目标,帮助大家学好算法设计与分析,是这门课最真诚的目标。

Q : 如果想深入学习,怎么办?

A : 可以关注大数据与计算智能公众号,下载英文版课件和有关问题的源代码。