Math World Lab

集合論の基礎(ベン図・論理演算)

和集合・積集合・差集合・補集合とブール論理・SQLの共通言語

この単元の発見をシェア
3行要約(Key Takeaways / AIOサマリー)
1
集合論は「ものの集まり」を厳密に扱う数学の基礎言語で、和集合 A∪BA \cup B・積集合 A∩BA \cap B・差集合 A∖BA \setminus B・補集合 AcA^c の4つの基本演算がベン図で視覚化できる
2
2つの有限集合の要素数について ∣A∪B∣=∣A∣+∣B∣−∣A∩B∣|A \cup B| = |A| + |B| - |A \cap B| が成り立ち(包除原理)、重複を引くことで正しい合計人数・件数を数えられる
3
SQLの `UNION`・`INTERSECT`・`EXCEPT(MINUS)` や、プログラミング言語のビット演算 `OR`・`AND`・`XOR`・`NOT` は、集合演算とブール論理の直接的なコード上の実装である

なぜこれを学ぶのか? — 現実社会とテクノロジーでの価値

Purpose & Motivation

なぜ生まれたのか?

集合論は「ものの集まり」を厳密に扱う数学の基礎言語で、和集合 $A \cup B$・積集合 $A \cap B$・差集合 $A \setminus B$・補集合 $A^c$ の4つの基本演算がベン図で視覚化できる

身につく武器・思考力

2つの有限集合の要素数について $|A \cup B| = |A| + |B| - |A \cap B|$ が成り立ち(包除原理)、重複を引くことで正しい合計人数・件数を数えられる

実社会・ITでの活躍現場

  • •SQLの集合演算(UNION/INTERSECT/EXCEPT)とビット演算による集合実装
  • •ITシステム・アルゴリズム実装における論理設計
  • •データ分析やシミュレーションにおける数理モデリング

Layer 1 — 直感・シミュレーター

2つの円(集合 A・集合 B)の半径と重なり具合をスライダーで調整し、下のボタンで「和集合 A∪BA \cup B」「積集合 A∩BA \cap B」「差集合 A∖BA \setminus B」「補集合 AcA^c」を切り替えてみよう。選んだ演算に対応する領域がベン図上でハイライトされ、その演算を表す集合記法もあわせて表示される。

UAB
A∩BA \cap B

↑ 上のボタンで4つの基本演算(和集合・積集合・差集合・補集合)を切り替えると、青紫色に塗られた領域が対応する集合を表します。円の半径や重なり具合を変えても、選んだ演算のロジック自体は変わらないことを確認しましょう。

直感チェック!ミニクイズ

集合 A の要素数が 30、集合 B の要素数が 20、A と B の積集合 A∩BA \cap B の要素数が 8 のとき、和集合 ∣A∪B∣|A \cup B| はいくつか?

Layer 2 — 定義・受験・証明

定義

全体集合 UU の中の2つの部分集合 A,BA, B に対して、次の基本的な集合演算が定義される。 和集合(Union):

A∪B={x∣x∈A または x∈B}A \cup B = \{x \mid x \in A \text{ または } x \in B\}

積集合/共通部分(Intersection):

A∩B={x∣x∈A かつ x∈B}A \cap B = \{x \mid x \in A \text{ かつ } x \in B\}

差集合(Difference):

A∖B={x∣x∈A かつ x∉B}A \setminus B = \{x \mid x \in A \text{ かつ } x \notin B\}

補集合(Complement):

Ac={x∈U∣x∉A}A^c = \{x \in U \mid x \notin A\}

これらの演算はベン図(Venn Diagram)と呼ばれる重なり合う円の図で視覚的に表現でき、それぞれの演算が円のどの領域に対応するかを一目で理解できる。

公式・数理モデル

∣A∪B∣=∣A∣+∣B∣−∣A∩B∣,(A∪B)c=Ac∩Bc (ド・モルガンの法則)|A \cup B| = |A| + |B| - |A \cap B|, \qquad (A \cup B)^c = A^c \cap B^c \ (\text{ド・モルガンの法則})

証明・導出

包除原理(inclusion-exclusion)の証明: 有限集合 A,BA, B の要素数の和 ∣A∣+∣B∣|A|+|B| を考えると、A∩BA \cap B に属する要素は AA を数えるときに1回、BB を数えるときにもう1回、合計2回数えられてしまっている。

一方、実際に和集合 A∪BA \cup B に含まれる各要素は(AAのみ/BBのみ/両方のいずれであっても)ちょうど1回だけ数えられるべきである。したがって ∣A∣+∣B∣|A|+|B| から重複分 ∣A∩B∣|A \cap B| を1回分引けば、正しい和集合の要素数が得られる。

∣A∪B∣=∣A∣+∣B∣−∣A∩B∣|A \cup B| = |A| + |B| - |A \cap B|

ド・モルガンの法則の証明: x∈(A∪B)cx \in (A \cup B)^c であることは「x∈A∪Bx \in A \cup B でない」、すなわち「x∈Ax \in A でも x∈Bx \in B でもない」ことと同値である。 これは論理的に「x∉Ax \notin A かつ x∉Bx \notin B」と同値であり、まさに「x∈Acx \in A^c かつ x∈Bcx \in B^c」、すなわち x∈Ac∩Bcx \in A^c \cap B^c であることを意味する。 よって (A∪B)c=Ac∩Bc(A \cup B)^c = A^c \cap B^c が成り立つ(同様に (A∩B)c=Ac∪Bc(A \cap B)^c = A^c \cup B^c も成り立つ)。

