原笔记信息
- 原笔记来源:算分.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 公式
- :渐近下界;:渐近上界;:渐近紧确界。
- 常用关系:,;,;;。
- Stirling 公式: 推出 、、。
递推方程与主定理
- 常用方法:递归树、尝试法、用积分近似求和。
- 主定理:
1.关于主定理第三种情况,哪一项是需要同时满足的附加条件?
正确答案:C。
解析:第三种情况除 $f(n)=\Omega(n^{\log_b a+\epsilon})$ 外,还需要满足正则条件 $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:按 最小的原则扩展节点。
回溯主要剪去违反约束、已无法扩展成可行解的分支;分支限界还使用目标函数界,剪去即使补全也不可能优于当前最好解的分支。最大化问题常维护安全上界,最小化问题常维护安全下界。界可以不够紧,但不能错误排除最优解。
搜索结点通常保存部分决策、当前目标、剩余候选和界。深度优先占用空间少,且可能较早找到可行解以收紧界;最佳优先按界扩展,更可能快速接近最优值,但活结点优先队列可能很大。
最大团、TSP 与混合布尔优化
最大团可用“当前团大小 + 剩余候选数”作上界,图着色数还能给出更紧上界。TSP 可用当前路径长度加未连接顶点所需最短边构造下界。混合布尔凸优化固定离散变量后求凸子问题界,再对未定布尔变量分支;界函数质量直接决定实际搜索规模。
平摊分析
聚集、记账与势能法
- 聚集分析:平摊代价 = 总代价 / 操作数。
- 记账法:保证任意前缀的平摊代价总和不小于实际代价总和。
- 势能法:
- 栈:压入分配 2、弹出分配 0,可得 平摊。
- 二进制计数器:每步分配代价 2,给 1 预存翻转费用,平摊 。
- 动态表仅插入:扩容到 ,总代价 ,势函数 。
- 带删除动态表: 时收缩,势函数
- MTF 链表访问:每次访问后移到表头,势能分析说明不超过任意其他策略效率的 4 倍。
MTF 的势能证明
在单链表中访问第 个元素的代价为 ,交换一对相邻元素的代价为 。MTF(Move-To-Front)每次访问元素 后,用相邻交换把它移动到表头。
比较 MTF 与任意策略 ,定义势函数:
设访问前 在 MTF 中排第 ,在 中排第 :
- MTF 访问和前移的实际代价为 。
- 在 尚未交换元素时,前移 引起的势能变化至多为 。
- 因而这一步的平摊代价
- 若 随后做 次相邻交换,势能至多增加 ,仍不超过 交换代价的 4 倍。
所以对任意访问序列,MTF 的总代价不超过任意其他策略总代价的 4 倍。这里比较的是整段序列的竞争保证,不是说每一次访问都逐次快于其他策略。
三种方法结论等价但视角不同:聚集分析直接估计最坏操作序列总成本;记账法给便宜操作多收费并储存信用;势能法把信用统一写成状态函数。证明必须保证任意前缀信用不为负,或满足 ,否则平摊总和可能低估真实总成本。
5.势能法中,平摊代价的表达式是哪一个?
正确答案:B。
解析:势能法的平摊代价为 $\hat c_i=实际代价_i+\Phi(D_i)-\Phi(D_{i-1})$。
线性规划
标准形、基本可行解与单纯形
- 标准形:最小化 ,等式约束 ,变量非负。
- 基本解:选 中 个线性无关列为基 ,令非基变量为 0,解 。
- 基本可行解:基本解且 。
- 两个基础结论:
- 标准形有可行解,则必有基本可行解。
- 标准形有最优解,则必有一个基本可行解为最优解。
- 最优性检验:对最小化问题,若所有检验数 ,当前基本可行解最优;若存在 且对应列全 ,则无最优解。
- Bland 规则:换入变量、换出变量都取符合条件的最小下标,可避免循环。
单纯形从一个基本可行解沿可行域多面体的边移动。最小化问题中,负检验数给出可改进的换入方向;比值检验保证变量增加时仍保持非负,并确定换出变量。若换入列没有限制其增长的正系数,目标无界。退化时步长可能为 0,Bland 规则用于避免基之间循环。
对偶与互补松弛
- 弱对偶:原问题可行解 、对偶可行解 满足 。
- 强对偶:若原问题和对偶问题都有最优解,则最优值相同。
- 互补松弛:变量和对应松弛量至少一个为 0,可用于证明某个解最优。
弱对偶给出可验证的目标界:任意原、对偶可行解都满足固定大小关系。若找到目标值相同的一对可行解,就能直接证明双方最优。互补松弛把这种相等关系拆成逐变量条件,也常用于从一侧最优解恢复另一侧。
线性与整数规划建模
- :引入 ,最小化 且 。
- 绝对值:用 或 。
- L1 拟合: 转为 。
- 线性分类:用 和 线性化 hinge loss。
- 整数规划:松弛规划提供界;分支限界通过添加 、 分裂。
- 0-1 乘积消除:
6.标准形线性规划的要求不包括哪一项?
正确答案:C。
解析:标准形要求最小化、等式约束、$b\geq0$、变量非负;整数性属于整数规划。
网络流
最大流、最小割与增广链
- 容量网络 。
- 可行流满足容量限制和平衡条件;流量是源点净流出。
- 割容量 。
- 任意可行流 和割 满足 。
- 若 ,则 是最大流, 是最小割。
- 无 增广链等价于已经是最大流。
Ford-Fulkerson、Edmonds-Karp 与 Dinic
- Ford-Fulkerson:不断找增广链;整数容量时有限终止,复杂度 。
- 余量网络:正边表示剩余容量,反边表示可退流。
- Edmonds-Karp:BFS 找最短增广链,复杂度 。
- Dinic:构造分层辅助网络并求极大流,复杂度 。
余量网络的反向边表示可以撤销既有流量,并非原网络中的真实通道。Ford-Fulkerson 在整数容量时每次至少增广 1,因而有限终止;任意实数容量下,随意选路可能不终止。Edmonds-Karp 固定选择边数最少的增广路,Dinic 则在同一分层图中一次求阻塞流。

