Algorithm Design · Lecture 2-4

渐近记号:收官大总结Asymptotic Notations: Summary

这是渐近记号的收官课。三件事:把 O/Ω/Θ 与 best/worst case 的关系一句话钉死(正交,别再混);拆解教授亲口所称的"核武器"——极限判别法,对付形状狰狞的函数,一步定档;最后立下写答案的行规:最简形。收尾再开一场八回合竞技场,把两周攒下的兵器全部拉出来遛一遍。

✓ 第一周:对不对·怎么数 ✓ O:尺子·实战·工具箱 ✓ Ω 与 Θ:配齐三把尺 ▶ 大盘点 + 核武器
Ke Chen · May 21, 2026 承接 Lecture 2-3 可交互 中英双语
向下滚动开始 · scroll to begin
01

收官全景:我们已经拥有什么 / Where we are

教授开场:"This is the last video in the introduction of asymptotic notations."(这是渐近记号导论的最后一个视频。)总结课不补新地基——它把两周的地基连成一张地图,再塞给你一件此前没有的重武器。

先清点家底。两周下来,你的军火库里已经有:

来自兵器一句话
1-2best / worst / average case同一个算法可以谈好几条"运行时间函数"
1-3Big-O 定义 + 证书 (c, n₀)增长率意义下的"≤":上界
2-1证明/证伪攻防术放缩、c–n₀ 交易、量词翻转、对抗游戏
2-2九条性质 P1–P9 + 食物链log ≺ 多项式 ≺ 指数;多项式看首项
2-3Ω(下界)与 Θ(夹住)"≥"与"=",三把尺子配齐

今天这节课,幻灯片一共只有四页——但每页都是一颗钉子:

幻灯片钉什么去处
1/4O 与 Ω 的"上界/下界"复述§02 ↓
2/4bound 与 case 是正交选择§03 ↓
3/4极限判别法(核武器)+ 证明§04–06 ↓
4/4最简形:写答案的行规§07 ↓
大盘点:竞技场 + 大一统表(本课补给)§08–09 ↓
总结课怎么学才不亏 别把它当"复习课"滑过去。这节课有两样全新的东西:极限判别法(以后对付怪函数的主力工具,且要求你会证它)和最简形规矩(以后每一次作业、考试写答案的格式红线)。旧知识则第一次被拼成一个系统——拼图的形状,恰恰是考试最爱考的。
02

三把尺子,一张图 / O · Ω · Θ on one plot

幻灯片 1/4 用两段完全平行的话复述 O 和 Ω。注意教授反复敲的黑板:比的是增长率 (growth rate),"we're not talking about absolute values of the functions"——不是比谁的数值大。

Recap · 三份证书 / three certificates
f = O(g)  ⟺  ∃ c, n₀ ∀ n ≥ n₀:f(n) ≤ c·g(n)  —— f 增长不快于 g(no faster than),g 是上界
f = Ω(g)  ⟺  ∃ c, n₀ ∀ n ≥ n₀:f(n) ≥ c·g(n)  —— f 增长不慢于 g(no slower than),g 是下界
f = Θ(g)  ⟺  O 且 Ω:∃ c₁, c₂, n₀ ∀ n ≥ n₀:c₁·g(n) ≤ f(n) ≤ c₂·g(n)  —— 同档,上下夹住

三把尺子在图上长什么样?拿 f(n) = 2n² + 8ng(n) = n² 亲手夹一次——上尺 c₂·n² 从头顶压,下尺 c₁·n² 从脚底托,两把都夹住,f 就被"焊死"在 n² 档:

