§11-1  蓋子遊戲

用無限多個 open sets 把一個集合整個蓋住,然後只准留下有限個——這種事永遠辦得到嗎?辦得到與辦不到的集合,究竟差在哪裡?

為什麼需要 compact

桌上打翻了一杯水。你抽兩張紙巾蓋上去,事情就結束了——「幾張才夠」從來不是一個需要思考的問題:水漬就這麼大,兩張不夠就三張,反正總會夠。

換一個場景。水滲進桌面的一道細縫,越往縫的深處水痕越細,卻始終看不到底。你一張一張往裡鋪,每一張都蓋住了新的一段,但每一張的邊緣之外都還剩一線更細的水痕。這時「有限張夠不夠」突然從廢話變成真正的問題——而且答案可能是:永遠不夠。

分析裡的集合多半是第二種。有限集合有一批珍貴的美德:元素可以逐一檢查完畢、只要元素是數就必定存在最大值、任何逐項處理的流程都會在有限步之內結束——而無限集合把這些美德全部沒收。compact 是一張證書:持有它的集合即使無限,也可以在關鍵時刻當作有限的來用,像水杯旁那灘水一樣,兩三張就蓋完。之後的章節會不斷兌現這張證書;本篇的工作,是把「這張證書怎麼發」立成精確的規則——先從一場蓋子遊戲玩起。

蓋子遊戲

把紙巾換成 open sets,剛才的困境就能玩成一場精確的遊戲。目標集合是 H = (0, 1),我們取這樣一疊蓋子:

G₃ = (1/3, 2/3),  G₄ = (1/4, 3/4),  G₅ = (1/5, 4/5),  …

每一層都比上一層更寬,也更貼近兩端。任取 H 裡的一點 x,我們總能找到夠大的 n,使得 x 落在 Gₙ 裡——居中的點很快被蓋住(x = 1/2 落在 G₃ 裡),貼近邊緣的點要等久一點(x = 0.01 要等到 G₁₀₁ 才被蓋到),但沒有一點等不到。所以這疊集合把 H 整個蓋住了。像這樣「聯集把目標集蓋住」的一族 open sets,我們稱為目標集的 covering。眼前這個 covering 是一個無限族:G₃、G₄、G₅、⋯ 沒有盡頭。

遊戲規則只有一條:對手丟出一個 covering,你必須只從那一族裡挑出有限個集合,而且你挑出的這些集合,聯集仍然要蓋住目標集。我們就用眼前這一局試試。不論你挑出哪些有限層,其中總有一層是最大的,而它的左端停在某個 1/M。於是 1/M 左邊的點全是漏網之魚,你挑的有限層蓋不住它們。這一局你交不出來。

01 G₃G₄G₅ 1/M 有限層裡最大的一層,左端停在 1/M

這張圖在證第一局為什麼交不出來:不論你挑出哪些有限層,最寬的一層左端也停在某個 1/M(紅點)——0 與 1/M 之間的點全數漏網。有限的挑法,追不上無限逼近 0 的邊緣。

接著換一個目標集:K = [0, 1]。這一次兩個端點都實實在在站在集合裡,蓋子找不到「可以無限逼近、卻永遠不必抵達」的縫隙可鑽——不論對手用哪種蓋法,你似乎總能挑出有限個交差。這一局你交得出來(目前這只是直覺,嚴格證明是例 4 的工作)。

compact 就是這場遊戲頒出的證書——K 是 compact,意思是無論對手丟出哪一個 covering,你都能挑出有限個回應。照剛才兩局的手感,[0, 1] 像是持有證書,(0, 1) 則確定沒有。我們把這件事——連同 covering 這個詞——寫成正式定義:

11.1  DEFINITION
A covering of K is a family of open sets that together contain every point of K.
The set K is compact when, from every covering of K, one can select finitely many sets that still cover K.
一族 open sets 若合起來蓋住 K 的每一點,就稱為 K 的一個 covering。K 為 compact,意思是對 K 的「每一個」covering,你都能從中挑出「有限個」集合,挑出的這些仍然蓋住 K。
正例:[0, 1] 是 compact(第二局的手感;嚴格證明在例 4)。反例:(0, 1) 不是 compact(第一局;正式反例在例 3)。

現在把定義逐句對回遊戲:

