Evanalysis
2.1嵌入式互動預計閱讀時間: 9 分鐘

2.1 集合與集合運算

建立成員、子集證明,以及標準集合構造的語言,為之後章節反覆用到的概念打底。

集合是用來描述一堆對象的基本語言。在這一科之中,集合不是旁支內容, 而是邏輯、函數、關係,以及之後的數系構造的共同語言。

如果你而家覺得符號有些陌生,是正常的。這一單元的目標就是令這套語言 變得夠精確,等後面章節可以直接用。

集合、屬於、相等

定義

集合

集合是一堆對象的集合。

如果 x 是集合 AA 的元素,我們寫 xAx \in A;如果不是,就寫 xAx \notin A

例子:

  • {1, 2, 3} 是集合。
  • {香港島、九龍、新界} 是集合。
  • 是空集合,也就是沒有任何元素的集合。

同一個集合可以有不同寫法,但集合本身只由元素決定。

定理

外延性

兩個集合相等,當且僅當它們擁有完全相同的元素。

符號上寫成:

A=B    x(xAxB).A = B \iff \forall x\, (x \in A \leftrightarrow x \in B).

所以證明集合相等的標準方法是先證兩個包含關係:

  1. ABA \subset B
  2. BAB \subset A

常見錯誤

不好將集合相等同描述相等混淆

{1, 2, 3}{3, 2, 1} 是同一個集合,因為元素完全一樣。列出順序 不重要。

常見錯誤

子集符號要留意本地慣例

本課程用 ABA \subset B 表示「A 的每個元素都在 B 之中」。有些書會用 ABA \subseteq B 表示這個意思,而將 ABA \subset B 保留給 strict subset。 看書時要先確認慣例。

建立新集合

知道咗幾個集合之後,我們通常會想造出更多集合。標準運算就是用來做這件事。

| 運算 | 記號 | 定義 | | --- | --- | --- | | 聯集 | ABA \cup B | 屬於 AABB 的元素 | | 交集 | ABA \cap B | 同時屬於 AABB 的元素 | | 差集 | ABA \setminus B | 屬於 AA 但不屬於 BB 的元素 | | 補集 | AcA^c | 在所選全集內,不屬於 AA 的元素 |

補集一定要先指定全集 EE。在這一單元之中,我們通常默認所有集合都在某個 固定 EE 之中,所以 AcA^c 也就是 EAE \setminus A

例題

追蹤元素如何經過幾個運算

A={1,2,4},B={2,3,4},A = \{1, 2, 4\}, \qquad B = \{2, 3, 4\},

而全集取作

E={1,2,3,4,5}.E = \{1, 2, 3, 4, 5\}.

那麼就有:

  • AB={1,2,3,4}A \cup B = \{1, 2, 3, 4\}
  • AB={2,4}A \cap B = \{2, 4\}
  • AB={1}A \setminus B = \{1\}
  • BA={3}B \setminus A = \{3\}
  • Ac={3,5}A^c = \{3, 5\}
  • (AB)c={5}(A \cup B)^c = \{5\}

解答

為甚麼補集一定要有全集

這些等式如何證

本單元的集合恆等式不是靠背誦,而是靠逐個元素追蹤去證明。

定理

基本集合代數

對集合 AABBCC

  • A=AA \cup \varnothing = A
  • AB=BAA \cup B = B \cup A
  • A(BC)=(AB)CA \cup (B \cup C) = (A \cup B) \cup C
  • AA=AA \cup A = A
  • A(BC)=(AB)(AC)A \cap (B \cup C) = (A \cap B) \cup (A \cap C)
  • A(BC)=(AB)(AC)A \cup (B \cap C) = (A \cup B) \cap (A \cup C)
  • (AB)c=AcBc(A \cup B)^c = A^c \cap B^c
  • (AB)c=AcBc(A \cap B)^c = A^c \cup B^c
  • ABA \subset B 當且僅當 AB=BA \cup B = B
  • ABA \subset B 當且僅當 AB=AA \cap B = A

核心證法是 element chasing。譬如:

xA(BC)    xA 且 (xB 或 xC)x \in A \cap (B \cup C) \iff x \in A \text{ 且 } (x \in B \text{ 或 } x \in C)

等價於

(xA 且 xB) 或 (xA 且 xC),(x \in A \text{ 且 } x \in B) \text{ 或 } (x \in A \text{ 且 } x \in C),

所以又等價於

x(AB)(AC).x \in (A \cap B) \cup (A \cap C).

證明

示範:為甚麼 ABA \subset B 會推出 AB=BA \cup B = B

其他常見構造

這個課程後面亦也會反覆用到以下幾種集合構造。

笛卡兒積

A×BA \times B 是所有有序對 (a, b) 的集合,其中 aAa \in AbBb \in B。 次序是有意思的:(a, b)(b, a) 一般不同。

