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

第31回集合の数学 集合と要素[中編]

集合と要素 のつづき

前回は集合の定義の方法、そして集合をJava言語で表現する方法を紹介しました。今回は集合に含まれる要素に注目します。

図31.1 集合と要素の図示例 その2
図31.1 集合と要素の図示例 その2

図31.1を集合の数学記号を用いて表現すると、次のように書くことが出来ます。

では、順番に見ていきましょう。

集合の要素

式31.1は、前回と同様集合Aに含まれる要素を一気に定義しています。

式31.2は、⁠aは集合Aの要素である」と要素を個別に宣言しています。式31.3も同様の意味です。⁠集合Aには要素aが含まれる」と読みます。数学的には、二つの式は等価です。文脈によって式の形を適切に選びましょう。

集合に「含まれない」要素を明示するための方法もあります。式31.4「数fが集合Aに含まれていない」と宣言しています。

Java言語の配列やArrayListに格納されたデータの集合に対して、式31.2や式31.4のような処理や判断をするにはどうすればよいでしょうか。配列を用いた場合は、配列の先頭から逐一比較して同じ要素があるかどうか確認します。人間にとっては面倒ですが、コンピュータは文句を言わず処理をしてくれます。とはいえ、逐一比較するプログラムを作るのは大変ですし、プログラムのミスも心配です。そこで、ArrayListには便利な道具立てが用意されています。次回の演習問題でそれを用いれば、ぐっと短くわかりやすいコードを書くことが出来ます。どんな道具立てがあるのか、ArrayListについて調査をしておいてください。次回の問題に取り組むための宿題としておきましょう。

補集合

式31.5は、集合Aに含まれない部分が集合Bであると定義しています。このような操作を集合Aの補集合をとるといいます。補集合をとるためには、集合Aに含まれない部分も定義されていないと、具体的な要素が得られません。図31.1のなかには、四角形の枠が描かれています。四角形の枠の中に要素aからgがちりばめられ、その内のいくつかを円で囲み集合Aと名付けています。四角形の枠が、ここで取り扱う要素の全体を表しています。この枠の中に入っていないものは取り扱わないのだ、という意味でもあります。四角形の枠で囲まれた集合を全体集合といい、記号Uで表します[1]⁠。

具体的に考えてみましょう。あなたの年賀状の住所録を全体集合とします。住所録は職場関係の人々、友人、親類と分類されています。更に、今年度喪中の人にはチェックを入れてあります。

さて、自分自身も喪中であるとします。近頃では、祖父・祖母の喪中では喪中を出さず、親類のみ賀状の送付を控えるのが多くなっているそうです。そこで、こんな方針で賀状・喪中はがきを投函することにしました。

「職場関係には喪中はがきを出す。友人には賀状を出す。親類には賀状を出さない。」これを図に表すと次の図31.2のようになります。

図31.2 補集合の例、年賀と喪中
図31.2 補集合の例、年賀と喪中

図31.2で淡いオレンジ色の部分が年賀状を送る人々です。友人の集合の中で、年賀を出す部分は、喪中の補集合になっています[2]⁠。

要素の数

式31.6は、集合Aに含まれる要素の数を定義しています。その集合がどんな集合かによって要素の数え方はまちまちです。図31.2のような場合なら、指先で一つ一つ数え上げればよいでしょう。⁠100より小さな自然数の偶数の集合」ならば数え上げる式を考えることが出来るでしょう。⁠100より小さな素数[3]の集合」ならば?集合の要素の数というのは、単純なことなのですが、実はなかなか一筋縄ではいかないことが多いものなのです。

プログラマにとって、要素の数の身近な例は配列の長さでしょう。Java言語でも、配列に含まれる変数やその値のことを「配列の要素」と言います。

配列を使う場合に心得ておくべきことがあります。それは、宣言した配列の長さの数値と、配列の末尾の要素の番号[4]が異なることです。先頭の要素の番号が0から始まるためで、末尾の要素の番号は配列の長さの数値より一つ小さいのです。このことが、プログラミング初心者の方にとっては、いいえ、初心者でなくなってからも、一つの大きなバグの原因になります。

配列は一度にたくさんの変数を定義できる便利な機能です。しかし、コンピュータは有限の記憶領域しか確保できません。あまりに大きな配列を定義すると、動作が遅くなったり、最悪の場合はプログラムがメモリエラーを起こして終了してしまいます。

今回はここまで

プログラマにとって、意識していなくても必ず使っているのが集合の数学です。将来、複雑なデータの集合を間違いなく処理する必要が生じたら、集合の数学の知識は必ず助けになります。次回の演習に取り組んでしっかり身に付けてください。

おすすめ記事

記事・ニュース一覧