第1章 算法概述
1.1 算法是什么
1.2 算法示例(1):深度优先搜索和广度优先搜索
1.3 算法示例(2):匹配
1.4 算法的描述方法
1.5 学习算法的意义
第2章 计算复杂度和大O记法
2.1 计算复杂度是什么
2.2 计算复杂度的大O记法
2.3 计算复杂度的示例(1):偶数的枚举
2.4 计算复杂度的示例(2):最近点对问题
2.5 计算复杂度的使用
2.6 关于计算复杂度的说明
2.7 Landau的大O记法的细节(*)
2.8 小结
第3章 设计技巧(1):穷举搜索
3.1 学习穷举搜索的意义
3.2 穷举搜索(1):线性搜索法
3.3 线性搜索法的应用
3.4 穷举搜索(2):成对的穷举搜索
3.5 穷举搜索(3):组合的穷举搜索(*)
3.6 小结
第4章 设计技巧(2):递归和分治法
4.1 递归是什么
4.2 递归示例(1):欧几里得算法
4.3 递归示例(2):斐波那契数列
4.4 记忆化处理并应用动态规划
4.5 递归示例(3):使用递归函数的穷举搜索法
4.6 分治法
4.7 小结
第5章 设计技巧(3):动态规划
5.1 动态规划是什么
5.2 动态规划的示例问题
5.3 关于动态规划的各种概念
5.4 动态规划示例(1):背包问题
5.5 动态规划示例(2):求解编辑距离
5.6 动态规划示例(3):区间分割的最优化
5.7 小结
第6章 设计技巧(4):二分搜索
6.1 数组的二分搜索
6.2 C++的std::lower_bound()
6.3 泛化的二分搜索
6.4 进一步泛化的二分搜索(*)
6.5 应用示例(1):猜年龄游戏
6.6 应用示例(2):std::lower_bound()的使用示例
6.7 应用示例(3):将最优化问题归约为判定问题
6.8 应用示例(4):求解中位数
6.9 小结
第7章 设计技巧(5):贪婪法
7.1 贪婪法是什么
7.2 贪婪法不一定产生最优解
7.3 贪婪法模式(1):不会变差的交换
7.4 贪婪法模式(2):现在越好,未来也越好
7.5 小结
第8章 数据结构(1):数组、链表、哈希表
8.1 学习数据结构的意义
8.2 数组
8.3 链表
8.4 链表的插入操作和删除操作
8.5 数组与链表的比较
8.6 哈希表
8.7 小结
第9章 数据结构(2):栈和队列
9.1 栈和队列的概念
9.2 栈和队列的操作和实现
9.3 小结
第10章 数据结构(3):图与树
10.1 图
10.2 利用图进行建模的示例
10.3 图的实现
10.4 加权图的实现
10.5 树
10.6 有序树与二叉树
10.7 使用二叉树的数据结构示例(1):堆
10.8 使用二叉树的数据结构示例(2):二叉查找树
10.9 小结
第11章 数据结构(4):并查集
11.1 并查集是什么
11.2 并查集的机制
11.3 降低并查集的计算复杂度的方法
11.4 并查集的优化方法之一:按大小合并
11.5 并查集的优化方法之二:路径压缩
11.6 并查集的实现
11.7 并查集的应用:计算图的连通分量个数
11.8 小结
第12章 排序
12.1 排序是什么
12.2 排序算法的优劣
12.3 排序(1):插入排序
12.4 排序(2):归并排序
12.5 排序(3):快速排序
12.6 排序(4):堆排序
12.7 排序算法的下界
12.8 排序(5):桶排序
12.9 小结
第13章 图(1):图搜索
13.1 学习图搜索的意义
13.2 深度优先搜索与广度优先搜索
13.3 使用递归函数进行深度优先搜索
13.4 前序遍历和后序遍历
13.5 最短路径算法中的广度优先搜索
13.6 深度优先搜索和广度优先搜索的计算复杂度
13.7 图搜索的示例(1):查找s-t路径
13.8 图搜索的示例(2):二部图判定
13.9 图搜索的示例(3):拓扑排序
13.10 图搜索的示例(4):树上的动态规划(*)
13.11 小结
第14章 图(2):最短路径问题
14.1 最短路径问题是什么
14.2 最短路径问题的整理
14.3 松弛
14.4 DAG上的最短路径问题:动态规划法
14.5 单源最短路径问题:贝尔曼-福特算法
14.6 单源最短路径问题:迪杰斯特拉算法
14.7 全点对间最短路径问题:弗洛伊德-沃舍尔算法
14.8 参考:势能和差分约束系统(*)
14.9 小结
第15章 图(3):最小生成树问题
15.1 最小生成树问题是什么
15.2 克鲁斯卡尔算法
15.3 克鲁斯卡尔算法的实现
15.4 生成树的结构
15.5 克鲁斯卡尔算法的正确性(*)
15.6 小结
第16章 图(4):网络流
16.1 学习网络流的意义
16.2 图的连通度
16.3 最大流和最小割问题
16.4 福特-富尔克森方法的实现
16.5 应用示例(1):二部匹配
16.6 应用示例(2):点连通度
16.7 应用示例(3):项目选择
16.8 小结
第17章 P与NP问题
17.1 问题难度的衡量方式
17.2 P类与NP类
17.3 P≠NP猜想
17.4 NP完全问题
17.5 多项式时间归约的例子
展开