“科学殿堂里陈列着两颗熠熠生辉的宝石,一颗是微积分,另一颗就是算法。微积分成就了现代科学,而算法成就了现代世界。”
Pascal之父Nicklaus Wirth提出的公式“算法+数据结构=程序” 展示了程序的本质。算法不但是程序也是计算机科学的核心和灵魂。
算法分析与设计是一门理论性与实践性兼顾的课程,主要介绍算法分析与设计的基本理论、思想和方法,介绍枚举、递推、贪心、分治、动态规划、回溯、分支限界、网络流、图算法、随机算法等算法设计策略和分析方法。从各个应用领域的大量实际问题出发,分析问题的性质,建立合理的数学模型,选择合适的数据结构,设计结构清晰、正确高效的算法解决之,分析比较算法的性能以及提高算法性能的技巧,培养初步的算法设计与分析能力,培养计算思维和分析解决实际问题的能力,提高学生的科研素质和创新能力。通过实验实践进一步培养算法实现、调试测试和结果分析的基本能力,强化专业核心意识和职业素养,为学习其他专业课奠定扎实的基础。
设计原则
1.从解决问题和应用实例入手,按照提出问题、分析问题、解决问题、总结问题的步骤,培养学生算法基本理论来分析和解决问题的能力。
2.以实践为导向,专题案例与思考讨论相结合, 自动评测和互动交流相结合,引导学生参加小组活动和科技竞赛,培养学生的实践能力、科研创新能力和团队合作能力。
3.适应探究性和碎片化学习,聚集和重组课程内容;适应自主性和多样化学习,线上开放与线下实践相结合;适应多元化和个性化需求,培养学生主动学习、研究和创新意识。
面对各个应用领域的大量复杂问题,最重要的是建立数学模型并设计高效的求解算法。不管未来你将从事何种行业,《算法分析与设计》培养的计算思维和编程能力,会让计算机更好沟通和服务;《算法分析与设计》培养的求解问题能力和创新素养,会让你事半功倍,一览人生风云。
第一章 算法与问题
1.1 稳定匹配问题
1.2 Hi! 什么是算法?
1.3 大学入学申请问题
1.4 编程与调试
第一章 测验
第一章 作业
第二章 算法分析
2.1 算法分析
2.2 几个符号
2.3 复杂度比较
2.4 分析实例
2.5 时空均衡
第二章 测验
第二章 作业
第三章 枚举算法
3.1 枚举算法
3.2 集合与排列
第三章 测验
第三章 作业
第四章 贪心算法
4.1 背包问题
4.2 基本要素
4.3 区间问题
4.4 MST问题
4.5 哈夫曼编码
第四章 作业一
第四章 作业二
第四章 测验
第五章 递推算法
5.1 递归与递推
5.2 正推与倒推
5.3 递推方程求解
第五章 作业
第五章 测验
第六章 分治算法
6.1 分治算法
6.2 分治类型
6.3 减少子问题个数
6.4 改进分治的均衡度
6.5 减少合并的时间
第六章 作业一
第六章 作业二
第六章 测验
第七章 动态规划
7.1 动态规划
7.2 数字三角形
7.3 增加变量
7.4 区间动归
7.5 DAG图
7.6 树图动归
7.7 序列比对
第七章 测验
第七章 作业一
第七章 作业二
第七章 作业三
第八章 回溯算法
8.1 装载问题
8.2 旅行商问题
8.3 基本特征
第八章 测验
第八章 作业
第九章 分支限界
9.1 0/1背包问题
9.2 旅行商问题
9.3 基本思想
第九章 作业
第九章 测验
第十章 网络流算法
10.1 最大流最小割
10.2 最大流算法
10.3 预流推进算法
10.4 最大流推广
10.5 最小费用最大流
10.6 二分匹配
10.7 二分匹配应用
10.8 最佳匹配
第十章 测验
第十章 作业一
第十章 作业二
第十一章 随机算法
11.1 随机算法1
11.2 随机算法2
第十一章 作业
第十一章 测验
第十二章 P与NP
12.1 P与NP
12.2 近似算法
混合教学课堂实录示例
第一章 课堂实录
第十一章 课堂实录