情エレの情エレによる情エレのための位相空間のお気持ち的なやつ

こんにちは，biva です．
今回は，情エレ情報理工学コース３年春ターム名物講義の「情報代数とオートマトン」の１つの難所と思われる位相空間論について，情報理工出身で現在も位相空間と多少の付き合いがある立場からお気持ちてきなものを書いてみます．
なお，筆者は数学の専門ではないので記述が微妙なところもあるかもしれませんがご了承ください．
また，よりわかりやすいお気持ちや内容に関しては，数学科の先生方や幾何，解析系の数学科の友人に聞いたり，参考文献を見ていただけるとよいと思います．

# 空間とは何か
まず，前置きとして，数学における空間というものについて述べておきます．

数学には「空間」という用語について（筆者が知る限り）ちゃんとした定義があるものではありませんが，一般には「何かしらの構造」をもつ「集合」というような意味でつかわれることが多い感じがします．
多くの場合，ただの要素の集まりとしての集合はあまり面白いものがありませんが，そこに「何かしらの構造」が入ることで，数学的に面白い議論ができるのです．
情報理工３年の方が知っているだろうと思われる空間の例としては，ユークリッド空間やベクトル空間が代表的な例でしょう．
例えばユークリッド空間は，集合 $ \mathbb{R}^n $ にユークリッド内積
```math
x \cdot y := \sum_{i=1}^n x_i y_i \\
x=(x_1,\ldots,x_n), y=(y_2,\ldots,y_n) \in \mathbb{R}^n
```
が定義されたものですが，この場合はユークリッド内積という演算が構造というわけです．
また，ベクトル空間も，集合にベクトル和とスカラー倍という演算規則が定義されたものでした．

同様に，位相空間も集合に「位相」という構造が入った空間のことです．
そして，今回の話題になっている「位相」という構造は（後で詳しく述べますが）開集合や閉集合と呼ばれる部分集合の集まりとして定義されるものということです（部分集合に対して「開集合」や「閉集合」とラベル付けするルールといったほうが正確かもしれません）．

# 微分積分と開集合，閉集合
位相が「部分集合に対して『開集合』や『閉集合』とラベル付けするルール」と述べたところで，開集合や閉集合について述べておきたいと思います．
突然ですが，$\mathbb{R}$ （の部分集合）上で定義された関数 $f : \mathbb{R} \rightarrow \mathbb{R}$ を考えます．
一般に，このような関数の微分を使う問題を考える際には，$\mathbb{R}$ か開区間　$(a,b) := \\{ x \in \mathbb{R}\\,  | \\, a < x < b \\}$ の上で考えていたと思います．
また，最大・最小値を求めよといった問題では閉区間 $[a,b] := \\{ x \in \mathbb{R}\\,  | \\, a \leq x \leq b \\}$ の上で考えていたと思います．
前者については __端がないこと（開いている）__ ，後者については __端があること（閉じている）__ ことが本質的でした．
同じことを多次元で考えてみます．
つまり，$\mathbb{R}^n$ （の部分集合）上で定義された関数 $f : \mathbb{R}^n \rightarrow \mathbb{R}$ の（偏）微分や最大・最小値を求めるといった問題も，１次元の時と同様に，前者については __開いた集合__，後者については __閉じた集合__ で考える必要があります．

# ユークリッド空間の開集合と閉集合
多次元の空間である $\mathbb{R}^n$ の部分集合において，開いた（端がある）とか閉じた（端がない）とかはどのように定義すればいいでしょうか．
とりあえず思いつくのはいくつかの開（閉）区間の直積
```math 
\begin{aligned}
(a_1, b_1) \times \cdots \times (a_n, b_n) &= \{ x = (x_1,\ldots,x_n) \in \mathbb{R}^n \ | \, a_i < x_i < b_i\}, \\
[a_1, b_1] \times \cdots \times [a_n, b_n] &= \{ x = (x_1,\ldots,x_n) \in \mathbb{R}^n \ | \, a_i \leq x_i \leq b_i\}
\end{aligned}
```
などでしょう．しかし，これらの集合は $\mathbb{R}^n$ においては直方体のようなもの（$n=2,3$ で具体的に書いてみるとわかりやすいです）で，つまり，かなり限られた集合です．
そのような限られた集合でしか微分や最大値問題を考えることができないというのは不便ですし，一般性がありません．
そこで，$\mathbb{R}$ の開区間や閉区間の性質を見直すことにして，その性質をもって開いているや閉じているを定義することにします．
なお，本記事では長さの関係上，開いているのみを説明したいと思います．