互动 · 三尺夹心台:给 2n² + 8n 办 Θ(n²) 证书
下尺 c₁ = 1 2 2.2 上尺 c₂ = 2.5 3 4
显示上尺 c₂·n² 显示下尺 c₁·n²
f(n) = 2n²+8n 上尺 c₂·n²(虚线) 下尺 c₁·n²(虚线)
试出三个手感 ① 上尺 c₂ 越小,门槛 n₀ 越靠右(c₂=2.5 要等到 n=16;c₂=4 只要 n=4)——2-1 学的 c–n₀ 交易又见面了。② 下尺 c₁ 只要 ≤ 2(首项系数)就永远托得住;敢喊 2.2,n=41 起尺子就戳到 f 头上(下界失效),而且永不翻身——下界常数不能贪。③ 两把尺子同一个 g、常数不同——Θ 从不要求 c₁ = c₂。
正式写一遍:2n² + 8n = Θ(n²) · Write-up
上界(放缩法) n ≥ 1 时 8n ≤ 8n²,故 2n²+8n ≤ 10n²。证书 (c₂, n₀) = (10, 1)。也可解不等式:2n²+8n ≤ 3n² ⟺ n ≥ 8,得更贴身的 (3, 8)——证书从不唯一(2-1)。
下界 8n ≥ 0,故 2n²+8n ≥ 2n²,对所有 n ≥ 1。证书 (c₁, n₀) = (2, 1)。
合体 取 n₀ = max{1, 8} = 8:对 n ≥ 8,2n² ≤ 2n²+8n ≤ 3n²。三元证书 (c₁, c₂, n₀) = (2, 3, 8),故 f = Θ(n²)。∎
品一品 上界随便放大保真,下界不许托过首项系数——"≤ 可以慷慨,≥ 必须诚实"。这就是上下界不对称的手感来源。
03

bound × case:两根独立的轴 / Independent, orthogonal choices

幻灯片 2/4 只有三行字,却是全课最容易考、最容易错的一页:Big-O / Big-Ω 说的是给一条运行时间函数从上还是从下去 bound;best / worst / average case 说的是你在 bound 哪一条函数。原话高亮:"They are independent, orthogonal choices."

全场最大误会:"O 就是 worst case,Ω 就是 best case" ✗ 教授在 2-3 和本课连讲两遍:"that's absolutely not right"。误会的来源很好懂——课程报复杂度时最常说"worst-case 的 O",高频组合 ≠ 唯一组合。正确画面:先用 case 选出一条函数(比如"最坏情况的 T(n)"),它是一条确定但通常写不出精确式子的曲线;然后 O 从上压、Ω 从下托,都是在同一条曲线上做文章。best case 也有自己的 O 和 Ω;average case 同理。2×3 = 6 个组合,每一格都有意义
互动 · 正交矩阵:LinearSearch 的六个格子

还是那位老朋友 LinearSearch(1-2:worst 扫全程 T(n)=an+b,best 第一格命中)。点亮任意一格,看这个组合说的是哪句话:

O(上界)
Ω(下界)
best case
worst case
average case
点亮任意一格——六个组合,格格有戏。

教授还顺带交代了本课程的默认口径:"in this course we're mostly talking about the worst case analysis"——以后不加说明时,报的都是最坏情况;但哪怕是最坏情况,也既有上界又有下界:worst-case = O(n) 说"最坏也不会比线性差",worst-case = Ω(n) 说"最坏确实会差到线性"。两句合起来才是那句最有分量的话:worst-case = Θ(n)。

04

核武器:极限判别法 / Useful facts using limits

教授原话毫不谦虚:"And now I'm ready to give you this kind of nuclear weapon for asymptotic notations."(渐近记号的核武器。)一次极限计算,三种判决。

Theorem · 极限判别法 / limit tests
设 f, g : ℕ → ℝ⁺。记 L = limn→∞ f(n)/g(n)(若该极限存在,允许 L = ∞):
① 若 L = a > 0(有限正常数) ⇒ f = Θ(g)
② 若 L ≠ ∞(即有限,包括 0) ⇒ f = O(g)
③ 若 L ≠ 0(包括 ∞) ⇒ f = Ω(g)

直觉先行:比值 f/g 是两个函数的相对身高曲线。看它的尾巴——

  • 稳定在正常数 a:f 始终是 g 的"a 倍身材",同档 ⇒ Θ。a = 7 也行,a 不必是 1——同档不要求同系数(P1 的老朋友)。
  • 不冲天(≠ ∞):f 相对 g 压得住,f 不重于 g ⇒ O。注意比值归零也算:0 也是"不冲天",照样给 O(这时 f 其实严格轻于 g)。
  • 不归零(≠ 0):f 相对 g 沉得住,f 不轻于 g ⇒ Ω。比值冲天也算:∞ 也是"不归零"(这时 f 严格重于 g)。
