一、算法设计与分析概述
- 算法设计与分析
- 什么是算法? 算法有什么用? 为什么要学习算法设计与分析?
- 算法设计:技术(设计模式)、艺术(创造性思维)
- 算法设计的策略(模式、技术):贪心法、分治法、动态规划、…
- 算法的表示(描述):自然语言、伪代码
- 算法分析
- 时间复杂度:最好、最坏、平均
- 空间复杂度 2 渐近分析
- 渐近符号: $O,\Omega,\Theta,o,\omega$
- 递推方程: 迭代展开、递归树、假设验证(数学归纳法)、高阶方程的简化、主定理
- P和NP:算法复杂度和问题复杂度,P问题和NP问题
- 树和图
二、线性搜索
- 蛮力迭代
- 双指针迭代
三、贪心法
- 活动选择/区间调度(activity selection/Interval Scheduling)
- 找零钱
- 分数背包问题
- 断点选择
- 哈夫曼编码
- 任务调度(task Scheduling)
- Dijkstra最短路径算法
- 最小生成树
四、分治法
- 什么是分治法:
- 思想、分类、算法描述、性能分析
- 选最大与最小:分组、分治递归
- 二分查找、归并排序、汉诺塔
- 幂乘算法及其应用
- 整数乘、矩阵乘:减少子问题的数量
- 快速排序
- 选择问题(第k个)
- 最大子序列和(最大字段和)
- 最近点对
- 棋盘覆盖
- 循环赛日程表
五、动态规划法
- 动态规划 Fibonacci数列、
- 序列比对
- 矩阵链乘法
- 加权区间调度(weighted interval Scheduling)
- 背包问题
- 最长公共子序列
- 最大子序列和(最大字段和)
- 凸三角形最有剖分
- 最优二叉搜索树
- 图像压缩
六、状态空间搜索
- 什么是状态空间搜索
- 深度优先遍历与广度优先遍历
- 回溯法
-基于递归深度优先搜索的回溯法
- 全排列
- 子集
- N皇后问题
- 迷宫问题
- 8-Puzzle
- 基于堆栈的深度优先遍历
- 迷宫
- 8-Puzzle
- 分支定界
- 0-1背包问题
- 最大团问题
- 旅行售货员问题
七、网络流算法
- 二部图匹配
- 最大最小切
八、随机算法
- 数值随机化算法
- 舍伍德算法
- 拉斯维加斯算法
- 蒙特卡洛算法
您的打赏是对我最大的鼓励!