## 開集合
開区間について考えます．
開区間 $(a,b)$ において，$a(b)$ にどんなに近い点 $p$ をもってきても，$p$ と $a(b)$ の間に点が存在します．
例えば，$(0,1)$ において，$1$ に限りなく近い点 $0.99 \in (0,1)$ をとってきても，$0.999$ と $1$ の間にはまだ $0.9991$ や $0.9999$ などの点があります．より一般的に，$x - 0.99 < 0.01 (= |0.99 - 1|)$ をみたす任意の点 $x \in mathbb{R}$ はすべて $0.99$ と $1$ の間にあります.つまり，このような $x$ について $ x \in (0,1)$ です．
このとき，当然ですが $0.99 - y < 0.01 (\Longleftrightarrow -0.01 < y - 0.99 )$ を満たす任意の点 $y \in \mathbb{R}$ についても $y \in (0,1)$ となります．
なお，このような $y$ は，$0.99$ から $0.01$ 以内の距離にある，$0.99$ より左側の点です．
以上のことを集合的に書けば，
```math 
\{x \in \mathbb{R} \ | -0.01 < x - 0.99 < 0.01\} \subset (0,1)
```
となります．この包含関係の左辺を $\\{ x \in \mathbb{R} \ | |x-0.99| < 0.01 \\}$ と書き直すと
```math 
\{ x \in \mathbb{R} \ | |x-0.99| < 0.01 \} \subset (0,1)
```
となります．
$1/2$ などの $0$ や $1$ に近くない，真ん中のほうにある点や，あるいは一般の開区間 $(a,b)$ の任意の点についても全く同様の議論ができます．
ここで重要なのは， __開区間の任意の点 $p$ をとったときに，$(0,1)$ の例における $0.01$ といった，近さの上限のような数 $\varepsilon$ が１つでも存在して，$p$ から距離 $\varepsilon$ 以内にある点（$\\{ x \in \mathbb{R} \ | |x-0.99| < 0.01 \\}$）はすべて 開区間の中に入っている（$\\{ x \in \mathbb{R} \ | |x-0.99| < 0.01 \\} \subset (0,1)$）__ ということです．  

$\mathbb{R}$ における開区間のこの性質を利用して，集合の「開いている」という概念を定義することにします．
まず，$(0,1)$ の例における $\\{ x \in \mathbb{R} \ | |x-0.99| < 0.01 \\}$ の形をした集合を $\mathbb{R}^n$ において定義します．

__定義__　$x=(x_1,\ldots,x_n), y = (y_1,\ldots,y_n) \in \mathbb{R}^n$ において，
```math 
d^{(n)}(x,y) := \sqrt{\sum_{i=1}^n (x_i-y_i)^2}
```
で定義される関数 $d : \mathbb{R}^n \times \mathbb{R}^n \rightarrow \mathbb{R}$ を $\mathbb{R}^{n}$ の __ユークリッド距離__ という．

これ以降，本記事では $\mathbb{R}^n$ とユークリッド距離 $d^{(n)}$ の距離の組 $(\mathbb{R}^n, d^{(n)})$ のことを __ユークリッド距離空間__ ということにします．
$d^{(n)}$ を用いて $\\{ x \in \mathbb{R} \ | |x-0.99| < 0.01 \\}$ のような形をした集合を定義します．

