原笔记信息
- 原笔记来源:class_notes/算分/算分.md
复习建议
- 第一轮先看“速览”和“易错点 / 高频考点”,把每个一级章节的核心目标串起来。
- 第二轮重点背公式和结论:主定理、平摊势函数、LP 对偶、最大流最小割、近似比、Chernoff Bound、竞争比。
- 第三轮按题型复习证明:贪心交换论证、网络流建模、NP 规约、决策树下界、近似比推导。
- 做选择题时,错题回到对应章节,特别检查“适用条件”:如三角形不等式、整数容量、标准形、在线/离线区别。
本资料由原笔记蒸馏整理,建议配合原笔记查漏补缺。
速览
- 渐近界、Stirling 公式、递推方程和主定理是复杂度分析的基础;主定理第三种情况需要正则条件。
- 分治优化主要从三处入手:减小合并代价、减少子问题个数、减少子问题总代价;典型例子包括最近点对、Karatsuba 整数乘法、FFT。
- 动态规划重点是状态定义和空间优化;Hirschberg 算法在编辑距离问题中保持 时间,同时把空间降到 。
- 贪心算法常用归纳法或交换论证证明;活动选择、区间划分、最坏延迟调度、Huffman、MST、Dijkstra、拟阵贪心是核心样例。
- 线性规划部分要掌握标准形、基本可行解、单纯形最优性检验、对偶性、互补松弛性,以及把绝对值、min-max、整数约束等转化为规划模型的方法。
- 网络流围绕最大流最小割、增广链、余量网络、FF/EK/Dinic、最小费用流和建模展开;很多组合问题可通过最小割或可行流表达。
- 复杂度与 NP 完全性侧重下界证明、决策树、对手论证、规约、多项式时间变换,以及 SAT、3SAT、VC、HC、TSP、子集和、背包等 NPC 问题链。
- 近似、随机、在线算法分别关注近似比、错误概率/期望时间、竞争比;典型结论包括多机调度 2 近似、背包 PTAS/FPTAS、Chernoff Bound、LRU 的 竞争比。
知识点整理
基础知识
核心概念
- :渐近下界;:渐近上界;:渐近紧确界。
- 常用关系:,;,;;。
- Stirling 公式: 推出 、、。
递推方程
- 常用方法:递归树、尝试法、用积分近似求和。
- 主定理:
1. 关于主定理第三种情况,哪一项是原笔记明确要求的附加条件?
正确答案:C。解析:原笔记在第三种情况中除 $\Omega$ 条件外,还写明需要 $af(n/b)\leq cf(n)$ 的条件。
分治
核心流程
- 分治结构:divide、conquer、combine。
- 一般递推:
- 改进途径:
- 预处理减小递归内部计算量 。
- 代数变换减少子问题个数 。
- 减少子问题总代价 。
典型例子
- 确定性选择算法:三元组可得 ;五元组可得 。
- 二维最近点对:分治后只需检查宽 条带;按 排序后 只需检查 ,复杂度 。
- 整数乘法:普通拆分 ;用 降为 。
- 卷积 / 单位根插值:利用 分治,复杂度 。
2. 确定性选择算法中,原笔记指出哪种分组方式可得到线性复杂度?
正确答案:B。解析:三元组版本原笔记给出 $O(n\log n)$;五元组版本通过减少子问题总代价得到 $O(n)$。
动态规划
最小编辑距离
- 定义: 的编辑距离是通过删除、增加、替换使二者相同的最小操作次数。
- 状态: 表示 的编辑距离。
- 原笔记给出转移:
- 时间复杂度 ;滚动数组空间 。
Hirschberg 算法
- 思路:把 从中间切开,分别算前缀 DP 和反向后缀 DP,找出分割 的位置 后递归。
- 时间复杂度仍为 。
- 两次 DP 可用滚动数组,递归只保留分割变量,空间复杂度 。
图的最大独立集与树分解
- 树分解 要满足点覆盖、边覆盖、同一图顶点对应的树节点连通。
- 宽度为 ;图的树宽是所有树分解中的最小宽度。
- 树宽为 时,可用树形 DP,原笔记给出复杂度 。
3. Hirschberg 算法相对普通编辑距离 DP 的主要空间优势是什么?
正确答案:D。解析:原笔记说明 Hirschberg 时间复杂度不变,为 $O(mn)$,空间复杂度为 $O(m+n)$。
贪心
证明方法
- 归纳法。
- 交换论证 / 调整法。
经典问题
- 活动选择:按结束时间 从小到大排序,能选则选;用交换论证证明。
- 区间划分:按起点 从小到大排序,能放则放;答案达到任意时刻最大重叠数下界。
- 最坏延迟最小化调度:按截止时间 从小到大安排;通过消除逆序证明最优。
- 最优缓存调度:FF(Furthest in Future)回收未来最迟访问的数据;原笔记证明它是最优调度。
- Huffman 编码:最小频率的两个字符可作为最深且仅最后一位不同的一对叶子,递归合并得到最优编码。
- MST:Prim 和 Kruskal 都通过交换论证证明每步选择可包含于某个最优解。
- Dijkstra:每步加入当前可达最短的点,用归纳证明维护集合内最短路正确。
拟阵
- 拟阵 满足有穷性、遗传性、交换性。
- 所有极大独立子集大小相同。
- 加权拟阵中,按权重排序并能加入则加入,可求最优子集。
- 任务调度问题可规约为拟阵最优子集:最大化早任务惩罚之和等价于最小化迟任务惩罚。
4. 活动选择问题的贪心策略是什么?
正确答案:A。解析:原笔记对活动选择给出的算法是按 $r_i$ 从小到大排序,能选则选,并用交换论证证明。
回溯与分支限界
- 多米诺性质: 用于说明前缀已错则后续一定错,可剪枝。
- Monte Carlo 估计搜索树节点数:随机走一条路径,根据路径分支数乘积 估计树大小,多次取平均。
- 分枝限界:为子树设计上界/下界,维护当前最好可行解;不满足约束或界已经不可能优于当前解时剪枝。
- 最大团:可转为补图最大独立集;可用 或 剪枝。
- TSP:可用剩余点最短边或最短边+次短边构造代价函数。
- LCBB:按 最小的原则扩展节点。
平摊分析
- 聚集分析:平摊代价 = 总代价 / 操作数。
- 记账法:保证任意前缀的平摊代价总和不小于实际代价总和。
- 势能法:
- 栈:压入分配 2、弹出分配 0,可得 平摊。
- 二进制计数器:每步分配代价 2,给 1 预存翻转费用,平摊 。
- 动态表仅插入:扩容到 ,总代价 ,势函数 。
- 带删除动态表: 时收缩,势函数
- MTF 链表访问:每次访问后移到表头,势能分析说明不超过任意其他策略效率的 4 倍。
5. 势能法中,平摊代价的表达式是哪一个?
正确答案:B。解析:原笔记给出 $\hat c_i=实际代价_i+\Phi(D_i)-\Phi(D_{i-1})$。
线性规划
标准形与单纯形
- 标准形:最小化 ,等式约束 ,变量非负。
- 基本解:选 中 个线性无关列为基 ,令非基变量为 0,解 。
- 基本可行解:基本解且 。
- 两个基础结论:
- 标准形有可行解,则必有基本可行解。
- 标准形有最优解,则必有一个基本可行解为最优解。
- 最优性检验:对最小化问题,若所有检验数 ,当前基本可行解最优;若存在 且对应列全 ,则无最优解。
- Bland 规则:换入变量、换出变量都取符合条件的最小下标,可避免循环。
对偶与互补松弛
- 弱对偶:原问题可行解 、对偶可行解 满足 。
- 强对偶:若原问题和对偶问题都有最优解,则最优值相同。
- 互补松弛:变量和对应松弛量至少一个为 0,可用于证明某个解最优。
建模技巧
- :引入 ,最小化 且 。
- 绝对值:用 或 。
- L1 拟合: 转为 。
- 线性分类:用 和 线性化 hinge loss。
- 整数规划:松弛规划提供界;分支限界通过添加 、 分裂。
- 0-1 乘积消除:
6. 标准形线性规划的要求不包括哪一项?
正确答案:C。解析:标准形要求最小化、等式约束、$b\geq0$、变量非负;整数性属于整数规划。
网络流
最大流最小割
- 容量网络 。
- 可行流满足容量限制和平衡条件;流量是源点净流出。
- 割容量 。
- 任意可行流 和割 满足 。
- 若 ,则 是最大流, 是最小割。
- 无 增广链等价于已经是最大流。
算法
- Ford-Fulkerson:不断找增广链;整数容量时有限终止,复杂度 。
- 余量网络:正边表示剩余容量,反边表示可退流。
- Edmonds-Karp:BFS 找最短增广链,复杂度 。
- Dinic:构造分层辅助网络并求极大流,原笔记给出复杂度 。
最小费用流
- 辅助网络在余量网络基础上给反边取负费用。
- 负回路算法:可行流最小费用当且仅当辅助网络无负回路。
- 最短路径算法:从 的最小费用流出发,沿余量网络最短路增广,可得到更大流量的最小费用流。
建模
- 棒球淘汰:比赛点到球队点,最大流判断源点边是否满流。
- 带下界可行流:先给每条边流 ,转为点需求问题。
- Project Selection:正收益从 连边,负收益向 连边,依赖边容量 ,最小割对应最大收益。
- 图像分割:前景/背景概率和相邻不同惩罚转为最小割。
- 最大密度子图:二分 ,构造最小割判断是否存在密度不小于 的子图。
- 整数流定理:容量等为整数时,网络流线性规划存在整数最优解;更一般地,TU Matrix 的线性规划存在整数最优解。
7. 关于最大流最小割,哪一项符合原笔记结论?
正确答案:A。解析:原笔记引理 3 说明流值等于某割容量时,流最大且割最小。
问题复杂度分析
- 问题复杂度可理解为最优算法复杂度;算法给上界,下界证明给不可突破的限制。
- 平凡下界:输入、输出规模。
- 决策树模型:基于比较的算法对应决策树;排序的最坏复杂度下界为 。
- 选择问题:
- 找最大:。
- 找最大和最小:上界 ,原笔记也给出对应下界思路。
- 找第二大:锦标赛算法 。
- 找中位数:奇数 时至少 次比较。
- 图连通性对手论证:通过维护确定存在的边 和可能存在的边 ,可说明必须遍历所有边。
- 元素唯一性:YES 叶子至少 ,复杂度 。
- 规约:若 已知下界且 ,则 至少和 一样难;最近点对、MST 可由元素唯一性规约得到 。
8. 基于比较的排序问题,原笔记给出的最坏复杂度下界来自哪一项?
正确答案:D。解析:排序的不同输入排列对应叶子,原笔记用 $n!$ 个叶子推出 $\lceil\log(n!)\rceil$ 下界。
NP 完全问题
- P:多项式时间可计算的判定问题。
- NP:多项式时间可验证的判定问题。
- 多项式时间变换:,记 。
- NP-hard:所有 NP 问题都能规约到它。
- NPC:属于 NP 且 NP-hard。
- SAT 是 NPC;MAX-SAT 可由 SAT 取 得到 NP-hard;3SAT 可用局部替换法由 SAT 规约。
- 典型 NPC 链:
- ,并关联顶点覆盖、独立集、团。
- 有向 HC HC,HC TSP。
- SAT 恰好覆盖,恰好覆盖 子集和,子集和 01 背包。
- 子集和 双机调度;双机调度可看作装箱子问题。
9. 一个问题是 NPC 需要满足什么?
正确答案:B。解析:原笔记定义 NP 完全性为 NP-hard 且属于 NP。
近似算法
- 最小化问题近似性能:。
- 最大化问题近似性能:。
- 常数近似比:存在常数 使所有实例 。
典型算法
- 多机调度 G-MPS:把任务分给当前负载最小机器,。
- 多机调度 DG-MPS:先按时间从大到小排序,再贪心,。
- 满足三角形不等式的 TSP:
- 最近邻法不是常数近似比。
- MST 法是 2 近似。
- 最小权匹配法原笔记先给出 ;后文出现“ 近似”表述,与前式不一致,复习时应按原笔记上下文核对。
- 不满足三角形不等式的 TSP:若存在常数近似算法,则可多项式解决 HC,推出 。
- 01 背包:
- G-KK 按 贪心并与最大单物品比较,满足 。
- PTAS:枚举前 个物品组合后用 G-KK。
- FPTAS:缩放价值后做伪多项式 DP,复杂度 。
- Set Cover 贪心:按 选,近似比为调和级数级别,原笔记给出紧实例说明无常数近似比。
- LP 舍入:若元素最大出现次数为 ,选 的集合,近似比为 。
- 原始-对偶模式:若满足松弛互补条件的 版本,目标函数差距不超过 。
10. 多机调度 G-MPS 的近似保证是什么?
正确答案:C。解析:原笔记完整推导了 $G-MPS(I)\leq(2-\frac1m)OPT(I)$。
随机算法
- 拉斯维加斯算法:结果总正确,运行时间随机;有效时要求期望多项式时间。
- 蒙特卡洛算法:运行时间多项式,结果有概率出错。
- RP:单侧错误,弃真型;co-RP:单侧错误,取伪型;BPP:双侧错误。
典型例子
- MAX-3SAT:随机赋值使子句满足概率 ,得到 随机近似。
- 竞争解决:每个进程以 访问 DB,单进程成功概率为 ;经过 时间,高概率所有进程至少成功一次。
- n 皇后:前
stopVegas行用拉斯维加斯随机选择,后面回溯;。 - 矩阵乘法检验:随机 ,检查 ,复杂度 ,属于 co-RP。
- 2SAT 随机游动:可满足时,重复 次可把错误概率降到 。
- Chernoff Bound:
- 负载均衡: 时,随机分配高概率保证最大负载为 。
- APSP:通过图平方、矩阵乘法和证据查找,可达 。
11. 矩阵乘法检验算法在原笔记中属于哪类随机算法?
正确答案:A。解析:若 $AB=C$ 检验总通过;若不等,至少一半概率发现错误,因此是取伪型 co-RP。
在线算法
- 在线算法:输入序列逐步到达,算法只知道过去请求。
- 竞争比:若 ,则称 A 是 -竞争。
K 服务问题
- 贪心“最近车响应”不一定好;原笔记给出 的反例。
- 构造 、每次请求空位置,可证明竞争比下界为 。
- K 服务猜想:存在一般 K 服务问题的 竞争在线算法;一些特殊情形已找到。
页调度
- 页调度可看作完全图、边权为 1 的 K 服务问题。
- LRU:按阶段划分,每阶段 LRU 恰有 次缺页,OPT 至少 1 次缺页,因此 LRU 竞争比为 。
- FF 可作为最优离线算法用于下界证明。
对称移动算法
- 适用于直线上的 k 服务问题,竞争比为 。
- 势函数:
- 树上推广:所有有效服务以相同速度向请求点移动,势函数思路为 。
12. 页调度问题中,原笔记证明 LRU 的竞争比为多少?
正确答案:D。解析:原笔记通过阶段划分证明 LRU 每阶段至多 $k$ 次缺页,而 OPT 至少一次,因此竞争比为 $k$。
易错点 / 高频考点
- 主定理第三种情况除了 ,还需要正则条件 。
- 确定性选择算法三元组只能得到 ,五元组才得到 。
- 最近点对合并时不是检查所有条带内点,而是按 排序后只检查常数范围。
- 贪心证明不要只写“直觉最优”,常见要求是交换论证或归纳不变式。
- FF 缓存策略是离线最优;LRU 是在线算法,竞争比为 ,二者适用场景不同。
- 单纯形最优性检验中,检验数符号要和“最小化标准形”一致。
- 弱对偶只能给上下界;强对偶需要双方都有最优解。
- 最大流最大值等于最小割容量;不是任意割都等于当前流值。
- Ford-Fulkerson 对整数容量有限终止;无理容量可能不终止。
- NP-hard 不等于 NPC;NPC 还必须属于 NP。
- 近似比对最小化和最大化问题的分式方向不同。
- 原笔记中 TSP 最小权匹配法部分存在“”和“”表述不一致,复习时应回到原文上下文核对。