这武器什么时候掏?教授的使用说明 "对多项式这类简单函数,2-2 的性质更快("polynomials are very simple to work with");但当你撞上形状复杂的函数('functions in more complicated form')还想要上下界——this is a useful tool。"比如 n²/log n、3ⁿ/n⁴ 这种带尾巴的家伙,套定义要灵感,套性质要拼装,算个极限往往一步到位
弹头上印着的警告(幻灯片顶部红字) "Watch out, limits may not exist!" 整套判别法的大前提是那个极限存在。比值震荡不收敛时,定理直接罢工——但罢工不代表记号不成立,你永远可以退回定义亲手找证书("You always have the definition… you have to be creative, choose your constants c and n₀")。§06 的 D 号试件与挑战题 C3 专演这一幕。
05

拆弹:判据①的 ε–n₀ 证明 / Proof via the ε-definition

教授只证判据①,②③留给你("you can prove them very similarly"——它们在挑战题 C1、C2 ↓等着)。证明的全部内容,就是把"极限"翻译回不等式,再认出那恰好是 O 和 Ω 的证书。逐步拆:

互动 · 拆弹步进器:lim f/g = a > 0 ⇒ f = Θ(g)
这一步在干嘛?点"下一步",从已知条件出发。

教授贴士:"If you're a bit rusty with calculus one, it's a good time to go back and review some related subjects."(微积分一手生了?正好回炉。)这里用到的只有极限的 ε 定义,没有洛必达。

整段收编:判据①的完整 write-up
已知 limn→∞ f(n)/g(n) = a > 0。由极限定义:对任意 ε > 0,存在 n₀,使所有 n ≥ n₀ 满足 |f(n)/g(n) − a| ≤ ε。
选 ε 定义给了"任意 ε"的自由,我们只需要一个。取 ε = a/2(任何 ε < a 都行)——为的是最后下界常数 a − ε = a/2 严格为正,否则发不出合法证书。幻灯片保留了一般的 ε,这个小坑是你自己动手时会撞上的。
乘 g(n) g : ℕ → ℝ⁺ 是正函数,两边乘 g(n) 不翻转不等号(教授特意强调这一步吃了"正性"):|f(n) − a·g(n)| ≤ ε·g(n)。
拆绝对值 −ε·g(n) ≤ f(n) − a·g(n) ≤ ε·g(n),移项得链式不等式:(a−ε)·g(n) ≤ f(n) ≤ (a+ε)·g(n),对所有 n ≥ n₀。
认证书 右半即 O 的定义:证书 (a+ε, n₀) ⇒ f = O(g)。左半即 Ω 的定义:证书 (a−ε, n₀) = (a/2, n₀),正常数 ⇒ f = Ω(g)。
合体 f 既是 O(g) 又是 Ω(g),按 Θ 的定义(2-3)即 f = Θ(g)。∎
②③怎么办 同一招,只是各自只收半条链:极限有限(哪怕为 0)时只保右半 ⇒ 只有 O;极限非零(哪怕 ∞)时只保左半 ⇒ 只有 Ω。教授:"you're only getting one side of that inequality。"
这个证明的真正卖点 它是一座:把微积分的"极限"世界和我们两周搭起来的"证书 (c, n₀)"世界接通了。极限的 n₀ 就是证书的 n₀,极限的 a±ε 就是证书的 c——所谓核武器,不过是把找证书的活儿外包给了微积分
06

上机:极限判官机 / The limit-test machine

四个试件,一台机器。前三件展示三种判决;第四件是教授的警告成真现场——极限不存在,核武器哑火,回定义救场。

互动 · 极限判官机
A:3n²+5n+9999 vs n² B:n√n vs n² C:n³ vs n·log₂n D:(2+(−1)ⁿ)·n vs n
这一步在干嘛?选一个试件,点"下一步"开始推。
读表的姿势 数值表不是证明,是手感(2-1 说过:单点不是证据)。A 件里 9999 在 n=10 时把比值顶到 103,尾巴上照样被磨成 3——Big-O 无视小 n 的老规矩;D 件的比值在 1 和 3 之间跳到天荒地老,这不是"还没收敛",是永远不收敛。判决权在极限,不在表格。
07