定義片語白話
a family of open sets that together contain every point of K蓋子的資格審查:K 的每一點都要被某張蓋住——這正是對手出題的門檻
from every covering of K對手丟出任意一個 covering——每一個都算數,而且這個族可以無限大
select finitely many sets that still cover K你返還有限個集合,而且只能從對手那一族裡挑,不能自備新的蓋子

這個定義的重量全部落在「每一個」這三個字上,而這三個字造成了證明與否證之間的巨大不對稱:

目標要做的事
證明 K 是 compact對手的每一種出題,你都要交得出有限的挑法。covering 是對手出的,你不能自選。
證明 H 不是 compact你只要替對手展示一個 covering,它的任何有限 subcollection 都蓋不住 H。一個就足夠了。
「每一個」的陷阱:順利過一局不算數。拿 H = (0, 1) 來說,對手若出 𝒢 = {(−1, 2)},單獨一張大蓋子就蓋住 H,你「挑出有限個」毫無困難——但這一局什麼都沒有證明,因為第一局的 {Gₙ} 這個 covering 就縮不成有限。compact 要求的是「每一個」covering 都行;一個順手的 covering 驗證成功,離「每一個」還差著無限多局。例 4 會示範怎麼對付任意的出題。

四個試金石(11.2)

接下來的四個例子是四局正式的蓋子遊戲:(a) 與 (d) 這兩局你交得出有限的挑法,(b) 與 (c) 這兩局有 covering 讓你交不出來——而且兩局卡住的原因並不相同。

例 1證明有限集 K = {x₁, …, xm} ⊆ ℝᵖ 是 compact
先讓最簡單的集合上場,確認這個定義的行為正常。
任取 covering 𝒢,從中挑出有限個,聯集包含 K。
  1. 任取一個 covering 𝒢。𝒢 裡的集合可能多到無法編號(甚至不可數),所以我們先不替它們取名字。
  2. covering 的意思是 K 的每一點都被蓋住。於是讓每個點自己認領一個蓋住自己的集合:x₁ 認領一個,我們把它取名 G⁽¹⁾。x₂ 認領一個,取名 G⁽²⁾。依此類推,直到 xm 認領的 G⁽ᵐ⁾。(不同的點可以認領同一個集合,這沒有關係——只是名牌重複掛在同一個集合上。)
  3. 現在只看 G⁽¹⁾, …, G⁽ᵐ⁾ 這至多 m 個集合。每個 xᵢ 都住在自己認領的 G⁽ⁱ⁾ 裡,所以這有限個集合的聯集包含整個 K。
x₁x₂x₃ G⁽¹⁾G⁽²⁾ = G⁽³⁾ 灰色:covering 裡沒被認領的集合(可能有無限多個)

這張圖在證「有限個點只需要有限張名牌」:m = 3 的一局裡,每個點各自認領一個蓋住自己的集合,x₂ 與 x₃ 認領到同一個——挑出的名牌至多 m 張,而灰色的無限多個落選者全數退場。

K 是 compact。有限個點永遠只需要有限個蓋子。
例 2證明 H = { x ∈ ℝ : x ≥ 0 } 不是 compact
這一局你注定交不出來。依照上表,我們只需要出示一個縮不成有限的 covering。
給出一個 covering,使任何有限 subcollection 都蓋不住 H。
  1. 取 Gₙ = (−1, n),n ∈ ℕ,令 𝒢 = { Gₙ : n ∈ ℕ }。先確認 𝒢 是 covering:任取 x ≥ 0,只要選 n > x,就有 x ∈ Gₙ(x = 7.5 選 G₈ 就夠;x = 100 得等到 G₁₀₁——但每一點都輪得到)。
  2. 任取有限層,並設這些層的編號當中最大的一個是 M。
  3. 層隨著編號增大而變寬,所以每一層都包含在最大的那一層裡——這有限層的聯集就等於 GM = (−1, M)。
  4. 但是 M ∈ H 而 M ∉ (−1, M)——這個有限聯集漏掉了 M,因此蓋不住 H。
0⋯ G₃G₅G₇ M 集合往右無限延伸

這張圖在證這個 covering 為什麼縮不成有限:你挑的有限層當中最寬的一層停在 M,可是 M 本人屬於 H,而 (−1, M) 是開區間,裝不下自己的右端點——M 成了漏網之魚。

