通过阅读《算法导论》篇前内容,从宏观上了解算法,对算法有一个整体上的印象和认识。
而《算法》一书分为排序、查找、图、字符串这四大块。
知识树
- 基本知识
- 算法是一项技术
- 设计和分析
- 表达方法
- 渐进表示
- 渐进符号
- 上界和下界
- 渐进表示
- 设计策略
- 基本思想
- 贪心法
- 分治法
- 动态规划
- 分治法与动态规划法实际上都是递归思想的运用
- 二者的根本策略都是对问题进行分解,找到大规模与小规模的关系,然后通过解小规模的解,得出大规模的解
- 适用于分治法的问题分解成子问题后,各子问题间无公共子子问题,而动态规划法相反
- 随机化
- 回溯法
- 表达方法
- 排序
- 概率分析和随机化算法
- 排序和顺序统计量
- 数据的结构
- 关键字
- 卫星数据
- why
- 本身需要排序
- 作为子程序
- 排序算法数量非常庞大
- 确定问题的下界
- 实现排序算法会出现工程问题
- 排序算法
- 插入排序
- 归并排序
- 堆排序
- 快速排序
- 计数排序
- 基数排序
- 桶排序
- 评估值
- 最坏运行时间
- 期望运行时间
- 顺序统计量:第i小的数?
- 数据的结构
- 数据结构
- 集合:现代数学的基础
- 计算机里的集合可变:动态集合
- 元素
- 用对象来表示
- 组成
- 关键字
- 全序集,如实数集合
- 卫星数据
- 关键字
- 操作
- 查询
- 修改
- 增加
- 删除
- 更新
- 元素
- 一些数据结构
- 栈
- 队列
- 链表
- 根树
- 散列表
- 二叉搜索树
- 红黑树
- B树
- B+树
- 从存储上分类
- 线性(顺序)表
- 链表
- 高级设计和分析技术
- 广泛使用的技术
- 分治策略
- 随机化方法
- 递归技术
- 设计分析高效算法的三种重要技术
- 动态规划:解决最优化问题
- 分解成子问题,避免重复求解子问题
- 贪心算法:通常用于最优化问题
- 追求局部最优解
- 拟阵理论?
- 摊还算法:分析序列整体的实际代价的界?
- 核算法
- 势能法
- 动态表
- 动态规划:解决最优化问题
- 广泛使用的技术
- 高级数据结构
- B树:为磁盘存储而专门设计的一类平衡搜索树
- 考量执行时间和磁盘存取次数
- 可合并堆的一种实现:斐波那契堆?
- van Emde Boas树
- 递归数据结构
- 用于不相交集合的一些数据结构
- 动态树:不相交的有根树的森林
- 边代价
- 结点到根的最小边代价路径
- 伸展树
- 持久数据结构?
- 聚合树
- 指数搜索树
- 动态图数据结构
- 顶点连通性
- 边连通性
- 最小生成树
- 双连通性
- 传递闭包
- B树:为磁盘存储而专门设计的一类平衡搜索树
- 图算法
- 图论
- 计算机表示
G = (V, E)
- 最小生成树:最小权重之和来连接所有结点
- 权重图:计算两个结点的最短路径
- 在流网络里计算出最大流
- 算法问题选编???
- 新的计算模型
- 电路
- 并行计算机
- 多线程算法:一种并行计算模型
- 矩阵操作
- LU分解
- LUP分解
- 高斯消元法求解线性方程组
- 矩阵求逆
- 矩阵乘法
- 计算最小二乘的近似解
- 线性规划:有限资源和竞争约束
- 单纯形算法
- 多项式
- 快速傅里叶变换(FFT)
- 实现方法:并行电路
- 快速傅里叶变换(FFT)
- 整数数论算法
- 计算最大公约数的欧几里得算法
- 应用:RSA公钥加密系统
- 随机性素数测试来高效地找到最大素数
- 字符串匹配
- 朴素字符串匹配
- RK算法
- 有限自动机
- KMP算法
- 计算几何学
- 基本性质
- “扫除”方法来判断线段是否有交点
- NP完全问题
- 很多计算问题都是NP完全的
- 至今没有解决这一问题的多项式时间算法
- 运用近似算法有效地找到NP完全问题的近似解
- 设计高效算法的一些已知局限
- 新的计算模型
- 用到的数学知识
- 级数求和
- 集合等离散数学的内容
- 集合
- 关系
- 函数
- 图
- 树
- 计数和概率
- 计数
- 概率
- 离散随机变量
- 几何分布与二项分布
- 矩阵与线性代数