集合の解説(基本情報技術者シラバス用語)

目次

集合とは

集合(しゅうごう)とは、ある共通の性質や条件を持った「ものの集まり」のことです。集合に含まれる1つひとつの要素を「要素(メンバー)」と呼びます。コンピュータの世界では、大量のデータを整理・分類したり、データベースから特定のグループのデータだけを取り出したりする際に集合の考え方が使われます。代表的な集合の操作として、2つの集まりのどちらにも含まれる共通の部分を取り出す「積集合(かつ / AND)」や、どちらか一方にでも含まれるものをすべて合わせる「和集合(または / OR)」、特定のグループ以外を指す「補集合(〜以外 / NOT)」などがあります。

具体例

ある学校の部活動のメンバーリストを集合として表してみましょう。

サッカー部の集合A = {佐藤, 鈴木, 高橋}
野球部の集合B   = {田中, 鈴木, 渡辺}

【積集合(両方の部を掛け持ちしている人)】
A ∩ B = {鈴木}

【和集合(どちらかの部活に所属している全員)】
A ∪ B = {佐藤, 鈴木, 高橋, 田中, 渡辺}

このようにデータをグループ(集合)として捉えることで、重複を排除した名簿を作ったり、掛け持ちしている人を特定したりする操作がスムーズに行えます。

もう少し詳しく

集合論は、現代数学およびコンピュータサイエンスの根本を支える理論です。プログラミングやデータ処理において、集合の概念は無意識のうちに頻繁に利用されています。例えば、リレーショナルデータベース(RDB)を操作するSQLという言語は、まさにこの集合の考え方(関係代数)をベースに作られています。テーブル同士を結合(JOIN)して両方の条件に合致するデータを取り出す処理は「積集合」の応用であり、複数の検索結果を合算(UNION)する処理は「和集合」そのものです。また、データの中から特定の条件に当てはまらないものを除外する処理は「差集合」や「補集合」に相当します。

集合の重要な性質として、「要素に重複がないこと」と「要素の順番に意味がないこと」が挙げられます。PythonやJavaなどのプログラミング言語には、配列やリストとは別に「Set(セット)」というデータ構造が用意されています。これを利用すると、大量のデータの中から重複するデータを自動的に排除して一意な値のリストを高速に作成したり、2つのリストの間で共通する要素だけを瞬時に抽出したりすることができます。要素が集合に含まれるかどうかを判定する処理において、リストを順番に検索するよりも、集合型のデータ構造を用いた方がはるかに高速に処理できることが多く、効率的なアルゴリズムを設計する上で集合の知識は欠かせません。

試験でのポイント

IT系の試験では、基礎理論の離散数学の分野で集合に関する問題が出題されます。試験で特に問われやすいのは、ベン図を用いた集合の演算結果の図示や、条件文と集合の対応関係を問う問題です。積集合(A ∩ B)、和集合(A ∪ B)、補集合(Aの否定、Aの上にバーを引く)、差集合(A - B)の記号の意味を正確に理解し、ベン図のどの領域に該当するのかを瞬時に判断できるようにしておく必要があります。記号が覚えにくい場合は、「∩」は帽子のようにかぶさって狭くなるから「共通部分(かつ)」、「∪」は受け皿のように広く集めるから「すべて(または)」とイメージすると良いでしょう。

また、ド・モルガンの法則と組み合わせて、複雑な集合の式を簡単にする問題も頻出です。さらに、データベースの分野(SQLの出題など)でも集合演算の知識が直接的に問われます。「和両立(演算対象のテーブルの列数とデータ型が一致していること)」などのデータベース特有の条件と絡めて出題されることもあるため、離散数学としての基礎的な集合の概念をしっかりと理解した上で、それがデータベース操作にどのように応用されているのかを関連付けて学習することが、総合的な得点アップにつながります。

関連する用語

ベン図、関係代数、データベース

読んだ内容を10問練習と実技で確認

記事で理解した用語を、StudyQuestの演習とクラウド実技ラボで定着させます。

10問練習 実技ラボ