如果 A=5|A| = 5B=3|B| = 3,那麼 A×B=15|A \times B| = 15

R×R=R2R \times R = R^2 就是平面。

有限次積

AnA^n 表示 AA 同自己做 n 次笛卡兒積,也就是所有 n-tuple。

冪集

P(A)AA 的所有子集所組成的集合。

如果 AAn 個元素,那麼 P(A) 就有 2n2^n 個元素。另一個好用的理解方式 是 indicator function:每個子集都可以對應到一個 A0,1A \to {0,1} 的函數。

例如

P({a,b})={,{a},{b},{a,b}}.P(\{a, b\}) = \{\varnothing, \{a\}, \{b\}, \{a, b\}\}.

不交聯集

有時兩個集合在原來的寫法上可能有重疊,但我們又想保留每個元素的來源。 不交聯集就是透過標籤記住每件元素原本屬於邊個集合。

直觀上,ABA \sqcup B 就是「加咗標記 1 的 AA」同「加咗標記 2 的 BB」。

如何仔細證明集合恆等式

去到這一步,集合恆等式應該被理解成「屬元條件相同」的命題,而不是單靠 圖形背出來。

標準證法通常是:

  1. 任取一個元素 x
  2. xx \in 兩邊集合翻譯成邏輯條件;
  3. 逐步化簡,直到兩邊變成同一句說話。

例題

證明 A(BC)=(AB)CA \cap (B \setminus C) = (A \cap B) \setminus C

xA(BC)x \in A \cap (B \setminus C)

出發,就表示:

  • xAx \in A
  • xBx \in B
  • xCx \notin C

而這三個條件加埋,正正就是

x(AB)Cx \in (A \cap B) \setminus C

的意思。

由於推理可以雙向讀回,所以兩邊集合相等。

這種逐元素追蹤的方法,之後會再次出現在德摩根律、關係,與數系構造之中。

有限集合如何計數

集合語言不只用來分類,還直接控制計數。

如果 AABB 都是有限集合,那麼:

  • A×B=AB|A \times B| = |A|\,|B|
  • P(A)=2A|P(A)| = 2^{|A|}
  • AB=A+BAB|A \cup B| = |A| + |B| - |A \cap B|

聯集公式之所以要減交集,是因為交集之中的元素如果直接相加,會被計兩次。

例題

計一個聯集同冪集

假設 A=6|A| = 6B=5|B| = 5AB=2|A \cap B| = 2

那麼就有

AB=6+52=9|A \cup B| = 6 + 5 - 2 = 9

再設 S={a,b,c}S = \{a,b,c\}。每個元素都只有兩個選擇:入某個子集,或者不入。 所以總共有

222=23=82 \cdot 2 \cdot 2 = 2^3 = 8

個子集。因此 P(S)=8|P(S)| = 8

子集證明檢查表

子集證明會反覆出現,所以最好令它變成固定套路。

如果要證 ABA \subseteq B,就由任取 xAx \in A 開始,再用 AA 的定義推出 足夠資訊,最後證明同一個 x 其實都在 BB 之中。由於 x 是任取,結論 就對 AA 的每個元素成立。

這個 direct proof 模式,之後在關係、偏序,與等價類之中也會再見到。

常見錯誤

常見錯誤

補集不等於差集

AcA^c 是「在全集外面的部分」。ABA \setminus B 是「A 之中但不在 B 之中的部分」。 兩者有關,但不同。

常見錯誤

沒有全集就不可以寫補集

如果你寫補集,一定要知道你是在邊個 universe 之中做運算。否則 c^c 是含糊的。

常見錯誤

積集順序有意義

A×BA \times BB×AB \times A 一般包含不同有序對。這個就是為甚麼函數與關係要用積集語言。

小檢查

快速檢查

如果 A=a,b,cA = {a, b, c}B=b,c,dB = {b, c, d}ABA \cap B 是甚麼?

只保留同時屬於兩個集合的元素。

解答

答案

快速檢查

為甚麼未指定全集之前,AcA^c 不夠清楚?

諗吓補集是「在邊個範圍內」取外面。

解答

答案

快速檢查

如果 ABA \subset B,那麼 ABA \cup BABA \cap B 會簡化成甚麼?

用上面的 absorption laws。

解答

答案

為甚麼這一單元重要

這一單元是後面數系構造的語言基礎。

  • N2N^2 會用來構造整數。
  • 等價類會用來構造有理數。
  • 一個集合上的關係會變成偏序同等價關係的語言。
  • 冪集同笛卡兒積會在之後說明 family、tuple、同各種構造時再出現。

邊讀邊試

比較一對集合

互動探索器讓你把元素加入或移出 A 與 B,並即時看見運算結果改變。

集合 A

集合 B

聯集

{1, 2, 3, 4}

交集

{2, 4}

差集 A \ B

{1}

先備知識

這一節可以獨立閱讀。

本單元重點詞彙