押さえておきたいポイント

  • 3つの集合の包除原理: ∣A∪B∪C∣=∣A∣+∣B∣+∣C∣−∣A∩B∣−∣B∩C∣−∣C∩A∣+∣A∩B∩C∣|A\cup B\cup C| = |A|+|B|+|C|-|A\cap B|-|B\cap C|-|C\cap A|+|A\cap B\cap C|
  • ド・モルガンの法則 (A∪B)c=Ac∩Bc(A\cup B)^c = A^c\cap B^c は、論理演算のブール代数における `NOT(P OR Q) = (NOT P) AND (NOT Q)` と完全に同じ構造を持つ
  • 対称差(symmetric difference)A△B=(A∖B)∪(B∖A)A \triangle B = (A\setminus B)\cup(B\setminus A) はビット演算の排他的論理和 XOR に対応する
  • A⊆BA \subseteq B(部分集合)はプログラミングの条件分岐における「含意(もし〜ならば)」の集合論的な対応物である
参照基準・学習指導要領との対応

本トピックの内容・数理モデルは、文部科学省学習指導要領(算数・数学・情報)および国際標準カリキュラムに準拠し、エンジニアリング現場の実装事例と照らし合わせてMath World Lab編集部により検証・作成されています。

Layer 3 — 工学応用・現場実装

SQLの集合演算(UNION/INTERSECT/EXCEPT)とビット演算による集合実装

リレーショナルデータベースのSQLは、テーブルの行の集まりを集合とみなし、UNION(和集合)・INTERSECT(積集合)・EXCEPT/MINUS(差集合)という集合演算をそのまま言語機能として提供している。プログラミングでは固定長のビット列(ビットセット)で集合を表現し、AND/OR/XOR/NOTで高速に演算することも多い。

1// JavaScript の Set を用いた集合演算(数学の A, B に対応)
2function union<T>(a: Set<T>, b: Set<T>): Set<T> {
3 return new Set([...a, ...b]); // A ∪ B
4}
5
6function intersection<T>(a: Set<T>, b: Set<T>): Set<T> {
7 return new Set([...a].filter((x) => b.has(x))); // A ∩ B
8}
9
10function difference<T>(a: Set<T>, b: Set<T>): Set<T> {
11 return new Set([...a].filter((x) => !b.has(x))); // A \ B
12}
13
14const setA = new Set(["田中", "佐藤", "鈴木", "高橋"]); // 数学サークル会員
15const setB = new Set(["佐藤", "鈴木", "山田"]); // 物理サークル会員
16
17console.log("両方に所属 (A ∩ B):", [...intersection(setA, setB)]); // 佐藤, 鈴木
18console.log("どちらかに所属 (A ∪ B):", [...union(setA, setB)]);
19console.log("数学のみ (A \\ B):", [...difference(setA, setB)]); // 田中, 高橋
20
21// 対応するSQL(テーブル同士の集合演算)
22// SELECT name FROM math_club INTERSECT SELECT name FROM physics_club; -- A ∩ B
23// SELECT name FROM math_club UNION SELECT name FROM physics_club; -- A ∪ B
24// SELECT name FROM math_club EXCEPT SELECT name FROM physics_club; -- A \ B
25
26// ビットマスクによる集合表現(要素数が少ない場合、超高速な集合演算が可能)
27const A = 0b1011; // 集合 {0, 1, 3} を表すビットセット
28const B = 0b0110; // 集合 {1, 2} を表すビットセット
29console.log("A ∩ B:", (A & B).toString(2)); // AND演算 = 積集合
30console.log("A ∪ B:", (A | B).toString(2)); // OR演算 = 和集合
31console.log("A △ B:", (A ^ B).toString(2)); // XOR演算 = 対称差
この単元につながる学習ロードマップ

次に学ぶならコレ!おすすめトピック

この単元と深い繋がりを持つ、あわせて学ぶと理解が深まるおすすめ単元

数理モデル・概念が近い関連トピック

関連度高中学数学

確率の基礎(場合の数)

サイコロを何度も振ると、確率はどこに落ち着く?

関連度高高校数学

順列と組み合わせ(nPr と nCr)

「並べる順番」を区別するかどうか。パスワードセキュリティとガチャ確率の数理

"PASS"c=mᵉ%n
関連度高工学応用

RSA暗号と素数の秘密(公開鍵暗号)

「掛け算は簡単だが、素因数分解は極めて困難」という非対称性を利用した現代暗号の金字塔

同じレベルで次に挑戦したいトピック

同レベル推薦大学数学

固有値・固有ベクトル

行列で変換しても「向きが変わらない」特別な方向

同レベル推薦大学数学

フーリエ変換と周波数分解

どんなに複雑な波も、単純なサイン波の重ね合わせに分解できる

同レベル推薦大学数学

ベイズの定理(条件付き確率と事前・事後確率)

新たな情報や証拠(エビデンス)を得て「確信度」を更新する確率論

工学・実社会での応用先でつながるトピック

工学・実践連携工学応用

勾配降下法

谷底を探すAIの基本アルゴリズム

工学・実践連携工学応用

ニューラルネットワークの数学(順伝播と活性化関数)

入力に重みを掛けて足し合わせ、非線形関数で発火させるAIの基本素子

工学・実践連携工学応用

レコメンドの仕組み(コサイン類似度とベクトル検索)

ユーザーの好みと商品の近さを「ベクトルのなす角」で判定するアルゴリズム

あなたの数学力をさらに伸ばす

数学の弱点診断や算数パズルに挑戦してみませんか?

簡単な質問に答えてあなたにぴったりの学習ロードマップを発見したり、直感を試すパズルで数の面白さを体験できます。