__定義__　ユークリッド空間 $(\mathbb{R}^n, d^{(n)})$ の点 $p = (p_1,\ldots,p_n) \in \mathbb{R}^n$ と $\varepsilon > 0$ を一つ固定する．このとき，
```math 
B^{(n)}(p : \varepsilon) := \{ x \in \mathbb{R}^{n} \ | d^{(n)}(x,p) < \varepsilon\}
```
を $\mathbb{R}^{(n)}$ における点 $p$ の __$\varepsilon$-近傍__ ，あるいは __点 $p$ を中心とする半径 $\varepsilon$ の開球体__ という．

$\varepsilon$-近傍を用いて $\mathbb{R}^n$ における「開いている」集合を定義します．

__定義__　ユークリッド距離空間 $(\mathbb{R}^n, d^{(n)})$ の部分集合 $N \subset \mathbb{R}^n$ について，$N$ の任意の点 $p \in N$ に対してある実数 $\varepsilon_p > 0$ が存在して，
```math 
B^{(n)}(p : \varepsilon_p) \subset N
```
となるとき，$N$ は ユークリッド距離空間 $(\mathbb{R}^n, d^{(n)})$ の __開集合__ であるという．また，$(\mathbb{R}^n, d^{(n)})$ の開集合全体の集合を$(\mathbb{R}^n, d^{(n)})$の __開集合系__ という

__注意__　空集合 $\emptyset$ も開集合であると約束する [^1] ．

[^1]: 空集合が開集合になるということは，集合の内部を定義して，内部が自身に一致する集合を開集合と定義するやり方だとすぐ納得ができるのですが，ここでは内部などは定義せずに説明したいと思います．

この定義の開集合の例を紹介します．
（例１）$n=1$ のとき，$d^{(1)}(x,y) = |x-y|$ で，$p \in \mathbb{R}$ の $\varepsilon$-近傍 $B^{(n)}(p : \varepsilon)$ は
```math 
B^{(n)}(p:\varepsilon) = \{ x \in \mathbb{R} \ | |x-p| < \varepsilon \} 
```
となる．
したがって，先ほどの議論を踏まえると，$\mathbb{R}$ の任意の開区間は $\mathbb{R}$ の開集合になる．

（例２）任意の $n$ と $\varepsilon > 0$ について，ユークリッド空間 $(\mathbb{R}^n, d^{(n)})$ の任意の点 $p$ を中心とする半径 $r$ の球面 $B^{(n)}(p : r)$ は開集合である．

（例２）の証明はそこらへんの位相空間論の教科書に載っていると思うので，気になる方は調べてみてください．

ここでやったことをまとめると，$\mathbb{R}$ での開区間の性質を調べ，その性質を以て$\mathbb{R}^n$ における開集合を定義しました．
実は，この手続きこそが（開集合系による）位相の定義の仕方そのものなのです．

# 開集合系の性質
$n$ 次元ユークリッド距離空間の開集合は $1$ 次元ユークリッド距離空間 $(\mathbb{R},d^{(n)})$ の開区間の性質を見直すことによって定義しました．
同じ論法で一般の集合で開集合を定義するために，ユークリッド距離空間における開集合の性質を見直すことにします．
ユークリッド距離空間 $(\mathbb{R}^n, d^{(n)})$ において，以下が成り立ちます．

__定理 1__　ユークリッド距離空間 $(\mathbb{R}^n, d^{(n)})$において，
（１） $\emptyset, \mathbb{R}^n$ は開集合である．
（２） $m$ 個の開集合 $N_1, \ldots,N_m$ の共通部分 $N_1 \cap \cdots \cap N_m$ もまた開集合である．
（３） 開集合の族 $\\{ N_\lambda\\}_{\lambda \in \Lambda}$（$N\_\lambda$ は開集合）について，その和集合 $\bigcup\_{\lambda \in \Lambda} N\_\lambda$ もまた開集合である．

この定理の証明は簡単なので１つずつやっていきます．