最简形:写答案的行规 / Most concise form

幻灯片 4/4,以后每次作业都用得上:分析算法途中你会得到 O(n + n√n) 这种数学上完全正确的结论,但作为最终答案它"not acceptable"——必须化到最简形 (most concise form):括号里只留那一个主导函数。

规矩的三条细则(从教授的话里提炼)丢低阶项:"you can just drop the lower order terms because they do not matter for the growth rate";② 该规矩对 O、Ω、Θ 一视同仁:"this rule applies not just to Big-O but to all asymptotic notations";③ 求和先化封闭形:循环里工作量递增/递减的迭代算法,总代价天然写成 Σ——数学上合法,但答案里必须算掉它。
互动 · 最简形收纳机:幻灯片全部五题

每题点出统治项(或选出正确的最简形)。点错不扣分,点对入库。

最简 ≠ 最圆润:别"向上取整" O(n + n√n + n²/log n) 的最简形是 O(n²/log n)——不许再"顺手"写成 O(n²)。O(n²) 作为上界依然为真,但它放松了(n²/log n 严格轻于 n²);若是 Θ,写 Θ(n²) 更是直接错。n²/log n、3ⁿ/n⁴ 这种"带尾巴"的函数就是它们自己的档,最简形保的是精度,不是颜值。
又见"迟早不太早" 第四题里 (3ⁿ/n⁴) ÷ (n²·2ⁿ) = (3/2)ⁿ/n⁶:实测 n = 60 时 n²·2ⁿ 还更大,n = 61 起 3ⁿ/n⁴ 永久接管。第二题里 √n 与 log₂n 在 n = 4 和 n = 16 两度打平(把 2-2 那场 (log₂n)² vs n 开平方,就是它),16 之后 √n 永不回头。渐近判决从第一天就写好,只是生效日各有各的脾气。
08

竞技场:八回合大盘点 / The classifier arena

两周的兵器全部上场:1-2 的 case、1-3 的定义、2-1 的攻防、2-2 的性质与食物链、2-3 的 Ω/Θ、今天的极限判别。每回合一对 (f, g),把成立的记号全部点亮再交卷——注意,可能不止一个,也可能只有一个。

互动 · 记号裁决竞技场
回合 1 / 8 得分 0 连对 0
点亮你认为成立的记号(三个全判对才得分),然后交卷。

小抄(赛前最后一眼):Θ 成立 ⇒ O、Ω 必然同时成立;比值 → 0 ⇒ 只有 O;比值 → ∞ ⇒ 只有 Ω;比值震荡 ⇒ 自己回定义想。

09

大一统表 + 决策树 + 陷阱 / The grand table

两周内容,一张表收编。左三列是定义世界(2-3 之前),右两列是今天的新桥梁。

记号增长率读法证书(定义)极限判据(若 lim f/g 存在)一句话
f = O(g)f ≤ g∃c,n₀: f(n) ≤ c·g(n)lim ≠ ∞(有限即可,含 0)g 从上界住 f
f = Ω(g)f ≥ g∃c,n₀: f(n) ≥ c·g(n)lim ≠ 0(含 ∞)g 从下托住 f
f = Θ(g)f = g∃c₁,c₂,n₀: c₁g ≤ f ≤ c₂glim = a > 0同档,上下夹死

表格右列的箭头是单向的:极限结论 ⇒ 记号成立;反过来记号成立推不出极限存在(D 号试件 / 挑战题 C3)。

决策树:拿到一对 (f, g),先摸哪件兵器?

教科书函数?→ 2-2 工具箱

多项式、log、指数的常规组合:食物链 + P1–P9 秒判,不必动极限。多项式看首项(P4),log 输给任何正幂(P5),多项式输给任何底数 > 1 的指数(P7)。

形状狰狞?→ 算 lim f/g

带尾巴的怪函数(n²/log n、3ⁿ/n⁴…):比值化简、取极限。a > 0 ⇒ Θ;0 ⇒ 只 O;∞ ⇒ 只 Ω。

极限不存在?→ 回定义