图中取 ,满足 。若每轮都按特定增广路选择,可让增广量依次成为 ,不断趋近于 0 而不在有限步达到最大流。这说明“存在增广路”不足以保证任意选路策略有限终止。
最小费用流
- 辅助网络在余量网络基础上给反边取负费用。
- 负回路算法:可行流最小费用当且仅当辅助网络无负回路。
- 最短路径算法:从 的最小费用流出发,沿余量网络最短路增广,可得到更大流量的最小费用流。
网络流建模模板
- 棒球淘汰:比赛点到球队点,最大流判断源点边是否满流。
- 带下界可行流:先给每条边流 ,转为点需求问题。
- Project Selection:正收益从 连边,负收益向 连边,依赖边容量 ,最小割对应最大收益。
- 图像分割:前景/背景概率和相邻不同惩罚转为最小割。
- 最大密度子图:二分 ,构造最小割判断是否存在密度不小于 的子图。
- 整数流定理:容量等为整数时,网络流线性规划存在整数最优解;更一般地,TU Matrix 的线性规划存在整数最优解。
建模时要先明确“哪些边必须满流、割断一条边表示放弃什么”。带下界流先预送每条边的下界,再把各点不平衡量转成需求;增设超级源和超级汇后,检查附加边是否全部满流。最大闭包类问题用无限容量依赖边保证选择一个项目时必须选择其前置项目。
7.关于最大流最小割,哪一项是正确结论?
正确答案:A。
解析:流值等于某割容量时,流达到所有割给出的上界,因此该流最大且该割最小。
问题复杂度分析
决策树、对手论证与规约
- 问题复杂度可理解为最优算法复杂度;算法给上界,下界证明给不可突破的限制。
- 平凡下界:输入、输出规模。
- 决策树模型:基于比较的算法对应决策树;排序的最坏复杂度下界为 。
- 选择问题:
- 找最大:。
- 找最大和最小:上界 ,并可通过下界思路说明必要比较次数。
- 找第二大:锦标赛算法 。
- 找中位数:奇数 时至少 次比较。

