次元の概念は思いのほか難しくて、あまり理解されてないのかも知れませんね。特に0次元が鬼門のようです。
離散キューブという概念を導入する過程のなかで0次元の話をします。(-1)次元は、空集合に対する次元の候補です(空集合の次元は幾つかの考え方があります)。
内容:
次元て何?
次元て何? に対して、位相幾何学で「次元論」なんてのがありますが、なんか難しい話で、我々が「次元論」で次元を理解しているとは思えません。おそらく、「ベクトル空間の次元」の概念とその延長線上で“次元”を理解しているのだと思います。今回話題にする次元はそういうもの -- 「ベクトル空間の次元+α」です*1。
ベクトル空間 V *2は足し算とスカラー倍*3ができます。足し算は可換群演算なので、次の法則を満たします。
- ∀a, b, c∈V. (a + b) + c = a + (b + c)
- ∀a, b∈V. a + b = b + a
- ∀a∈V. 0 + a = a
- ∀a∈V. -a + a = 0
ここで、(V∋ a -a ∈V) は、Vの要素に反元〈opposite element〉(加法的逆元〈additive inverse {element}?〉)を対応させる写像です。0はもちろんゼロ元(加法的単位元〈additive unit {element}?〉*4)です。
ゼロ元0は、ベクトル空間の構成素〈constituent〉に含まれます(あるいは、公理のなかで存在が要請されています*5)。よって、ゼロ元0を持たないベクトル空間というものはありえません。
- Vがベクトル空間ならば、Vにはゼロ元が存在する。
「ゼロ元だけの集合 {0} はベクトル空間なのか?」は、ベクトル空間の公理を満たすかどうかを調べれば分かることです。OKですよね*6。単元集合 {0} は、自明な足し算とスカラー倍により立派なベクトル空間になります。(「立派」は言葉の綾よ。)
ベクトル空間Vの基底〈basis〉とは、部分集合 B⊆V であって、(線形結合〈一次結合〉により)V全体を生成できて、かつ線形独立〈一次独立〉なものです。
ベクトル空間Vの次元〈dimension〉とは、基底Bの基数〈cardinality〉card(B) のことです。ただし、基底は色々あるので、別な基底B'を取ったとき card(B') = card(B) でないと、次元の定義が well-defined(ちゃんと定義されている)になりません。そのへんの議論を線形代数でやるわけです(ここでは割愛)。
dim(V) = card(B) < ∞ のとき、Vは有限次元ベクトル空間〈finite dimensional vector space〉で、この記事では、有限次元ベクトル空間しか考えません。
単元集合 {0} を台集合とするベクトル空間 O(大文字オー)*7の次元はというと; 空集合 ⊆{0} が基底になります。線形結合がひとつもできなくても、ゼロ元は最初からあるので大丈夫なのです。空集合が基底なので、dim(O) = card() = 0 です。
今出てきた「(1)ゼロベクトル 0」「(2)ゼロベクトルだけからなるゼロ空間 O = {0}*8」「(3)ゼロ空間の基底である空集合 」「(4)ゼロ空間の次元である自然数の 0」をちゃんと区別していますか? 書き方/見た目が似ていても(場合により同じ文字・記号で書かれても)違いますからね、注意しましょう。
ユークリッド空間の次元
Rは実数全体の集合です*9。Rを図形とみれば数直線です。RとRの直積である R×R = R2 は平面だと考えます。R が1次元の空間=直線、R2 が2次元の空間=平面です。
一般の Rn (n = 0, 1, 2, 3, ...)は(n次元の)ユークリッド空間〈Euclidean space〉と呼びます。ユークリッド空間 Rn の次元が n であることは、Rn をベクトル空間と考えての次元がn次元であることを意味しています。実際、Rn は、n個の要素を持つ標準的な基底を持ちます。R3の標準的基底なら、それは次の集合です。(R3の要素を縦並びに書いていることに特に意味はありません。そのほうが「ベクトルっぽい」雰囲気だから。)
n = 0 のときは、R0 = {0} です。0個のRを(直積で)掛けたものだから、掛け算(集合の直積演算)の単位である単元集合だと考えればいいわけです。あるいは、次の同型*10に注目するのもいいでしょう。
- Rn Map([n], R)
ここで、[n] = {1, 2, ..., n}, [1] = {1}, [0] = {} = です。n = 0 のケースなら:
- R0 Map([0], R) = Map(, R)
空集合 からの写像〈関数〉はひとつだけあるので、それがゼロベクトルに相当します。
キューブの次元
ユークリッド空間Rnの部分集合で、閉区間の直積で書けるものをここではキューブ〈cube〉と呼びます。さらに、話を簡単にするために、閉区間は単位閉区間 [0, 1] = {x∈R | 0 ≦ x ≦ 1} に限りましょう。単位閉区間がしばしば出てくるので、太字の'J'で書くことにします。
- J := [0, 1]
以上の設定で、キューブとは Jn (n = 0, 1, 2, ...)のことです。'J' の右肩に乗った自然数の値 n が、キューブ Jn の次元です。
- dim(Jn) = n
特に、n = 0 のケース J0 = {0} に関しては:
- dim(J0) = 0
0次元のキューブとは一点だけの図形で、集合としては単元集合〈singleton set〉です。0次元キューブは、1次元キューブである単位区間とも違うし、空集合でもありません。
でも、どうしても空集合であるような気がしてしまう人がいるようです。なぜでしょう? 僕の推測でしかないのですが:
- 「0次元」という言葉に含まれる「0」から「何もないことだ」と連想し、何もないなら空集合に違いないと思いこむ。
と、そんなことかな? -- そうじゃないかも知れませんが、いずれにしても、「空集合である」合理的な根拠はなく、連想・感情・思い込みが働いているのでしょう。
直積と次元に関する次の公式は、たぶん納得できるでしょう。
- Jn × Jm Jn + m
- dim(Jn × Jm) = dim(Jn) + dim(Jm)
「キューブの積の次元は、ふたつのキューブの次元の和」で与えられます。これは、n = 0 でも成立します。
- J0 × Jm J0 + m = Jm
- dim(J0 × Jm) = dim(J0) + dim(Jm) = 0 + m = m
もし、(0次元のキューブ) = J0 = とするならば、
- J0 × Jm = × Jm =
- dim(J0 × Jm) = dim() = 0
- m > 0 ならば、dim(J0 × Jm) ≠ dim(J0) + dim(Jm)
となり、辻褄が合わず嬉しくありません。
さて、ここでひとつ約束を導入します。0次元キューブの唯一の要素を星印〈アスタリスク〉で書くことにします。
- J0 = {*}
もちろん、J0 = {0} でもかまわないのですが、「0」を見ると「実数のゼロ」と条件反射が働いてしまい、“0次元性”を強く印象付けることができません。また一方、「0」から「何もないのだから‥‥」と連想されるのも困ります。印象や雰囲気や連想で正しい判断・理解が邪魔される可能性があるので星印を採用します。
格子点
ユークリッド空間 Rn の点で、座標(タプルの成分)がすべて整数である点を格子点〈lattice point〉と呼びます。(3, -1) は2次元の格子点ですが、(3/2, 5) は(今の定義からは)格子点ではありません。
説明の都合上、格子点概念を少し拡張しておきます。正実数達のタプル ε = (ε1, ..., εn) を決めて、第i座標がεiの整数倍である点をε-格子点〈ε-lattice point〉と呼ぶことにします。(3/2, 5) は、2次元の(1/2, 1)-格子点になります。ここから先では、適当なタプルεに対するε-格子点を考えるので、単に「格子点」と言ってもそれはε-格子点のことだとします(言葉づかいのローカルな約束)。
まず、1次元キューブ=単位閉区間内に格子点を取ることを考えましょう。ε = ε1 = 1/4 とすると、0/4, 1/4, 2/4, 3/4, 4/4 の5個の(1/4)-格子点が取れます。0/4 = 0 と 4/4 = 1 は閉区間の両端、つまり境界の点です。ここでは、境界の点は考えずに、内部にある格子点だけ考えます。すると、1/4, 2/4, 3/4 の3個の格子点になります。
自然数の部分集合 [n] = {1, 2, ..., n} は、1次元キューブ内の内部格子点達へと埋め込むことができます。
- {1, 2} → {1/3, 2/3} ⊆J1
- {1, 2, 3} → {1/4, 2/4, 3/4} ⊆J1
- {1, 2, 3, 4} → {1/5, 2/5, 3/5, 4/5} ⊆J1
単元集合と空集合も同様に埋め込めます。
- {} → {} ⊆J1
- {1} → {1/2} ⊆J1
ここでまた、空集合から任意の集合への写像が唯一あることに注意してください。
1次元の場合が分かれば、n次元キューブJnの内部格子点がどんなものかもわかるでしょう。例えば、J2内に (1/3, 1/4)-格子点で内部のもの(境界上の格子点は除外)は:
- {(1/3, 1/4), (1/3, 2/4), (1/3, 3/4), (2/3, 1/4), (2/3, 2/4), (2/3, 3/4)}
6個の(1/3, 1/4)-格子点からなる集合です。これらの格子点は、自然数のペアの集合 {1, 2}×{1, 2, 3} = {(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3)} と1:1対応します。そればかりではなくて、[k]×[ℓ] = {1, ..., k}×{1, ..., ℓ} の形の集合をJ2の内部格子点達へと埋め込めます。例えば:
- {1}×{1, 2} → {(1/2, 1/3), (1/2, 2/3)} ⊆J2
- {1, 2}×{1, 2} → {(1/3, 1/3), (1/3, 2/3), (2/3, 1/3), (2/3, 2/3)} ⊆J2
実を言えば、単位閉区間に制限しなければ、分数を使う必要もなかったのですが、まーいいでしょう。[k1]× ... ×[kn] = {1, ..., k1}× ... ×{1, ..., kn} の形の集合をJnの内部格子点達へと埋め込める(単射写像が作れる)ことも類推できるでしょう。
0次元キューブ内の内部格子点
0次元キューブ J0 = {*} の唯一の点*は格子点でしょうか? *は格子点です。天下りに「格子点だと思え」でもいいのですが、空集合や単元集合が現れた場合の(ちょっとわかりにくい)推論があるので、紹介しておきます。この節の議論がわかりにくい、あるいは受け入れがたい方は、天下りを受け入れてください。
最初に次の約束〈定義〉を出しました。
- 座標(タプルの成分)がすべて整数である点を格子点と呼ぶ。
この最初の定義に照らし合わせて、*が格子点かどうかを見てみましょう。格子点の定義を論理式で書けば:
- x∈Rn が格子点 :⇔ ∀i∈{1, ..., n}.(xi∈Z)
n = 0 の場合の定義は次のようになります。
- x∈R0 が格子点 :⇔ ∀i∈{}.(xi∈Z)
定義の右辺 ∀i∈{}.(xi∈Z) は次のように書いても同じです。
- ∀i.(i∈{} ⇒ xi∈Z)
i∈{} は問答無用に偽なので、
- ∀i.(False ⇒ xi∈Z)
古典論理における含意〈ならば〉の扱いは、前件(⇒の左側)が偽ならば真になるので、
- ∀i.(True)
となり、定義の右辺は真です。
- x∈R0 が格子点 :⇔ True
R0に含まれる点はいかなる点も(実際は一個しかないが)格子点です。格子点の定義をε-格子点にしたところで、やはりいかなる点もε-格子点です。
J0 = R0 であり、唯一の点が*だったので、*(0と呼んでもいいが)は格子点です。
([追記]以下の「内部の点かどうか」の議論は、位相が絡んでいるので無視してもいいです。たいして重要なことでもないし。[/追記])
さて、格子点である*は、(境界ではなくて)内部の格子点でしょうか? *は位相的に考えて内点(内部の点)なので内部の格子点です。* = 0 を内部の点と思えないのは、無意識に * = 0 をRに埋め込んで考えているからでしょう。それを言うなら、RをR2に埋め込んだときも、部分集合としてのRは内部の点を持ちません。J0 = R0 をどこにも埋め込まずにそれ自体として考えれば、唯一の点 * = 0 は内部の点なのです。
以上から、0次元のキューブ J0 は唯一つの内部格子点を持つことが分かりました。
離散キューブ
僕がこんな話をしているのは、離散キューブという概念を導入するためです。今詳しく説明する気はないですが、ユークリッド空間 Rn の領域上で起こる現象を、離散有限な格子点上の計算で近似しよう、といった意図があります。ユークリッド空間 Rn の領域が連続キューブ(区間の直積)の形をしているなら、適当なサイズの碁盤目に刻んで近似すりゃいいじゃん、という発想です。
離散キューブ〈discrete cube〉は、自然数のリスト (k1, ..., kn) に対して、
- {1, ..., k1}× ... ×{1, ..., kn}
という形をした有限集合です。ただそれだけのことです。
実数の区間の直積である連続的キューブと離散キューブは別な概念です。離散キューブを連続的なキューブに埋め込めますが、埋め込みを要求しているわけでもありません。違う概念ではあっても、離散キューブを単にキューブと言ってしまうこともあるでしょう -- 言葉の使用は杜撰〈ずさん〉なものです。
[/補足][/追記]
nが2以上なら、特に難しいことはないのですが、n = 1 または n = 0 のとき、それと、自然数のリスト (k1, ..., kn) に0が入るときに混乱をきたします。かといって、これら特別な場合を無視できないし、そもそも特別な場合をモヤモヤ曖昧にしておく態度が好ましくないですね。
まず、自然数のリスト (k1, ..., kn) に0が入る場合、例えば (2, 0, 3) を考えると、対応する離散キューブは、
- {1, 2}×{}×{1, 2, 3} = {}
つまり、「リストに1個でも0が入っていればキューブは空集合」になります。このことを了解していれば、自然数のリストに0を入れても悪くはないですが、実用的な意味がないので、便宜的な取り決めとして「自然数のリストに0は入れないことにしよう」と約束しましょう。
長さ1の自然数のリスト (k) は単一の自然数と同じことですが、対応する離散キューブは次のようになります。
- リスト (3) に対応する離散キューブは {1, 2, 3}
- リスト (2) に対応する離散キューブは {1, 2}
- リスト (1) に対応する離散キューブは {1}
- リスト (0) に対応する離散キューブは {} これは考えないことにしようと約束した
ここらで、「単なる自然数の集合を「キューブ」と呼ぶのは変な感じだ」とか思う人がいるかも知れません。「感じ」なんてどうでもいいのです。そう定義したのだから「(離散的1次元の)キューブ」です。
長さ0の自然数のリスト () に対応する離散キューブは、0次元キューブ J0 の格子点の集合です。J0 の格子点は唯一つあり、それは * ですから:
- リスト () に対応する離散キューブは {*}
空集合の次元
空集合 の次元 dim() はどう考えたらいいでしょうか? 幾つかの案があります。
1. 空集合の次元は考えないことにする。
2. 空集合の次元は -1 とする。
3. 空集合の次元は -∞ とする。
4. 空集合の次元は不定として、各次元ごとに空集合があるとする。
考えないことにするのは消極的な対応ですが、考える必要性がないなら、それでもいいでしょう。
空集合の次元は -1
dim() = -1 は、一点の次元が 0 なんだから、それよりひとつ小さい -1 がいいだろう、という発想です。ベクトル空間の場合、ゼロ空間でも空ではありませんが、アフィン空間なら空空間〈くう・くうかん〉が出現します。
アフィン空間とは、ベクトル空間によく似てますが、原点〈ゼロベクトル〉という概念がないような空間(公理的に定義される構造)です。原点を要求しないので、空集合であってもアフィン空間だとみなせます。
Aがアフィン空間のとき、Rn+1 への埋め込み i:A → Rn+1 を使って、アフィン空間Aの点の座標を (x1, ..., xn, 1) の形にすると便利に扱えます。以下の「n次元アフィン空間の表現」とは、この埋め込みのことです。
[/補足][/追記]
n次元アフィン空間の表現の方法としして次があります。
- n次元アフィン空間は、Rn+1の部分集合 {x∈Rn | xn+1 = 1} により表現できる。
n = 0 とすれば:
- 0次元アフィン空間は、R1の部分集合 {x∈R1 | x1 = 1} により表現できる。
つまり、0次元アフィン空間は {1} で表現できます。
n = -1 とすれば:
- (-1)次元アフィン空間は、R0の部分集合 {x∈R0 | x0 = 1} により表現できる。
R0 = {0} であり、x0 は {0} → R, {0}∋0 0∈R と埋め込む写像とみなせるので、部分集合は空となり、(-1)次元アフィン空間は空空間=空集合で辻褄が合います。
空集合の次元は -∞
次元に関する次の公式がありました。
- dim(Jn×Jm) = dim(Jn) + dim(Jm)
この公式を、空集合が入っても成立させたいなら、次の等式を考えることになります。
- dim(×Jm) = dim() = dim() + dim(Jm)
dim() = e として方程式と考えると:
- e = e + m (任意の自然数 m に対して)
このような整数 e はないので、無理矢理に e = -∞ とします。そして、-∞ に関しては、
- -∞ = -∞ + m (任意の自然数 m に対して)
が成立するとすれば辻褄が合います。
dim() = ∞ で、∞ = ∞ + m としてもかまいません。-∞ としたのは、集合としてのサイズの大小と次元の大小を合わせただけで、強い必然性はありません。
空集合の次元は不定
離散キューブの話で、自然数のリスト k = (k1, ..., kn) に対応するキューブを cube(k) とすると、次の公式が成立します
- dim(cube(k)) = length(k)
特に、
- dim(cube(())) = length(()) = 0
です。
この公式は、自然数のリストに0が入ってないことを仮定しています。もし、リストに0も許すと次のようなことになります。
- dim(cube((0))) = lenght((0)) = 1
- dim(cube((5, 0, 3))) = lenght((5, 0, 3)) = 3
- dim(cube((0, 7, 2, 3, 0))) = lenght((0, 7, 2, 3, 0)) = 5
であるならば、各次元ごとに空集合があるとすればいいでしょう。k次元の空集合を k とすれば:
- dim(cube((0))) = dim(1) = lenght((0)) = 1
- dim(cube((5, 0, 3))) = dim(3) = lenght((5, 0, 3)) = 3
- dim(cube((0, 7, 2, 3, 0))) = dim(5) = lenght((0, 7, 2, 3, 0)) = 5
これはこれで辻褄が合います。
「空集合の次元はいくつか?」という問に、真実の解答が唯一つあるわけではなくて、状況と目的に応じて、矛盾は起きないように注意しながら、都合がいいように決めればいいだけです。
*1:このテの次元をハメル次元と呼ぶようです。
*2:ベクトル空間とその台集合をどちらも'V'で表す悪習を使います。
*3:スカラー体はRとしているので、スカラー倍は実数倍のことです。
*4:「ゼロ元」は、可換群や可換モノイドにおける役割の名前です。単位元と同義ですが、可換の前提のもとで使う言葉です。さらに、ベクトル空間の文脈におけるゼロ元がゼロベクトルです。
*5:∃z∈V.∀a∈V. a + z = z + a = a
*6:0 + 0 = 0, スカラーrに対して r0 = 0 と定義します。
*7:文字'O'を導入したのは、{0}は単なる集合でベクトル空間ではないからです。ベクトル空間Oは、台集合{0}の上に、足し算とスカラー倍を載せた“構造”です。ただし、しばしばベクトル空間とその台集合は意図的に混同・同一視されます。
*8:ほんとは O = {0} ではありません。Oはベクトル空間の構造を持ち、{0}は単なる集合ですから。でも、この(不正確な)書き方が普通です。
*9:必要に応じて、足し算や掛け算などの演算や大小順序なども考えます。
*10:集合AとBが同型〈isomorphic〉だとは、それらの集合のあいだに1:1対応〈全単射写像〉があることです。実際の全単射写像を自分で確認しましょう。自明に思えるかも知れませんが。