比值震荡:核武器哑火,亲手找 (c, n₀) 或 (c₁, c₂, n₀)。"You always have the definition"——定义永远在岗。

落笔答案?→ 最简形

丢系数、丢低阶项、求和化封闭形;括号里只留主导函数本尊,不向上取整。

本课四个坑 · Pitfalls

bound ≠ case
"O 描述 worst,Ω 描述 best" ✗

bound(上/下)选的是压还是托,case(best/worst/avg)选的是压托哪条函数。两根轴正交,六个组合都合法。worst case 也有 Ω,best case 也有 O。

O 是 ≤,不是 <
"f = O(g) 说明 f 严格慢于 g,所以不可能 Θ" ✗

n = O(n) 且 n = Θ(n)。O 从不排除同档;真想说"严格轻",要么说"O 成立且 Ω 不成立",要么等以后的小 o(本课未详述)。

判别法是单向箭头
"极限不存在 ⇒ 记号不成立" ✗

(2+(−1)ⁿ)·n 对 n 的比值永远震荡,极限不存在,但它就是 Θ(n)(证书 (1, 3, 1))。定理哑火 ≠ 命题为假,回定义。

"正确"不等于"合格"
"O(n + n√n) 反正是真的,交!" ✗

它是真命题,但不是合格的最终答案——行规要求最简形 O(n√n)。同时别矫枉过正把 n²/log n 磨成 n²:最简是"只留主导项",不是"凑成好看的幂"。

10

挑战题:教授留的练习,照单全收 / Harder problems

四道,难度递增。C1、C2 正是教授那句"you can prove them very similarly"点名的判据②③;C3 拆穿单向箭头;C4 是一只集大成的怪兽。先动笔再看解。

★★ · 教授的练习:判据②
C1. 设 limn→∞ f(n)/g(n) = L 存在且有限(L ≥ 0)。从定义出发证明 f = O(g)。

提示:ε 的自由是你的——挑一个最省事的,比如 ε = 1。这题连 L > 0 都不需要。

题解 · Solution
拆极限 取 ε = 1:存在 n₀,使 n ≥ n₀ 时 |f(n)/g(n) − L| ≤ 1。
只留右半 于是 f(n)/g(n) ≤ L + 1。两边乘正函数 g(n):f(n) ≤ (L+1)·g(n)。
打包 证书 (c, n₀) = (L+1, n₀)。L+1 是正常数(哪怕 L = 0,c = 1 照样合法),故 f = O(g)。∎
品一品 与判据①对比:单侧结论不需要挑剔 ε(①里 ε 必须 < a,是为了保住下界常数为正;这里根本不发下界证书)。条件越弱,能省的功夫越多。
★★★ · 教授的练习:判据③
C2. 设 limn→∞ f(n)/g(n) = L ≠ 0(允许 L = ∞)。从定义出发证明 f = Ω(g)。

提示:"≠ 0"藏着两种情况——有限正数,或 ∞。两种情况的"极限定义"长得不一样,分开处理。

题解 · Solution
情况一:L = a > 0 有限 取 ε = a/2:存在 n₀,n ≥ n₀ 时 |f/g − a| ≤ a/2,只留左半:f(n)/g(n) ≥ a/2。乘 g(n):f(n) ≥ (a/2)·g(n)。证书 (a/2, n₀),a/2 > 0 合法。∎
情况二:L = ∞ "极限为 ∞"的定义:对任意 M,存在 n₀,使 n ≥ n₀ 时 f(n)/g(n) ≥ M。取 M = 1:f(n) ≥ 1·g(n)。证书 (1, n₀)。∎
品一品 为什么判据②不用分情况?"≠ ∞"就是"有限",一种情况;"≠ 0"却横跨"有限正数"与"∞"两个世界,定义都不同。顺带看清了对称性:② 只收链条右半,③ 只收左半——正是教授说的"you're only getting one side of that inequality"。
★★★ · 单向箭头拆穿现场
C3. 设 f(n) = 2n+(−1)ⁿ。(a) 证明 f = Θ(2ⁿ);(b) 证明 lim f(n)/2ⁿ 不存在;(c) 由此给"判别法的逆命题"一个判决。