找最大和最小的下界可用对手状态证明。把元素标为 N(未比较)、W(只赢过)、L(只输过)、WL(既赢又输);算法结束时必须留下一个 W、一个 L,其余全为 WL。对手总选择让一次比较新增的信息单位尽量少,从而迫使算法至少进行 次比较。

- 图连通性对手论证:通过维护确定存在的边 和可能存在的边 ,可说明必须遍历所有边。
- 元素唯一性:YES 叶子至少 ,复杂度 。
- 规约:若 已知下界且 ,则 至少和 一样难;最近点对、MST 可由元素唯一性规约得到 。
8.基于比较的排序问题,最坏复杂度下界来自哪一项?
正确答案:D。
解析:排序的不同输入排列对应决策树叶子,因此至少有 $n!$ 个叶子,深度下界为 $\lceil\log(n!)\rceil$。
NP 完全问题
P、NP 与证明模板
证明一个新判定问题 为 NP 完全通常分两步:先给出多项式时间验证器说明 ;再从已知 NP 完全问题 构造多项式变换 。规约方向不能写反,从 规约到已知难问题只说明 不比它更难。
规约还要证明原实例为 YES 当且仅当构造后的实例为 YES,并说明构造规模与时间为多项式。优化问题通常先增加目标阈值,改写成判定问题再讨论 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。
近似算法
近似比、下界与近似方案
- 最小化问题近似性能:。
- 最大化问题近似性能:。
- 常数近似比:存在常数 使所有实例 。
近似证明必须把算法值与同一实例的最优值联系起来。分析通常先找一个容易计算的最优值下界,再证明算法代价不超过该下界的常数倍。PTAS 对每个固定 都在输入规模上为多项式时间,但指数可依赖 ;FPTAS 还要求对输入规模和 都为多项式时间。
调度、TSP、背包与覆盖
- 多机调度 G-MPS:把任务分给当前负载最小机器,。
- 多机调度 DG-MPS:先按时间从大到小排序,再贪心,。
- 满足三角形不等式的 TSP:
- 最近邻法不是常数近似比。
- MST 法是 2 近似。
- 最小权匹配法部分先给出 ;后文出现“ 近似”表述,与前式不一致,复习时应回到上下文核对。

MST 法先求最小生成树,再把树边加倍得到欧拉回路,最后利用三角形不等式跳过重复顶点,因此算法值小于 。图示构造满足 、,近似比达到 ,说明仅靠这套分析不能把保证改进到 2 以下。
- 不满足三角形不等式的 TSP:若存在常数近似算法,则可多项式解决 HC,推出 。
- 01 背包:
- G-KK 按 贪心并与最大单物品比较,满足 。
- PTAS:枚举前 个物品组合后用 G-KK。
- FPTAS:缩放价值后做伪多项式 DP,复杂度 。
- Set Cover 贪心:按 选,近似比为调和级数级别;紧实例说明无常数近似比。
- LP 舍入:若元素最大出现次数为 ,选 的集合,近似比为 。
- 原始-对偶模式:若满足松弛互补条件的 版本,目标函数差距不超过 。
10.多机调度 G-MPS 的近似保证是什么?
正确答案:C。
解析:G-MPS 把任务分给当前负载最小机器,可推导出 $G-MPS(I)\leq(2-\frac1m)OPT(I)$。
随机算法
Las Vegas、Monte Carlo 与复杂度类
- 拉斯维加斯算法:结果总正确,运行时间随机;有效时要求期望多项式时间。
- 蒙特卡洛算法:运行时间多项式,结果有概率出错。
- RP:单侧错误,弃真型;co-RP:单侧错误,取伪型;BPP:双侧错误。
Las Vegas 的随机性只影响运行时间,输出始终正确;Monte Carlo 保证多项式时间但允许错误。若单次独立试验错误概率小于 ,重复并多数表决可指数降低错误率;使用概率放大时必须保证各次随机选择独立。
随机化典型问题与 Chernoff 界
- 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 最小权匹配法部分存在“”和“”表述不一致,复习时应回到上下文核对。