MathLabs

6年生

集合と集合演算

集合とは、対象を明確に定めた集まりであり、その対象を元(要素)と呼ぶ。x∈Ax \in A は xx が AA に属することを意味する。ある集合が別の集合の部分集合であるとは、A⊆BA \subseteq B のように AA のすべての元が BB にも属することをいう。2つの集合から新しい集合を作ることができる:和集合 A∪BA \cup B(AA または BB に属する元)、共通部分 A∩BA \cap B(両方に属する元)、差集合 A∖BA \setminus B(AA に属し BB には属さない元)。これらの演算は分配法則 A∩(B∪C)=(A∩B)∪(A∩C)A \cap (B \cup C) = (A \cap B) \cup (A \cap C) のような代数に似た法則に従い、和集合の元の個数を数えるには包除原理 ∣A∪B∣=∣A∣+∣B∣−∣A∩B∣|A \cup B| = |A| + |B| - |A \cap B| が成り立つ。両方ともここで厳密に証明し、アンケート調査データや検索エンジンのフィルタに応用する。

直観物を入れた箱:何がどこに属するか

重なり合う2つのおもちゃ箱を想像してほしい:箱 AA には積み木、箱 BB には車が入っている。いくつかのおもちゃは「車型の積み木」で両方の箱に同時に入っている。「x∈Ax \in A?」と問うことは、特定のおもちゃ xx が箱 AA の中にあるかを問うことである。「A⊆BA \subseteq B?」と問うことは、箱 AA の中のすべてのおもちゃが箱 BB のどこかにもあるかを問うことである。2つの箱を1つの山にまとめると和集合 A∪BA \cup B が得られ、両方の箱にあるおもちゃだけを残すと共通部分 A∩BA \cap B が得られ、箱 AA から箱 BB にもあるものを取り除くと差集合 A∖BA \setminus B が得られる。下のネットワークウィジェットでは、2つの円の間で要素をドラッグして、4つの演算がリアルタイムに再計算される様子を見ることができる。

AとBの重なりを示すインタラクティブなネットワーク図、共通部分が強調表示されている
3つの集合 A,B,CA, B, C のベン図:和集合、2集合ずつの共通部分、および中央の共通部分 A∩B∩CA\cap B\cap C を示す。

中高形式的定義と比較表

定義: 集合・元・部分集合

集合 AA とは、互いに異なる対象の集まりであり、x∈Ax \in A を満たす各対象 xx を AA の元という。集合 AA が集合 BB の部分集合であるとは、AA のすべての元が BB の元でもあることをいい、A⊆BA \subseteq B と書く。2つの集合が等しいのは、A⊆BA \subseteq B かつ B⊆AB \subseteq A が同時に成り立つとき、まさにそのときである。

A∪B={x:x∈A∨x∈B}A \cup B = \{x : x \in A \lor x \in B\}

和集合 A∪B={x:x∈A∨x∈B}A \cup B = \{x : x \in A \lor x \in B\} は、2つの集合の少なくとも一方に属する元をすべて集める。対して共通部分は、両方の集合に共通する元だけを残す。

A∩B={x:x∈A∧x∈B}A \cap B = \{x : x \in A \land x \in B\}
A={1,2,3}A=\{1,2,3\} と B={2,3,4}B=\{2,3,4\} に対する集合演算
演算定義結果
和集合 A∪BA \cup BA∪B={x:x∈A∨x∈B}A \cup B = \{x : x \in A \lor x \in B\}{1,2,3,4}\{1,2,3,4\}
共通部分 A∩BA \cap BA∩B={x:x∈A∧x∈B}A \cap B = \{x : x \in A \land x \in B\}{2,3}\{2,3\}
差集合 A∖BA \setminus BA∖B={x:x∈A∧x∉B}A \setminus B = \{x : x \in A \land x \notin B\}{1}\{1\}
部分集合 A⊆BA \subseteq BAA のすべての元が BB に属する偽 (1∉B1 \notin B)

大学2つの重要な定理とその完全な証明

任意の3つの集合 AA, BB, CC に対して:A∩(B∪C)=(A∩B)∪(A∩C)A \cap (B \cup C) = (A \cap B) \cup (A \cap C)。