提示:f/2ⁿ = 2^((−1)ⁿ)——先把这个比值算出来,一切自明。§06 的 D 号试件换了件指数马甲。

题解 · Solution
(a) 夹 f(n)/2ⁿ = 2(−1)ⁿ ∈ {1/2, 2}:n 偶时为 2,n 奇时为 1/2。于是对所有 n ≥ 1:(1/2)·2ⁿ ≤ f(n) ≤ 2·2ⁿ。三元证书 (c₁, c₂, n₀) = (1/2, 2, 1) ⇒ f = Θ(2ⁿ)。∎
(b) 震荡 比值序列为 1/2, 2, 1/2, 2, …:偶数子列恒为 2,奇数子列恒为 1/2,两个子列极限不同 ⇒ 极限不存在。∎
(c) 判决 "f = Θ(g) ⇒ lim f/g 存在且为正常数"是假命题。极限判别法是充分条件,不是必要条件:lim ⇒ 记号,记号 ⇏ lim。考试若问"f = Θ(g) 是否蕴含比值收敛",这只函数就是标准反例。
品一品 注意 f 甚至不是"病态函数"——它不过是在 2ⁿ 和 2·2ⁿ 之间跳。渐近同档是个宽松的等价(差常数倍以内都算"="),而极限收敛要求"倍数本身安定下来",严格更强。
★★★★ · 集大成怪兽:极限 + 性质 + 最简形
C4. 求 T(n) = Σi=1…n i² + 100·n²·log₂n + 2ⁿ/n² 的最简形 Θ 界,并给出完整论证。

提示:先把 Σi² 的封闭形请出来(n(n+1)(2n+1)/6),用核武器给它定档;再让三项排座次——注意 2ⁿ/n² 不是"好看的幂",但它就是答案本人。

题解 · Solution
① 求和定档 Σi=1…n i² = n(n+1)(2n+1)/6。核武器:除以 n³,比值 = (1+1/n)(2+1/n)/6 → 2/6 = 1/3 > 0 ⇒ 判据①,Σi² = Θ(n³)。
② 中间项归档 log₂n = O(n)(P5),P9 相乘:n²·log₂n = O(n³);P1 丢 100。所以前两项都压在 n³ 档之内。
③ 主项之争 (2ⁿ/n²) ÷ n³ = 2ⁿ/n⁵ = 2n − 5·log₂n。由 P5,log₂n 最终 ≤ n/10,于是指数 n − 5·log₂n ≥ n/2 → ∞ ⇒ 比值 → ∞ ⇒ 判据③,n³ = O(2ⁿ/n²) 且 2ⁿ/n² 严格更重。P8 传递:前两项统统 = O(2ⁿ/n²)。
④ 合体收工 上界:三项各 = O(2ⁿ/n²),P3 加法合并 ⇒ T = O(2ⁿ/n²)。下界:另两项非负,T(n) ≥ 2ⁿ/n²,证书 (1, 1) ⇒ T = Ω(2ⁿ/n²)。故 T(n) = Θ(2ⁿ/n²)。∎
品一品 数值口味:n = 28 时中间项 100n²log₂n 还是全场最大,n = 29 起 2ⁿ/n² 接管,从此一骑绝尘。另:答案写 Θ(2ⁿ) 是错的(T/2ⁿ → 0,下界发不出证书);写 O(2ⁿ) 合法但松。2ⁿ/n² 长得不体面,但最简形要的是真名,不是艺名。
11

随堂小测 / Quick Check

无限次尝试,零压力。七道题,把正交、极限、最简形各敲一遍。

Q1. 命题:"Big-O 用来描述 worst case,Big-Ω 用来描述 best case。"
Q2. 已知 limn→∞ f(n)/g(n) = 7。能得出什么?
Q3. 已知 limn→∞ f(n)/g(n) = 0。最完整的结论是?
Q4. lim f(n)/g(n) 不存在(比值震荡)。此时?
Q5. 下面哪个是合格的最终答案(最简形)?
Q6. 关于 n⁵ 与 n⁶(2-3 的原题重考):
Q7. O(n²·2ⁿ + 3ⁿ/n⁴) 的最简形是?