课程概述
从辗转相除法到割圆术,从算盘到电子计算机,算法在人类文明发展中始终扮演着重要角色。如今,有计算的地方,就有算法的身影。从网上购物到出行规划,从工作学习到休闲娱乐,算法无所不在,已融入到人们生活的方方面面。
本课程是面向计算机和信息技术相关专业本科生的核心专业课,同时适合对算法的基础知识有学习需求的相关从业人员。课程汇聚了北航计算机学院顶级的算法授课团队,不但讲授分而治之、动态规划和贪心策略等经典算法技术,而且以产教融合的方式邀请阿里巴巴等互联网公司副总裁、ACM国际大学生程序设计竞赛世界冠军等产业界算法专家进行经验分享。
本课程具有对基础知识要求少、对核心方法讲解细、对算法本质剖析深、对产业需求分析准的特点。无论你是你是零基础的算法初学者,还是在算法刷题中困惑的求职者,相信本课程都将通过详细易懂的实例剖析降低理解难度,通过相关问题的归纳总结揭示算法本质,助你真正学懂算法!
授课目标
帮助学生掌握算法的定义、性质和表示方法,能够熟练使用伪代码对算法进行描述;
帮助学生掌握算法分析的理论工具,能够熟练采用渐近上界分析算法运行时间;
帮助学生掌握算法设计的常用方法,包括分而治之、动态规划、贪心策略;
帮助学生建立对简单计算问题的建模、分析、算法设计、算法优化和编程求解能力。
课程大纲
算法绪论篇
1.1 算法的由来
1.2 算法的定义
1.3 算法的表示
1.4 算法的分析
1.5 第四范式创始人戴文渊博士访谈:ICPC世界冠军的修炼之道
第1章单元测验
分而治之篇I
2.1 归并排序
2.2 递归式求解
2.3 最大子数组问题I
第2章单元测验
分而治之篇II
3.1 逆序对计数问题
3.2 快速排序
3.3 次序选择问题
3.4 阿里巴巴副总裁李飞飞博士访谈:双十一背后的大数据算法
第3章单元测验
动态规划篇I
4.1 0-1背包问题
4.2 最大子数组问题II
第4章单元测验
动态规划篇II
5.1 最长公共子序列问题
5.2 最长公共子串问题
5.3 编辑距离问题
第5章单元测验
动态规划篇III
6.1 钢条切割问题
6.2 矩阵链乘法问题
第6章单元测验
贪心策略篇
7.1 部分背包问题
7.2 霍夫曼编码
7.3 活动选择问题
第7章单元测验
图算法篇I
8.1 图的基本概念
8.2 广度优先搜索
8.3 深度优先搜索
第8章单元测验
图算法篇II
9.1 有向图的深度优先搜索
9.2 图中环路的存在性判断
9.3 拓扑排序
9.4 强连通分量
第9章单元测试
图算法篇III
10.1 最小生成树:Prim算法
10.2 最小生成树:Kruskal算法
第10章单元测试
图算法篇IV
11.1 单源最短路径:Dijkstra算法
11.2 单源最短路径:Bellman-Ford算法
11.3 全点对最短路径:Folyd-Warshall算法
第11章单元测试
图算法篇Ⅴ
12.1 最大二分匹配
12.2 最大流
12.3 图算法小结与课程总结
第12章单元测试
预备知识
掌握离散数学与数据结构的基础知识;
熟悉任何一门高级程序设计语言,如C/C++,Java,Python等;
具备高等数学、线性代数与概率统计的基本工科数学知识。