なぜ正しいのか?

通常の代数で乗法が加法に対して分配するのと同様に、集合の代数では共通部分が和集合に対して分配する。これにより「カテゴリ AA に属し、かつ(セール中 BB または新着 CC)」のようなフィルタを、和集合で結合された2つの扱いやすいフィルタに書き換えることができ、これはまさにデータベースや検索エンジンのクエリプランナがブール型フィルタを単純化する方法である。

証明

両方の包含関係を、任意の元 x0x_0 を用いた「元を追跡する」手法によって示すことで、2つの集合が等しいことを証明する。

(順方向、⊆\subseteq) x0∈A∩(B∪C)x_0 \in A \cap (B \cup C) と仮定する。共通部分の定義により、これは x0∈Ax_0 \in A かつ x0∈B∪Cx_0 \in B \cup C を意味する。和集合の定義により、x0∈B∪Cx_0 \in B \cup C は x0∈Bx_0 \in B または x0∈Cx_0 \in C を意味する。この2つの場合を別々に考える。場合1:x0∈Bx_0 \in B。x0∈Ax_0 \in A と合わせると x0∈A∩Bx_0 \in A \cap B が得られる。場合2:x0∈Cx_0 \in C。x0∈Ax_0 \in A と合わせると x0∈A∩Cx_0 \in A \cap C が得られる。いずれの場合も x0x_0 は x0∈A∩Bx_0 \in A \cap B または x0∈A∩Cx_0 \in A \cap C に属するので、x0∈(A∩B)∪(A∩C)x_0 \in (A \cap B) \cup (A \cap C) である。

(逆方向、⊇\supseteq) x0∈(A∩B)∪(A∩C)x_0 \in (A \cap B) \cup (A \cap C) と仮定する。和集合の定義により、これは x0∈A∩Bx_0 \in A \cap B または x0∈A∩Cx_0 \in A \cap C を意味する。もし x0∈A∩Bx_0 \in A \cap B ならば x0∈Ax_0 \in A かつ x0∈Bx_0 \in B であり、したがって x0∈B∪Cx_0 \in B \cup C(x0x_0 が BB に属するなら BB または CC に属する)、よって x0∈A∩(B∪C)x_0 \in A \cap (B \cup C) となる。もし代わりに x0∈A∩Cx_0 \in A \cap C ならば x0∈Ax_0 \in A かつ x0∈Cx_0 \in C であり、したがって x0∈B∪Cx_0 \in B \cup C、よって再び x0∈A∩(B∪C)x_0 \in A \cap (B \cup C) となる。

左辺のすべての元が右辺に属し、その逆も成り立つので、2つの集合はまったく同じ元を含む。したがって A∩(B∪C)=(A∩B)∪(A∩C)A \cap (B \cup C) = (A \cap B) \cup (A \cap C) が成り立ち、証明が完了する。

任意の2つの有限集合 AA と BB に対して:∣A∪B∣=∣A∣+∣B∣−∣A∩B∣|A \cup B| = |A| + |B| - |A \cap B|。ここで ∣A∣|A|, ∣B∣|B|, ∣A∩B∣|A \cap B|, ∣A∪B∣|A \cup B| はそれぞれの集合の元の個数を表す。

なぜ正しいのか?

∣A∣|A| と ∣B∣|B| を単純に足すと、両方の集合に属するすべての元が二重に数えられてしまうため、∣A∩B∣|A \cap B| を一度引くことでその重複を修正する。これはまさに、アンケート調査データから2つの円のベン図を読み取る際の計算そのものである:コーヒーと紅茶の両方が好きな人を、少なくとも一方が好きな人数を尋ねる際に二重に数えてはならない。

証明

鍵となる考え方は、A∪BA \cup B を互いに素な3つの部分に分けて、それぞれを一度だけ数えることである。

