Big-O 的尺子只有一面刻度:「增长不快于」。这节课把渐近记号家族的另外两位成员请进门——Ω 说「不慢于」,Θ 说「同阶」——三把尺子终于配齐。顺手还要拆掉一个最流行的误解:O 不是「最坏情况」,Ω 也不是「最好情况」。
教授开场:「这个视频我们要介绍渐近记号家族的另外两位成员(two more members of this asymptotic notation family)——Big-Omega 和 Big-Theta。」在见新人之前,先回味一下老熟人 Big-O 的一个小尴尬。
回忆整条线:1-2 里我们推出 LinearSearch 最坏情况的运行时间是 an + b(a、b 是两个不知道具体值的常数);1-3 有了 Big-O,就能干脆地说——它的最坏情况时间复杂度是 O(n)。
但注意:O 说的是上界 (upper bound)。上界之上,皆是上界。所以下面这些话全部合法:LinearSearch 是 O(n²);是 O(n¹⁰⁰);是 O(2ⁿ·n!)——教授原话:「or some even crazier functions(或者一些更疯的函数)」。
真实增长率是线性 (an+b)。点一个候选上界,看它「合法吗」和「有用吗」是两回事:
教授把两个定义并排放在一起,然后说:「所有的改动都在那个蓝框里 (everything changed is inside that blue box)——我们把不等式的方向翻转了。」除此之外,一个字都没变。
两个量词原封不动:∃(紫)还是「找一张证书就赢」,∀(黄)还是「门槛之后步步成立」。唯一的改动是红块里的 ≥。
f = Ω(g) 的三种读法(和幻灯片逐条对应):
一句话:Ω 是 O 的正对面(directly the opposite)。O 说「≤」,Ω 说「≥」;O 给上界,Ω 给下界。c 和 n₀ 的两大特权也原样保留:c 吃掉常数倍,n₀ 跳过小 n。
立刻用一次。LinearSearch 最坏情况 T(n) = an + b(a, b > 0),它 = Ω(n) 吗?
于是最坏情况的 LinearSearch 同时有 O(n) 和 Ω(n)——上界和下界咬在同一档上。这个「咬合」正是 §07 的主角。另,1-3 的提醒继续有效:这里的「=」是记号滥用,真身是集合成员(f ∈ Ω(g)),只能从左往右读。
还记得 1-3 的 Big-O 练手场吗?那里你调 c 和 n₀,要让紫线 c·g(n) 压在蓝线上方。现在整个世界镜像翻转:要证 Ω,紫线必须从 n₀ 起永远趴在蓝线下面。
幻灯片专门画了个大红叉:「O 描述最坏情况,Ω 描述最好情况」。教授:「And that's absolutely not right.」这可能是渐近记号最流行的谣言——这一节把它彻底埋掉。
分清两件完全不同的事:
先选情况,得到一条确定的函数;再对这条函数,想标上界就 O、想标下界就 Ω。教授的结论:「They are independent, orthogonal choices. You can just mix any of them.」(独立、正交,随便混搭。)用 LinearSearch 亲手把六种搭配摸一遍:
幻灯片给了四道判断题。动手之前,教授先送了个大礼包:「因为 O 和 Ω 的定义如此相似,你完全可以猜到:上个视频学的九条性质,对 Ω 同样全部成立(all the nine properties … are also true for big omega)。」判断心法照旧:比两边的增长率,多项式看首项。
教授:「We'll leave some of them as an exercise in our first homework.」——Ω 版性质会出现在第一次作业里;§10 挑战题 C1 先带你把「加法合并」的 Ω 版证一遍。
刚才那句「其实恰好反过来」不是巧合,是定理:f 被 g 从上面压住,恰好等于 g 被 f 从下面托住。每一条 Big-O 知识,免费附赠一条 Ω 知识。
完整的双向证明(以及它送出的 Θ 对称性)在挑战题 C2 等你。
教授:「It's tempting to ask what happens if I have a matching bound——如果上界和下界在同一档相遇,会怎样?」答案是家族第三位成员:Θ。
f = Θ(g) 的读法:f 和 g 渐近同阶 (asymptotically of the same order)——「they grow similarly」,增长率意义上的「=」。至此刻度配齐:O 是 ≤,Ω 是 ≥,Θ 是 =。
把定义展开,就是一副「三明治」:两张证书合成一张。
蓝线 f(n) = n²+10n。调三个旋钮,让黄线 c₁·n² 从 n₀ 起趴在蓝线下面、紫线 c₂·n² 压在蓝线上面——同时做到,就是一张 Θ 证书:
幻灯片的六道 Θ 判断题,升级成三路分类:对每对 (f, g),f 究竟是 g 的同阶(Θ)、严格更慢(只 O 不 Ω),还是严格更快(只 Ω 不 O)?心法照旧——「we're basically considering the growth rate of the two functions」:比增长率,多项式看首项,log 把系数和幂次全拍扁。
三位成员到齐,拍一张全家福;再把这节课挖出的坑逐个钉上警示牌。
| 记号 | 增长率读法 | 定义里的不等式 | 角色 | 方向 |
|---|---|---|---|---|
| f = O(g) | f ⪯ g(不快于) | f(n) ≤ c·g(n) | g 是上界 | 单向 |
| f = Ω(g) | f ⪰ g(不慢于) | f(n) ≥ c·g(n) | g 是下界 | 单向 |
| f = Θ(g) | f ≍ g(同阶) | c₁·g(n) ≤ f(n) ≤ c₂·g(n) | g 是紧界 (tight bound) | 对称(C2 证) |
工具迁移清单:2-2 的九条性质,O 版已证;Ω 版全部成立(教授明说,部分留作第一次作业——C1 练一条);Θ 版由「O 版 + Ω 版」逐条拼合即可得(推论,课上未逐条展开),最实用的三条:
O/Ω 给一条函数标上下界;最好/最坏挑哪条函数。正交的两轴,六格全合法——最好情况有 O,最坏情况有 Ω(§04 的六格你都点亮了吗)。
合法,但空话——任何正函数都是 Ω(1)。镜像 §01:上界求最低,下界求最高,两头相遇即 Θ,分析才算到位。
O/Ω 都是单向的:f = O(g) 换来的是 g = Ω(f)(对偶,方向翻转),不是 g = O(f)。唯独 Θ 真正对称:f = Θ(g) ⟺ g = Θ(f)。
n⁵ = O(n⁶)、n⁶ = Ω(n⁵) 都成立——慢的当上界素材、快的当下界素材,单边关系照样有用。真正「谁也压不住谁」的野生函数对也存在(C4 造一对)。
四道,难度递增。C1 正对教授那句「Ω 版性质留作第一次作业」;C2 把 §06 的对偶定理补成完整证明。先动笔再看解。
提示:照搬 2-2 的拆包机?可以。但 Ω 版其实有一条更懒的路——想想「加上一个非负的东西」会让左边变大还是变小。
提示:整场证明只有一个动作——在不等式两边同除一个正常数。证书怎么变换,§06 已经剧透了。
提示:上界方向拆包一次就够;下界方向连拆包都不用(想想 C1 的「白捡一步」)。证完回头看幻灯片的 n⁵ + 1888n³ + n·log n = Θ(n⁵),它是谁的实例?
提示:§08 里全是乖巧的多项式/对数/指数,它们确实两两可比。想造反例,得让 f 和 g 来回振荡、轮流领先——试试按 n 的奇偶分段定义。判「不成立」用什么武器?2-1 的量词翻转,两次。
无限次尝试,零压力。七道题,把三把尺子和那个大红叉各敲一遍。