H 不是 compact。注意 H 是 closed 的,問題出在它不是 bounded——集合一路往右延伸,有限個蓋子永遠追不完。
例 3證明 H = (0, 1) 不是 compact
這是「蓋子遊戲」第一局的正式重寫,這一次我們改用定義的語言來寫。出題方式與例 2 平行,但漏網點藏在另一頭。
給出一個 covering,使任何有限 subcollection 都蓋不住 H。
  1. 取 Gₙ = (1/n, 1 − 1/n),n > 2,令 𝒢 = { Gₙ : n > 2 }。先確認 𝒢 是 covering:任取 0 < x < 1,只要選夠大的 n 使得 1/n < x < 1 − 1/n,就有 x ∈ Gₙ(x = 1/2 用 G₃ 就蓋到;x = 0.99 要等到 G₁₀₁——這一回兩頭都有難蓋的點)。
  2. 任取有限層,並設編號最大的一層是第 M 層。層同樣隨編號增大而變寬,所以這有限層的聯集等於 GM = (1/M, 1 − 1/M)。
  3. 看點 1/M:因為 M > 2,我們有 0 < 1/M < 1,所以 1/M ∈ H。但開區間 (1/M, 1 − 1/M) 不包含自己的端點,所以 1/M ∉ GM——這個有限聯集蓋不住 H。
01 GM = (1/M, 1 − 1/M) 1/M 挑出的有限層,合併後就是最大的一層 站在蓋子邊緣上,卻不在蓋子裡

這張圖在證漏網點的位置:合併後的最大蓋子 GM 是開區間,裝不下自己的左端點 1/M——而 1/M(紅點)實實在在屬於 H。兩端的空心圈提醒你:0 與 1 缺席,蓋子的邊緣才有得躲。

H 不是 compact。這一次 H 是 bounded 的,問題出在它不是 closed——在缺席的端點附近,有限個蓋子永遠收不攏。
兩個反例各缺一角:(b) 是 closed 但不 bounded,(c) 是 bounded 但不 closed。這不是巧合——主定理 11.3 將證明,缺任何一角都不行,而兩角俱全就足夠。
例 4證明 I = [0, 1] 是 compact
這一局要正面接下「每一個」covering——它可能像第一局那樣是整齊的階梯,也可能毫無規律,挑法不能依賴它長什麼樣子。我們的工具是 supremum——讓「蓋得住的範圍」自己往右爬到底。
對任意的 covering 𝒢,挑出有限個蓋住 I。
  1. 任取 covering 𝒢 = {Gα}。
  2. 定義 A = { x ∈ I : 閉區間 [0, x] 能被 𝒢 中有限個集合蓋住 }。A 不是空集——0 被 𝒢 中某個集合蓋住,所以 0 ∈ A。而 A 顯然以 1 為上界。
  3. supremum property(非空且上有界的集合必有最小上界——§6-2 的 6.4)給出 x* = sup A,而且 x* ∈ I。
  4. 因為 𝒢 是 covering,x* 屬於某個 G₀ ∈ 𝒢。又因為 G₀ 是 open,存在 ε > 0 使得區間 [x* − ε, x* + ε] ⊆ G₀。
  5. x* − ε 比最小上界還小,所以它不是 A 的上界——於是存在 a ∈ A 使得 a > x* − ε。這表示 [0, a] 已經有有限份蓋子。再添上 G₀ 這一份,[0, x* + ε] 也就有了有限份蓋子。
  6. 假如 x* < 1,第 5 步就表示比 x* 更大的點也屬於 A——這抵觸了 x* 是 A 的上界。所以 x* = 1,而第 5 步同時給出了 [0, 1] 的有限 subcover。
01 x* 有限份蓋得住的範圍 G₀ G₀ 把覆蓋往右推過 x*

這張圖在證推進不會停在 1 之前:黃色是已有有限份蓋子的範圍,右端是 x*——單獨一張 G₀ 就能把範圍再往右推 ε。若 x* 還不到 1,這一推就抵觸「x* 是上界」。

I = [0, 1] 是 compact。推力不會枯竭,唯一可能的停點是 1——而停在 1 的那一刻,有限 subcover 也同時到手。
—— 第一階段到此結束 ——

你已經走完蓋子遊戲的四個試金石:有限集與 [0, 1] 交得出有限的挑法,[0, ∞) 與 (0, 1) 交不出——前者缺 bounded,後者缺 closed。下一篇 §11-2 的主角是主定理 Heine-Borel,它把「判斷 compact」從逐一應對每個 covering,變成查驗 closed 與 bounded 兩個角。這裡先起來伸個懶腰吧——活動過再上路,四局的手感才沉得下去。