まず、各集合をもう一方の集合を使って分割する:A=(A∖B)∪(A∩B)A = (A \setminus B) \cup (A \cap B) と B=(B∖A)∪(A∩B)B = (B \setminus A) \cup (A \cap B)。それぞれの式で右辺の2つの部分は互いに素である。なぜなら (A∖B)∩(A∩B)=∅(A\setminus B) \cap (A \cap B) = \varnothing(BB の外にある元は同時に BB の中にはあり得ない)であり、同様に (B∖A)∩(A∩B)=∅(B\setminus A) \cap (A \cap B) = \varnothing も成り立つからである。有限集合の大きさは、それを分割する互いに素な部分の大きさの和に等しいので、∣A∣=∣A∖B∣+∣A∩B∣|A| = |A \setminus B| + |A \cap B| と ∣B∣=∣B∖A∣+∣A∩B∣|B| = |B \setminus A| + |A \cap B| が得られる。

次に、A∪BA \cup B 自体が互いに素な3つの部分に分かれることに注目する:A∪B=(A∖B)∪(B∖A)∪(A∩B)A \cup B = (A \setminus B) \cup (B \setminus A) \cup (A \cap B)。実際、A∖BA\setminus B、B∖AB\setminus A、A∩BA\cap B は互いに素であり(A∖BA\setminus B の元は BB に属さないので A∩BA \cap B にも B∖AB \setminus A にも属さない、他も同様)、それらの和集合はちょうど AA または BB に属する元全体になる。この分割で数えると ∣A∪B∣=∣A∖B∣+∣B∖A∣+∣A∩B∣|A \cup B| = |A \setminus B| + |B \setminus A| + |A \cap B| が得られる。

最後に代入する:∣A∣=∣A∖B∣+∣A∩B∣|A| = |A \setminus B| + |A \cap B| より ∣A∖B∣|A \setminus B| =∣A∣−∣A∩B∣= |A| - |A\cap B|、∣B∣=∣B∖A∣+∣A∩B∣|B| = |B \setminus A| + |A \cap B| より ∣B∖A∣|B \setminus A| =∣B∣−∣A∩B∣= |B| - |A\cap B| が得られる。両方を ∣A∪B∣=∣A∖B∣+∣B∖A∣+∣A∩B∣|A \cup B| = |A \setminus B| + |B \setminus A| + |A \cap B| に代入すると ∣A∪B∣=(∣A∣−∣A∩B∣)+(∣B∣−∣A∩B∣)+∣A∩B∣=∣A∣+∣B∣−∣A∩B∣|A \cup B| = (|A| - |A\cap B|) + (|B| - |A\cap B|) + |A\cap B| = |A| + |B| - |A\cap B| となり、これはまさに ∣A∪B∣=∣A∣+∣B∣−∣A∩B∣|A \cup B| = |A| + |B| - |A \cap B| である。これで証明が完了する。

大学実世界での応用と具体例

集合演算は日常的な2つのツールの背骨である。アンケート分析では、製品 AA と製品 BB の両方を好む回答者についての2円ベン図を ∣A∪B∣=∣A∣+∣B∣−∣A∩B∣|A \cup B| = |A| + |B| - |A \cap B| を使って読み取る:関心を持つ人の総数は単純な和ではない、なぜなら A∩BA \cap B に属する人は二重に数えられてしまうからである。検索エンジンやECサイトのフィルタでは、「カテゴリ AA」AND「セール中 BB」を組み合わせることはまさに共通部分 A∩BA \cap B であり、ORで組み合わせることは和集合 A∪BA \cup B、NOTであるタグを除外することは差集合 A∖BA \setminus B である。分配法則 A∩(B∪C)=(A∩B)∪(A∩C)A \cap (B \cup C) = (A \cap B) \cup (A \cap C) のおかげで、クエリプランナは「AA かつ(BB または CC)」を、結果を変えずに「(AA かつ BB)または(AA かつ CC)」に書き換えることができる。

例: 包除原理でアンケートを読む

ある学校で120120人の生徒にアンケートを行った。7070人がサッカーをすると答え、4545人がバスケットボールをすると答え、2525人が両方をすると答えた。少なくとも一方のスポーツをする生徒は何人か、またどちらもしない生徒は何人か。

解答

