集合 和集合 積集合 差集合 ベン図
集合とは
集合(set)とは、ある条件を満たす要素の集まりである。19世紀末、ドイツの数学者ゲオルク・カントールによって厳密に定式化された。集合論は現代数学の基盤であり、データベースやプログラミング言語の設計にも深く影響している。
集合の表記
A = {1, 2, 3} ... 要素を列挙
B = {x | x は偶数} ... 条件で定義
∈ ... 「属する」(2 ∈ A は「2はAに属する」)
∅ ... 空集合(要素が1つもない集合)
基本的な集合演算
和集合(Union)
和集合 A ∪ B
AまたはBに属する要素すべての集合。
A = {1, 2, 3}, B = {2, 3, 4} のとき、A ∪ B = {1, 2, 3, 4}
積集合(Intersection)
積集合 A ∩ B
AかつBに属する要素の集合。
A = {1, 2, 3}, B = {2, 3, 4} のとき、A ∩ B = {2, 3}
差集合(Difference)
差集合 A − B(または A \ B)
Aに属するがBに属さない要素の集合。
A = {1, 2, 3}, B = {2, 3, 4} のとき、A − B = {1}
補集合(Complement)
補集合 A'(または Ā、Ac)
全体集合Uのうち、Aに属さない要素の集合。
U = {1, 2, 3, 4, 5}, A = {1, 2} のとき、A' = {3, 4, 5}
ベン図
ベン図(Venn diagram)は、集合の関係を視覚的に表す図法である。円や楕円で集合を表し、重なりで積集合、全体で和集合を示す。複雑なJOIN操作やフィルタ条件を考える際、頭の中でベン図を描くと整理しやすい。
SQLとの対応
| 集合演算 | SQL | 説明 |
|---|---|---|
| A ∪ B | UNION | 両方のクエリ結果を結合(重複除去) |
| A ∩ B | INTERSECT | 両方に存在するレコード |
| A − B | EXCEPT / MINUS | Aにあり、Bにないレコード |
| A × B | CROSS JOIN | 直積(すべての組み合わせ) |
JOINは集合演算の応用である。INNER JOINは共通キーでの積集合的な結合、LEFT JOINは片方を基準にした拡張である。
実務での応用
WEB開発での応用
SQLクエリ設計:複雑な抽出条件を集合演算として整理すると、効率的なクエリが書ける。
配列操作:JavaScriptのfilter、Pythonのset演算は集合論そのもの。
権限管理:ユーザーの権限集合と必要権限集合の積集合で、アクセス可否を判定。
AI/MLでの応用
特徴量選択:複数のフィルタ条件の組み合わせを集合演算で表現。
データ分割:訓練/検証/テストセットは互いに素な集合(共通部分なし)。
集合ベースの類似度:Jaccard係数は |A ∩ B| / |A ∪ B| で定義される。
深掘りリンク
- Wikipedia: 集合
- Wikipedia: ベン図
- 書籍:「集合と位相」内田伏一
- 次のステップ:写像、関係、順序集合