えっ、それが疑問だったの? あ、そう。んじゃ、ちょっと説明しましょう。
A、Bが集合だとして、
- AとBの直和は、A+B
- AとBの直積は、A×B
- AとBの指数は、BA
と書きます。算数の足し算、掛け算、累乗の記号を使うのはなぜ? いやっ、そもそも、直和<ちょくわ>、直積<ちょくせき>、指数<しすう>ってなに? と、そんな疑問を持つ人のために。
記号の約束
集合とはいっても、ここでは有限集合だけを例に使うことにします。そして、[0] = {}, [1] = {1}, [2] = {1, 2}, [3] = {1, 2, 3} などと約束します。つまり、[n]と書いてあったらそれは「1からnまでの整数の集まり」です。こういった[n]は有限集合の典型例といえるでしょう。
有限集合Aに対して、#(A) は、Aの要素の個数だとします。例えば、#({a, b}) = 2 です。シャープ記号はナンバー記号とも呼ばれますから、#で個数(ナンバー)を表すのは自然でしょ。混乱の恐れがなければ、#(A) を #A とも書きます(丸括弧を省略)。
当然ながら、#[0] = 0, #[1] = 1, #[2] = 2, #[3] = 3、一般に #[n] = n です。これから説明することは、
- #([n]+[m]) = #[n]+#[n] = n+m
- #([n]×[m]) = #[n]×#[n] = n×m
- #([m][n]) = #[m]#[n] = mn
ということだけです。(知っている方は、以下はスキップ。)
直積はやさしい
直積が一番簡単そうなので、これからはじめましょう。A×Bは、Aの要素aとBの要素bの組(a, b)を全部寄せ集めた集合です。例えば、
- [2]×[3] = {1, 2}×{1, 2, 3} = {(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3)}
です。(1, ?) と (2, ?) という2つのパターンを考えて、クエスチョンマークのところに、1, 2, 3が入ると、組み合わせ方は 2×3 ですね。あるいは、2本の縦線と3本の横線を交差させた碁盤目を勘定して 2×3 。この事情を一般化すれば、
- #([n]×[m]) = #[n]×#[m] = n×m
直和は少しむずかしい
直和 A+B は、合併 A∪B とは違います。AとBに共通に属する要素があっても、それらを別々なものだと思って寄せ集めます。例えば、[2]+[3] は、合併 [2]∪[3] とは違います。[2]∪[3] = {1, 2}∪{1, 2, 3} = {1, 2, 3} ですが、[2]+[3] = {1, 2, 1', 2', 3} です。1' は、1 と同じモノですが別物扱いします -- なんか日本語おかしいですよね、でもまー、そんな感じなんですよ。2' は 2 と同じモノだけど別物ね :-)
なんだか禅問答みたいだと思う人のために、A+B = ({1}×A)∪({2}×B) という定義があります。この定義をありがたがることは全然ない(他にも定義の仕方はある)のですが、便利なのは確か。この定義によれば、
- {1, 2}+{1, 2, 3} = ({1}×{1, 2})∪({2}×{1, 2, 3})
なので、
- {(1, 1), (1, 2)}∪{(2, 1), (2, 2), (2, 3)} = {(1, 1), (1, 2), (2, 1), (2, 2), (2, 3)}
です。ここで、(1, ?) (2, ?) に出てくる1と2は、直積の場合とは全然別で、出身を示す目印です。A+Bをこの方法で作ったとき、(1, x) はAから来た(Aに由来する)xを示し、(2, x) はBから来たxを示します。「同じモノですが別物扱いします」という変な日本語は、「同じxですが、目印となる1と2で区別して扱います」ってことね。
{1}×A はAのコピー、{2}×BはBのコピー、目印1, 2が違うため共通部分はなく、#(A+B) = #({1}×A)+#((2}×B) = #A+#B は納得いくでしょ。結局、
- #([n]+[m]) = #[n]+#[m] = n+m
ですね。
最後は指数
集合A、Bに対して、BAはBのA乗、指数集合といいます。確かに記号は指数(累乗、べき)の形をしているのだけど、「指数」という味気ない言葉じゃ何もイメージできませんよね。「関数集合」と言えばより事情が分かるでしょう。BAは、AからBへの(A上で定義され、Bに値を取る)関数の全体です。A→B という記法のほうが感じがでるでしょうが、矢印があまりに多用されているので、BA と書いたほうがむしろ混乱しません。
さて、[3][2]を考えましょう。これは(他の矢印の用法と区別できるなら)、[2]→[3] と書いてもいいのです。集合{1, 2}上で定義され、値を{1, 2, 3}に取る関数fは、f(1)とf(2)で決まります。f(1)の選び方は3通り、f(2)の選び方は3通り。3通りと3通りを自由に組み合わせていいので、合計 3×3=32通りの可能性があります。これらの組み合わせがそれぞれ1つの関数を決めるでの、関数の個数も32です。
9個全部はともかくも、4つくらい並べておきましょう。
- f(1) = 1, f(2) = 1
- f(1) = 1, f(2) = 2
- f(1) = 1, f(2) = 3
- f(1) = 2, f(2) = 1
[2][3] だったら、f(1), f(2), f(3) の値がそれぞれ2通りずつなので、2×2×2 = 23 です。一般に、
- #([m][n]) = #[m]#[n] = mn
と、そんなわけで、足し算、掛け算、累乗の記号を使うのは的ハズレではありません。