（１）$\emptyset$ が開集合であることは先述した約束の通りです．
$\mathbb{R}^n$ が開集合になることは，任意の点 $p \in \mathbb{R}^n$ を中心とする半径 $1$ の開球体 $B^{(n)}(p : 1)$ が $\mathbb{R}^n$ の部分集合であることから従います．
（２） $N'=N_1 \cap \cdots \cap N_m $ と置き， $N'$ の任意の点 $p \in N'$ を１つとります．$p$ は各 $k=1,\ldots,n$ について，開集合 $N_k$ の点なので，各 $N_k$ において $B^{(n)}(p : \varepsilon_{p,k}) \subset N_k$ なる $\varepsilon_{p,k} > 0$ が存在します．このような $\varepsilon_{p,1},\ldots,\varepsilon{p,n}$ の中で最小なものを新たに $\varepsilon_{p}$ とおけば，この $\varepsilon_{p}$ について $B^{(n)}(p:\varepsilon_{p}) \subset N'$ が成り立つので，$N'$ は開集合ということになります．
（３）$N'' = \bigcup\_{\lambda \in \Lambda} N\_\lambda$ と置き，$N''$ の任意の点 $p \in N''$ を１つとります．$p$ は和集合 $\bigcup\_{\lambda \in \Lambda} N\_\lambda$ の点なので， $ p \in N_{\lambda'}$ となるような $\lambda' \in \Lambda$ が少なくとも１つ存在します．すると，$N_{\lambda'}$ は開集合なので $B^{(n)}(p:\varepsilon_{p}) \subset N_{\lambda'}$ となる $\varepsilon_p$ が存在します．このとき，$B^{(n)}(p:\varepsilon_{p}) \subset N_{\lambda'} \subset N''$ となるので，したがって $N''$ は開集合となります．（完）

__注意__ （２）は必ず __有限個__ の開集合の共通部分です．その理由については，例えば $\mathbb{R}$ において $\bigcap\_{n=1}^\infty B^{(1)}(0:1/n)$ などを考えればわかると思います．なお，（３）については非可算無限でも大丈夫です．

この性質を以て，一般の集合の部分集合に対して「開集合」を定義します

# 位相空間の定義
位相のアイデアは，ユークリッド距離などの距離が入らない，さらにいえば実数や複素数などの部分集合にもなっていないような一般の集合（例えば「日本に住んでいる生き物全体」といった集合などでも）に対しても，定理１の性質をもつような集合（のあつまり）を「開集合」ということにして，それによって要素同士の「近さ」みたいなものを考えるようにするというものです．
具体的には次のようになります．

__定義__　$X$ を集合とする．$X$ の部分集合の族 $\mathcal{O}$ が 以下の３条件を満たすとき，$\mathcal{O}$ を $X$ の __開集合系__ ，あるいは __位相__ といい，組 $(X,\mathcal{O})$ を __位相空間__ という．また，$\mathcal{O}$ に属する集合のことを 位相空間 $(X,\mathcal{O})$ の __開集合__ という．
（１） $\emptyset, \mathbb{R}^n \in \mathcal{O}$．
（２） $N_1, \ldots,N_m \in \mathcal{O}$ のであるとき， $N_1 \cap \cdots \cap N_m \in \mathcal{O}$ である．
（３） 集合族 $\\{ N_\lambda\\}_{\lambda \in \Lambda} \ (N\_\lambda \in \mathcal{O})$ について，$\bigcup\_{\lambda \in \Lambda} N\_\lambda \in \mathcal{O} $ である．

この定義が意味するところは，__「一般の集合（ユークリッド距離空間に限らない） $X$ について，$X$ の部分集合を（何らかのルールによって）集めた集合 $\mathcal{O}$ が（１）（２）（３）を満たすときに，$\mathcal{O}$ に属する集合を開集合と呼ぶことにしましょう」__ ということです．開集合系 $\mathcal{O}$ を決めるというのが，開集合をラベル付けするということです．

論法としては，$\mathbb{R}$ の開区間の性質から $\mathbb{R}^n$ の開集合の定義をするという流れと同じですが，一方で，開集合と開集合系の関係については $(\mathbb{R}^n, d^{(n)})$ の場合とは全く逆であることに注意しましょう．つまり，$(\mathbb{R}^n, d^{(n)})$ ではまず開集合というものがあって，そんな開集合全体の集合を開集合系と定義しましたが，位相空間の場合は 開集合系という，集合を要素に持つ集合があって，それに属する集合のことを開集合とよぶことにしたのです．

# 位相についてのよくあるあれこれ
位相の定義を与えたところで，よくある（と思われる）疑問についていくつか答えていきたいと思います．

__Q1. 集合 $X$ の部分集合全体の集合（べき集合）$2^X$ は $X$ の開集合系？__
はい，$X$ の１つの開集合系です．なお，$2^X$ を $X$ の __離散位相__ といいます．また，離散位相以外の自明な例としては，__密着位相__ $\\{ \emptyset, X\\}$ があります

__Q2. 位相の定義によれば，$(\mathbb{R}^n, d^{(n)})$ の（ユークリッド距離空間の意味での）開集合系も位相？__ 
はい，そうです．（ユークリッド距離空間の意味での）開集合系による位相を（ユークリッド距離による）距離位相であったりとか，あるいは，もっと特別に標準的な位相といったりします．特に断りがなければ，$\mathbb{R}^n$ の位相は（ユークリッド距離空間の意味での）開集合系による位相を考えている本が多いです．もちろん，宣言をして別の位相を考える議論もあります．

__Q3. $\mathbb{R}^n$ には離散位相とか密着位相とか標準位相とか，たくさんの位相があるけどこれは一体？__
そのままです．一般に，集合 $X$ の位相は複数あります（例えば，３点集合 $\\{$ りんご，ごりら，らっぱ$\\}$ の位相は全部で２９種類あるらしい）．特に，離散位相と密着位相については任意の集合において存在します．
しかし，位相空間 $X$ などというときにはいくつかある位相の内の１つ $\mathcal{O}$ を固定して，組 $(X,\mathcal{O})$ として考えます．

__Q3. どの集合も開集合として扱える離散位相が一番便利なのでは？__
これについてはちゃんとした答えが出せないのでアレですが，個人的には，離散位相は「散らかっている」「細かすぎる」「集合としてでかすぎるから扱いにくい」から，適度に制限した部分集合族を開集合系にするのかなと思っています．

__Q4. $\mathbb{R}$ の位相は上に挙げた３つの位相だけ？__
いいえ．ほかの位相としては，例えばユークリッド距離でない距離関数を用いて，それによって開集合系を定めることもできます（一般に，距離関数から定まる開集合系を __距離位相__ といいます．距離関数の定義などについては，そこらへんの位相空間の本を読んでください）．
また，ちゃんと定義を述べるには準備が必要なので詳しくは省略しますが，__上限位相__ という位相もあります．上限位相においては，標準位相では開集合でない半開区間 $(a,b]$ が開集合であったりします．

__Q5. （かつての筆者に対して）大抵の場合距離位相だし距離位相だけでよくない？__
代数幾何でつかわれるザリスキ位相はハウスドルフ性をもたないらしいので，つまりそういうことです．

__Q6. 結局，こんな抽象的なものを定義する理由は？__
最大のメリットは，距離関数などという特別な条件を付け加えることなく，連続や収束，あるいは諸々の距離空間ぽい性質を使えることだと思います．

# 情報理工における位相が使われる事例
位相の定義を知ったところで，「じゃあこれは何に役立つの」という疑問がわいてくると思います．これついて，（情報理工にとって）身近だと思われる例をいくつか紹介します．

__多変数関数の微分積分，複素関数__
これは教養微積の多変数の微分や，応用数学３の複素関数の講義で扱われたと思いますが，多変数の微分の議論は開集合の上で行われます．

__実数の構成__
実は，$\mathbb{R}$ を定義，構成する方法の１つとして，有理数全体の集合 $\mathbb Q$ に対して __完備化__ という位相的な操作を施すものがあります．これは，十分大きい $n$ であまり変化しなくなる有理数列 $\\{ a_n \\}$ を「収束」するようにするというものですが，実は「収束」という概念が位相によって定義されるのです．詳しくは [内田] などを読んでください．

__数値の表現と計算__
夏タームに開講される「数値の表現と計算」ですが，そこで扱われる「非線形方程式の解法」である反復法は，__不動点定理__ に基づいています．
この不動点定理は，先ほど述べた完備化が本質的な仮定となっている定理です．

__情報幾何__
４年春タームに開講される「情報幾何」は，確率分布からなる集合を __多様体__ とみなして，その微分幾何学的構造（ベクトル解析的なもの）を考察する理論です．この多様体というのが，簡単に言えば「座標を取れて，微分積分ができる，座標がが最初からあるとは限らない位相空間」のことです．多様体の定義については「多様体」ついている本を見ればわかると思います．

以下は，詳しいところはわからないですが，筆者が聞いたことがある事例です．

__フーリエ解析__
夏タームに開講される「メディア処理工学」などで出てくるフーリエ変換ですが，これは数学的には，「関数をある基準で良く近似する」というもので，ここでいう「基準」が __ノルム位相__ と呼ばれる位相です（計算機の上での離散フーリエ解析で扱うのは $l^2$-ノルムなど）．くわしいことは，__関数解析__ とよばれる分野の本にあると思います．

__制御理論__
これはもはや情報理工でもないし，筆者も詳しくは知りませんが，２年後期にあった「線形システム論」を発展させて非線形システムを考えるには，多様体が必要らしいです．

__パーシステントホモロジー__
これは学部ではあまり馴染みがないかもしれませんが，たんぱく質や材料工学のデータ解析でつかわれている，パーシステントホモロジーは，ホモロジー群と呼ばれる，位相幾何学的に重要な量です．位相幾何学とは位相空間やそこで定義される量について様々な道具を用いて調べる理論のことで，トポロジー（topology）は「位相」や「位相幾何学」を意味する英語です．

ほかにもいろいろあるかもしれませんが，すぐに思いつくのはこんな感じです．

# おわりに
今回は位相のお気持ちについて紹介しました．
本当は閉集合やコンパクト集合，連続写像などについても触れたかったのですが，位相の定義までで想定より長くなってしまいました．
ここでは触れられなかったことなどについては，是非，ご自分で教科書を読んで，具体例や演習問題に実際に触れながらなどしていただけたらと思います．
位相空間論は線形代数と微分積分に並ぶ現代数学の基礎であり，しかも，「情報代数とオートマトン」の授業目標である「 __数学的な証明の作法を習得する__」に最も適した分野だと思います [^2]．つまり，位相空間論をしっかりと勉強しておけば，知識的な意味だけでなく，「数学書の読み方」という意味でも，色々な数学書を読めるようになると思います．

この記事を通して，位相空間論の勉強に興味を持つ情報理工 er が増えれば幸いです．

[^2]:数学科の位相空間論の授業シラバスでも，「数学的証明の作法を知る」みたいに書かれていることが多いです．

# 参考文献
[内田]　内田伏一，集合と位相
https://www.amazon.co.jp/%E9%9B%86%E5%90%88%E3%81%A8%E4%BD%8D%E7%9B%B8-%E5%A2%97%E8%A3%9C%E6%96%B0%E8%A3%85%E7%89%88-%E6%95%B0%E5%AD%A6%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E5%86%85%E7%94%B0-%E4%BC%8F%E4%B8%80/dp/4785314125/ref=sr_1_2?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=1V6FGLB67VU3M&keywords=%E9%9B%86%E5%90%88%E3%81%A8%E4%BD%8D%E7%9B%B8&qid=1650534865&sprefix=%E9%9B%86%E5%90%88%E3%81%A8%E4%BD%8D%E7%9B%B8%2Caps%2C176&sr=8-2