A ⊆ B 是什麼意思?為什麼空集是任何集合的子集?
學完這節課,你將能夠:
👆 點選按鈕把元素放入集合 A、集合 B 或交集(共同元素)區域。觀察:什麼時候 A ⊆ B 成立?什麼時候 A = B?
| 操作 | A | B | 關係 |
|---|
剛才的遊戲中,我們往集合 A 和 B 裡放元素。仔細想想:
如果集合 A 中的每一個元素都是集合 B 的元素,那麼稱 A 是 B 的子集,記作 A ⊆ B。
如果集合 A 有 n 個元素:
給出集合 A 和 B,判斷它們的關係。⚠️ 💡 💡 記住:A ⊆ B 要求 A 的每個元素都在 B 中。
# 子集判斷 A = {1, 2} B = {1, 2, 3} # A ⊆ B ? print(A <= B) # True (A是B的子集) print(A < B) # True (A是B的真子集) print(A == B) # False # 求所有子集 def subsets(s): items = list(s) result = [] for i in range(2 ** len(items)): sub = {items[j] for j in range(len(items)) if i & (1<<j)} result.append(sub) return result print(subsets({1,2,3})) # 8個子集
True
True
False
[set(), {1}, {2}, {1,2}, {3}, {1,3}, {2,3}, {1,2,3}]
# 驗證子集個數公式:2^n def count_subsets(n): """n個元素的集合,子集個數為2^n""" return 2 ** n for n in range(1, 6): items = set(range(1, n+1)) cnt = count_subsets(n) print(f'n={n}: 子集個數 = 2^{n} = {cnt}') # 真子集 = 子集 - 1(去掉自身) # 非空子集 = 子集 - 1(去掉空集) # 非空真子集 = 子集 - 2(去掉自身和空集)
n=1: 子集個數 = 2^1 = 2 n=2: 子集個數 = 2^2 = 4 n=3: 子集個數 = 2^3 = 8 n=4: 子集個數 = 2^4 = 16 n=5: 子集個數 = 2^5 = 32