§3-1 配對取代計數
一個集合的元素能不能一個一個數完?兩個都數不完的集合之間,又該用什麼標準判定它們的元素一樣多——偶數集是自然數集的真子集,整數集卻反過來包含自然數集,這三者要怎麼比較?
為什麼要重新學數數
幼兒園老師點名,其實有兩種辦法。第一種是唸名冊:唸一個名字,答一聲有,唸到最後一個就知道今天來了幾個人。第二種更快——每個小朋友坐一張椅子,椅子剛好排滿、沒有空位也沒有人站著,那就到齊了,一個都不必數。
第二種辦法有個好處:它從頭到尾沒有用到任何數字。它問的不是「幾個」,而是「配不配得起來」——人與椅子一對一配好,不多不少,兩邊就一樣多。日常生活裡這只是偷懶的技巧,因為人數本來就數得完,兩種辦法給的答案一定相同。
可是把場景換成一群數:全體自然數 1, 2, 3, … 與全體偶數 2, 4, 6, …,哪一邊比較多?唸名冊的辦法立刻失效,因為兩邊都唸不完。剩下的只有配對這一招——而配對這一招接下來會給出一個相當違背直覺的答案。要把話說得精確,我們得先挑一把量尺:拿什麼東西來當作「數到幾」的標準。最現成的標準就是自然數自己的前一段。
量尺:ℕ 的前一段
以下假設讀者熟悉自然數集 ℕ = {1, 2, 3, …} 與它的大小順序,並自由使用數學歸納法。我們另外採用 ℕ 的一條性質:ℕ 的任何非空子集都有最小元素(Well-Ordering Property,良序性)——它與數學歸納法互相等價,下一篇的兩段證明都靠它。
量尺定義如下:對每個 n ∈ ℕ,記 Sₙ = { x ∈ ℕ : x ≤ n },稱為 ℕ 的一個 initial segment(前段)。S₂ = {1, 2}、S₄ = {1, 2, 3, 4},依此類推。要注意 initial segment 是「從 1 起連號到底」的集合:{1, 3, 5} 就不是任何 Sₙ,因為它收了 3 卻沒收 2、收了 5 卻沒收 4。
這張圖在說明量尺的形狀要求:Sₙ(藍框)必須從 1 起連號、中間不留空位;{1, 3, 5}(紅點)跳過了 2 與 4,所以它不是任何一個 Sₙ。接下來的定義並不要求集合「就是」某個 Sₙ,只要求配得進去——例 1 會示範這個差別。
When a one-to-one function carries B onto the whole of ℕ — a 1-1 correspondence — the set B is denumerable.
Finally, countable covers both cases: B is countable when it is finite or denumerable.
| 術語 | 條件 | 中譯 |
|---|---|---|
| finite | B = ∅,或存在 one-to-one 函數 B → Sₙ(某個 n) | 有限 |
| infinite | 非 finite(這種函數一個也找不到) | 無限 |
| denumerable | 存在 1-1 correspondence B ↔ ℕ | 可枚舉 |
| countable | finite 或 denumerable | 可數 |
定義裡有兩個關鍵字要分開記。one-to-one(單射)說的是不同的輸入給出不同的輸出,也就是「不擠在一起」;onto(滿射)說的是目標集合的每個元素都被打到,也就是「不留空位」。兩者同時成立就是 1-1 correspondence(雙射),正是點名時「人與椅子剛好配滿」的那個狀態。finite 只要求 one-to-one,denumerable 則兩個都要求。
- 取 n = 3,也就是 S₃ = {1, 2, 3}。
- 定義 f(1) = 1、f(3) = 2、f(5) = 3。
- 檢查 one-to-one:定義域只有三個元素,直接把輸出全部列出來——1、2、3 互不相同,所以不同的輸入確實給出不同的輸出。✓
這張圖在證 {1, 3, 5} 為什麼 finite:定義 3.1 要的不是「等於某個 Sₙ」,而是一個不把兩個元素擠到同一格的函數。三個箭頭各自落在 S₃ 的不同格子上,one-to-one 成立——至於 S₃ 是否還有剩餘的格子,定義並不過問。
- 假設存在某個 n 與 one-to-one 函數 f : E → Sₙ。
- 因為 f 是 one-to-one,E 的每個元素在 Sₙ 裡各佔一個不同的位置;而 Sₙ 總共只有 n 個位置,所以 E 最多只能有 n 個元素。
- 另一方面,2, 4, 6, …, 2(n+1) 是 E 裡 n + 1 個互不相同的元素,所以 E 至少有 n + 1 個元素。
- 「最多 n 個」與「至少 n + 1 個」不能同時成立,所以假設不成立:這樣的函數不存在。依定義 3.1,E 是 infinite。
這張圖在證第一部分的矛盾機制:反證法假設 E 配得進某個 Sₙ(圖中取 n = 4),可是 E 裡永遠挑得出 n + 1 個相異元素——第 5 個箭頭(紅色)只能落進已被佔用的格子,one-to-one 因此破功。n 換成任何自然數,同一件事都會發生。
- 取 f : ℕ → E,f(n) = 2n。
- 檢查 one-to-one:設 f(m) = f(n),也就是 2m = 2n,兩邊除以 2 得 m = n。不同的輸入不可能給出相同的輸出。✓
- 檢查 onto(任取目標元素,把對應的輸入找出來):任取 E 裡的元素 e。e 是偶數,而偶數就是 2 的倍數,所以寫得成 e = 2k,其中 k 是某個自然數。拿這個 k 當輸入,就有 f(k) = 2k = e。因為 e 是任取的,E 的每個元素都被打到。✓
- f 既 one-to-one 又 onto,所以它是 ℕ 與 E 之間的 1-1 correspondence。方向不必介意:對應一旦雙向都不重不漏,反著讀就是 E 到 ℕ 的 1-1 correspondence(這裡反讀恰是 e ↦ e/2,也是貨真價實的函數)——定義 3.1 認的正是「對應存在」這件事。依定義 3.1,E 是 denumerable。
- 奇數集 O = {1, 3, 5, …} 完全平行:取 g(n) = 2n − 1。one-to-one:2m − 1 = 2n − 1 整理得 m = n。✓ onto:任取奇數 o,依奇數的定義寫成 o = 2k − 1,而 g(k) = 2k − 1 = o。✓ 所以 O 也是 denumerable。
這張圖在證 E 是 denumerable:n ↦ 2n 把 ℕ 的每個號碼派給 E 的一個元素,不同號碼派到不同元素(one-to-one),而 E 裡每個偶數 2k 都被號碼 k 領走(onto)。E 只用掉 ℕ 的一部分元素,卻仍與整個 ℕ 配得剛剛好。
- 既然沒有最小的整數,就別從最小的開始。改從 0 出發,左右交錯清點:0, 1, −1, 2, −2, 3, −3, …
- 把它寫成明確的函數 g : ℕ → ℤ:g(1) = 0;對 k ≥ 1,g(2k) = k、g(2k+1) = −k。
- 檢查 onto(逐情況把輸入交出來):任取整數 m。若 m = 0,它排在第 1 位。若 m > 0,它排在第 2m 位,因為 g(2m) = m。若 m < 0,則 −m > 0,它排在第 2(−m) + 1 位,因為 g(2(−m)+1) = −(−m) = m。三種情形涵蓋全部整數。✓
- 檢查 one-to-one(分組討論):g 的輸出分成三組——第 1 位輸出 0,偶數位輸出正整數,其餘奇數位輸出負整數。兩個位置若落在不同組,輸出的正負號不同,必不相等;同為偶數位第 2j 與第 2k 且 j ≠ k,輸出是 j 與 k,不相等;同為奇數位則輸出 −j 與 −k,同樣不相等。✓
這張圖在證清點順序為什麼不漏任何整數:從 0 出發、左右交替跳,每一跳的步幅只增加 1,所以距離 0 為 k 的整數最遲在第 2k + 1 步就被點到——不會有整數一直輪不到。相對地,若堅持「由小到大」,連起點都找不到。
你已經把「數不數得完」換成了配對的問題:finite 是配得進某個 Sₙ,denumerable 是與整個 ℕ 配得剛好,countable 收下這兩種情形。三個試金石也走完了——{1, 3, 5} 有限,偶數集與 ℤ 雖然無限卻仍與 ℕ 一樣多。下一篇 §3-2 把配對的技巧升級成三條定理,並拿有理數集開刀。先起身走幾步、喝口水再回來,配對這件事想久了容易頭暈。回來前配一則:據說有家旅館房間編號 1, 2, 3, ⋯ 永遠住滿,卻從不拒客——來一位新客人,就請每位房客往後挪一間,1 號房就空出來了。