はじめMath! Javaでコンピュータ数学

第33回 集合の数学 部分集合,空集合[前編]

この記事を読むのに必要な時間:およそ 1.5 分

空集合とは

空集合とは,要素を一つも持たない集合のことで記号φ(ファイ)で表します。空集合は,集合の演算で当てはまる要素がなかった場合の結果として得られます。記号φを覚えておきましょう。

例えば,自然数の集合内において,10以下の偶数の集合Aと,10以下の奇数の集合Bの共通する要素を集めた集合Cを考えてみましょう。題意から,一致する要素はありません。ですから集合Cは空集合.です。

図33.3 空集合

図33.3 空集合

Java言語と部分集合・空集合

次のような場合を考えてみましょう。

  • 「住所録データから,今年年賀状を出す相手を抽出する。」

ここで,年賀状データをA,今年年賀状を出す相手のリストをBとしましょう。すると,BはAの一部かも知れませんし,全部かもしれません。このような状況はA⊇Bと書き表せます。

もし,喪中のはがきが届いており,年賀を出さない相手がわかっていれば,確実にAに含まれていてもBに含まれない人があるわけです。このような状況はA⊃Bと書けます。

コンピュータでデータ処理をする場合には,⁠単に年賀状を出す相手をこれから決める」という段階は,部分集合を得るために住所録データをそのまま複製することだと言えます。喪中の人が明らかになって,さあ年賀状を作成するという段階の名簿を得るという段階は,真部分集合を得るために住所録データの取捨選択を行ったことにあたります。真部分集合である「今年年賀状を送る人のリスト」は,データ処理を行う前は空かもしれません※2⁠。もし空であれば,その時点でのその集合は空集合であるといえます。

これらの処理は,加減乗除のようなシンプルな演算子で実行できることではなく,データの格納された配列やArrayListを一つ一つ条件に照らし合わせて取捨選択するという地道な処理が必要となります。データ量が膨大な場合はJava言語でゼロからプログラムを作るのではなく,データベースシステムを利用する方がよいでしょう。

※2)
かもしれない,というのは,先ず全てのデータをセットした状態で処理を開始することも考えられるからです。条件に合わないデータを削除していく方式も考えられるからです。

今回はここまで

いかがでしたか?改めて語句を眺めてみて,それらの語句の表すことを無意識に,自然に行っていることが納得できますか?まだ今の段階では語句の確認とプログラミングとの対応付け程度ですから有難味が感じられないかもしれません。しかし,物事を明確に表現することのメリットは必ずありますので,その方法である集合の数学の各項目について,おざなりにすることなく一つ一つチェックしておいてくださいね。レゴのブロック一個では楽しい遊びはありませんが,たくさん集まれば車でも宮殿でも作れるようなもの,数学も積み上げてこそ役に立ちますから。

世の中にはデータベース処理用の優れたソフトウエアやライブラリがあります。なるべくそのようなものを使うべきだとはわかっていても,小さなデータを「ちょっと」取り扱う場合には,自前で処理するコードを組んだ方が良い場合が多々あります。次回はそんな演習問題を用意しました。簡単なようで意外と煩雑ですから,是非とも取り組んでみてください。

今回のまとめ

  • 部分集合は全体あるいは一部のこと。真部分集合は一部のことです。
  • 空集合はデータの格納されていない配列などに例えられます。

著者プロフィール

平田敦(ひらたあつし)

地方都市の公立工業高等学校教諭。趣味はプログラミングと日本の端っこ踏破旅行。2010年のLotYはRuby。結城浩氏のような仕事をしたいと妄想する30代後半♂。