サッカーをする生徒の集合を AA、バスケットボールをする生徒の集合を BB とすると、∣A∣=70|A| = 70、∣B∣=45|B| = 45、∣A∩B∣=25|A \cap B| = 25 である。

上で証明した包除原理により ∣A∪B∣=∣A∣+∣B∣−∣A∩B∣|A \cup B| = |A| + |B| - |A \cap B|。数値を代入すると:∣A∪B∣=70+45−25=90|A \cup B| = 70 + 45 - 25 = 90。よって少なくとも一方のスポーツをする生徒は 9090 人である。

調査対象の合計は120120人なので、どちらもしない生徒の数は、120120人の集団全体の中で A∪BA \cup B の補集合となる:120−90=30120 - 90 = 30。

単純に 70+45=11570+45=115 と足す間違いに注意:これは両方をする 2525 人を二重に数えてしまう。だからこそ定理は ∣A∩B∣|A \cap B| を一度引くのである。

例: 分配法則で検索フィルタを単純化する

あるオンラインストアのカタログは製品の集合 UU である。AA を「靴カテゴリに属する」、BB を「セール中」、CC を「新着」とする。買い物客のフィルタは「靴カテゴリに属し、かつ(セール中または新着)」、すなわち A∩(B∪C)A \cap (B \cup C) である。これが、2つの単純なフィルタを別々に実行して結果を統合するのと同じ製品リストになることを示し、検索エンジンがなぜ後者の形を好むのかを説明せよ。

解答

上で証明した分配法則により、A∩(B∪C)=(A∩B)∪(A∩C)A \cap (B \cup C) = (A \cap B) \cup (A \cap C)。ここで A=A= 靴、B=B= セール中、C=C= 新着として適用すると:A∩(B∪C)=(A∩B)∪(A∩C)A \cap (B \cup C) = (A \cap B) \cup (A \cap C)。

左辺 A∩(B∪C)A \cap (B \cup C) は1つの統合フィルタを表す:まずセール中または新着のすべてからなる集合 B∪CB \cup C を作り、それを靴と交わらせる。右辺は2つの独立した単純フィルタ、「セール中の靴」(A∩BA\cap B)と「新着の靴」(A∩CA \cap C)を表し、その結果を和集合で統合する。

定理により両辺がまったく同じ製品を列挙することが保証されているので、クエリプランナはどちらの実行方法を選んでもよい。2つの単純な単一条件フィルタ(それぞれ1つのカテゴリ用の高速な既成インデックスを使える)を実行して和集合で統合する方が、通常「and の中に or がある」式を直接評価するより安価であるため、実際の検索エンジンは実行前にクエリを右辺の形に書き換える。

具体的に、靴 ={1,2,3,4,5}=\{1,2,3,4,5\}、セール中 ={2,4,6}=\{2,4,6\}、新着 ={1,4,7}=\{1,4,7\} とすると、B∪C={1,2,4,6,7}B\cup C=\{1,2,4,6,7\} かつ A∩(B∪C)={1,2,4}A\cap(B\cup C)=\{1,2,4\};個別には A∩B={2,4}A\cap B=\{2,4\}、A∩C={1,4}A\cap C=\{1,4\} であり、それらの和集合も {1,2,4}\{1,2,4\} となって、2つの計算が一致することが確認できる。

A={2,4,6,8}A=\{2,4,6,8\} とする。正しい記述はどれか。

あるクラスに3030人の生徒がいる;1818人が数学を好み、1515人が物理を好み、99人が両方を好む。少なくとも一方を好む生徒は何人か。

あるショッピングサイトで「ブランド AA」OR「50ドル未満(BB)」でフィルタできる。表示結果を計算するのはどの集合演算か。

A={1,2,3}A=\{1,2,3\}、B={2,3}B=\{2,3\}、C={3,4}C=\{3,4\} のとき、A∩(B∪C)=(A∩B)∪(A∩C)A \cap (B \cup C) = (A \cap B) \cup (A \cap C) は成り立つか、また共通の値は何か。

参考文献

  1. Paul R. Halmos (1960). Naive Set Theory
  2. Kenneth H. Rosen (2019). Discrete Mathematics and Its Applications