Mathematical Thinking - 集合と命題、公理
- Mathematical Thinking - 集合と命題、公理
- フィボナッチ数列と黄金比 — 自然、音楽、そしてゲームサウンドトラックに隠された数学
この記事の目的 大学院の論文を読むためには、数学的な数式と証明を理解することが不可欠である。この記事はその出発点として、集合、命題、公理の核心概念を整理する。
Understanding, not just doing.
はじめに - 数学における真偽判断
数学においてテーマの真偽を判断する主要な手段は「証明」である。
数学的な主張は常に真と偽のみを扱う。つまり、ある主張に対してYesかNoを判断するということであり、これは特定の集合に属するかどうかで判断することと同じである。
I. 論理結合子(Logical Connectives)
数学的命題を構成し組み合わせるために使われる基本的な結合子である。
1. and(かつ、論理積)
\[p \land q\]二つの命題 $p$ と $q$ が両方とも真のときのみ真である。
| $p$ | $q$ | $p \land q$ |
|---|---|---|
| T | T | T |
| T | F | F |
| F | T | F |
| F | F | F |
2. or(または、論理和)
\[p \lor q\]二つの命題のうち少なくとも一つが真であれば真である。(数学における or は inclusive or である)
| $p$ | $q$ | $p \lor q$ |
|---|---|---|
| T | T | T |
| T | F | T |
| F | T | T |
| F | F | F |
3. not(否定)
\[\neg p\]命題 $p$ の真理値を反転させる。真なら偽、偽なら真。
4. implies(含意)
\[p \Rightarrow q\]「$p$ ならば $q$ である。」$p$ が真で $q$ が偽の場合のみ偽である。
| $p$ | $q$ | $p \Rightarrow q$ |
|---|---|---|
| T | T | T |
| T | F | F |
| F | T | T |
| F | F | T |
$p$ が偽のとき $p \Rightarrow q$ が常に真である理由:「偽の前提からは何でも導出できる」(空真、vacuous truth)
5. for all(すべての、全称限量子)
\[\forall x \in S, \; P(x)\]集合 $S$ のすべての元素 $x$ に対して命題 $P(x)$ が真である。
6. there exists(存在する、存在限量子)
\[\exists x \in S, \; P(x)\]集合 $S$ に命題 $P(x)$ を満たす元素 $x$ が少なくとも一つ存在する。
II. 集合(Set)
用語整理
- Set = Collection(集合)=? Family(集合族)
元素と集合の関係
例) 犬は猫ではない。
\[\iff \text{犬は猫の集まりに属さない。}\] \[\iff \text{犬} \notin \{\text{猫1}, \text{猫2}, \text{猫3}, \cdots\}\]ここで $\notin$ は「属していない」という表現であり、$\in$ の否定である。
これを抽象化すると:
- 犬 $\Leftrightarrow x$
- 猫の集まり $\Leftrightarrow S$
- $x$ は元素(element)、$S$ は集合(Set)と呼ぶ。
- 元素とは? ある集合に属するもの。
集合とは何か?
ある基準を満たす元素を集めたもの
と教科書で習った。しかし本当にそうだろうか?
ラッセルのパラドックス(Russell’s Paradox)
床屋曰く:「自分でヒゲを剃らない人にだけヒゲを剃ってあげる。」
- 基準設定 → 集合 $S$ = {床屋がヒゲを剃ってあげる人々の集まり}
- すると、床屋 $x$ は $S$ の元素であると同時に $S$ の元素であってはならない。矛盾!
これを床屋のパラドックスと呼ぶ。
問題点: 集合を単に「元素を集めたもの」と考えたため、集合を規定する過程で何かが足りない。この「何か」を我々は公理(axiom)と呼ぶ。
III. 数体系と集合の大きさ
数体系の包含関係
\[\mathbb{N} \subset \mathbb{Z} \subset \mathbb{Q} \subset \mathbb{R}\]| 記号 | 名前 | 例 |
|---|---|---|
| $\mathbb{N}$ | 自然数 | $1, 2, 3, 4, \cdots$ |
| $\mathbb{Z}$ | 整数 | $\cdots, -2, -1, 0, 1, 2, \cdots$ |
| $\mathbb{Q}$ | 有理数 | $\frac{2}{3}, -\frac{5}{7}, \cdots$ |
| $\mathbb{R}$ | 実数 | $\sqrt{2}, \pi, 3.14\cdots$ |
直感を覆す質問
- 整数の集合は自然数の集合より大きいか?
- 有理数の集合は整数の集合より大きいか?
これらの質問の答えはすべて偽である!
1) 自然数 ↔ 整数:一対一対応
自然数の集合を偶数の集まりと奇数の集まりに分けよう。
偶数の場合:
\[0\;(=2 \times 0) \to 0, \quad 2\;(=2 \times 1) \to 1, \quad 4\;(=2 \times 2) \to 2\]一般的に:
\[2n \to n\]奇数の場合:
\[1\;(=2 \times 0 + 1) \to -1, \quad 3\;(=2 \times 1 + 1) \to -2, \quad 5\;(=2 \times 2 + 1) \to -3\]一般的に:
\[2n + 1 \to -(n+1)\]つまり、自然数と整数はそれぞれ一つずつすべて対応する。したがって整数の集まりの個数と自然数の集まりの個数は一致する。
特に、偶数の集まり、奇数の集まり、自然数の集まりがすべて一対一対応になることも分かる。(演習問題)
2) 整数 ↔ 有理数:一対一対応
整数は正の整数、0、負の整数で構成されており、有理数も同様に正の有理数、0、負の有理数からなる。それぞれの0は互いに対応させればよく、正の整数(すなわち自然数)と正の有理数の一対一対応関係を見つければよい。(負の場合は符号を変えるだけ)
すべての正の有理数は分数の形 $\frac{m}{n}$ で表せるので、分母が同じ数を次のように配置しよう:
\[\frac{1}{1}, \frac{2}{1}, \frac{3}{1}, \frac{4}{1}, \frac{5}{1}, \frac{6}{1}, \frac{7}{1}, \frac{8}{1}, \cdots\] \[\frac{1}{2}, \frac{2}{2}, \frac{3}{2}, \frac{4}{2}, \frac{5}{2}, \frac{6}{2}, \frac{7}{2}, \frac{8}{2}, \cdots\] \[\frac{1}{3}, \frac{2}{3}, \frac{3}{3}, \frac{4}{3}, \frac{5}{3}, \frac{6}{3}, \frac{7}{3}, \frac{8}{3}, \cdots\] \[\vdots\]正の整数(自然数)と一対一対応させるということは、正の有理数を一つずつ順番に数える方法を見つけることと同じである。
一つの方法として、上に列挙された正の有理数を対角線方向に数えればよい:
\[\frac{1}{1} \to \frac{2}{1} \to \frac{1}{2} \to \frac{1}{3} \to \frac{2}{2} \to \frac{3}{1} \to \frac{4}{1} \to \frac{3}{2} \to \frac{2}{3} \to \frac{1}{4} \to \cdots\]この数え方を「対角線列挙法」と呼ぶ。正の有理数を順番に数えられるので、正の整数との一対一対応が成立する。
したがって上記の議論により、整数と有理数の間の一対一対応が成立する。
3) 有理数 ↔ 実数:一対一対応は成立するか?
これもまた答えは偽である!
我々は結論を否定し矛盾を導くことで結論が真であることを示そうとする。(このような論証を「背理法」と呼ぶ)
有理数と実数の間に一対一対応が成立すると仮定しよう。しかし我々はすでに確認した 1)、2) から自然数と有理数の間に一対一対応が成立することを知っている。したがって有理数と実数の一対一対応が成立すれば、自然数と実数の間にも一対一対応が成立しなければならない。
これは実数全体の集まりを自然数と対応させて一つ一つ順番に数えていけるという意味である。ならば任意の実数の部分集合を選んでも順番に数えていけるはずである。我々は実数の特定の部分集合を選んでこれが不可能であることを確認しようとする。
カントールの対角線論法(Cantor’s Diagonal Argument)
0と1の間にあるすべての実数の集まりを考えよう。
0と1の間の実数は常に次の形式で記述される:
\[0.a_1 a_2 a_3 a_4 \cdots \quad \text{(各 } a_n \text{ は0から9の間のある数字)}\] \[\text{例)} 0.1, \quad 0.22, \quad 0.1234567890\cdots\]0と1の間の実数を順番に数えていけるはずなので、順序をつけて次のように書こう:
\[x_1, x_2, x_3, x_4, \cdots\]これを改めて書くと:
\[x_1 = 0.\color{red}{a_1^1} a_2^1 a_3^1 a_4^1 a_5^1 \cdots\] \[x_2 = 0.a_1^2 \color{red}{a_2^2} a_3^2 a_4^2 a_5^2 \cdots\] \[x_3 = 0.a_1^3 a_2^3 \color{red}{a_3^3} a_4^3 a_5^3 \cdots\] \[x_4 = 0.a_1^4 a_2^4 a_3^4 \color{red}{a_4^4} a_5^4 \cdots\] \[x_5 = 0.a_1^5 a_2^5 a_3^5 a_4^5 \color{red}{a_5^5} \cdots\] \[\vdots\]ここで0と1の間のすべての実数は順番に数えられるので:
\[x_* = 0.a_1^* a_2^* a_3^* a_4^* a_5^* \cdots\]の形で表されるはずである。
この時点で次のような数を考えてみよう:
\[X = 0.b_1 b_2 b_3 b_4 \cdots\]ここで各 $n$ 番目の桁 $b_n$ を次のように定める:
- もし $a_n^n = 3$ ならば:$b_n = 5$
- もし $a_n^n \neq 3$ ならば:$b_n = 3$
すると $X$ の各桁 $b_n$ は $a_n^n$ と異なるので、$X$ はどの $x_n$ とも異ならなければならない。
これは「0と1の間のすべての実数は $x_*$ の形である」ということに矛盾し、矛盾が発生する。
この矛盾は自然数と実数の一対一対応が成立するという仮定から生じたものであるため、望む結論が導かれる。
上記の論証をカントール(Cantor, 1845-1918, 集合論の創始者)の対角化方法(diagonal method)と呼ぶ。
考えるべき点
自然数の集合は整数の集合に含まれる。自然数でない整数が存在し、整数の集合も有理数の集合に含まれる。やはり整数でない有理数がある。それでも、三つの集合の間には一対一対応が可能である。
なぜ(直感に反する)状況が発生するのか? これは少なくとも自然数の集合、整数の集合、有理数の集合がすべて無限集合であるがゆえに可能なことである。
しかしすべての無限集合の間に一対一対応が可能なわけではない。 無限集合の間にも(やや驚くべきことに)厳然たる違いがある。自然数の集合と実数の集合の場合のように。少なくとも実数の集合は一つ一つ数えられないほど自然数の集合より「大きい」!
集合論では無限集合を含めて集合の大きさを基数、Cardinal Numberと呼ぶ。
連続体仮説(Continuum Hypothesis)
質問: 自然数の集合よりは「大きく」実数の集合よりは「小さい」無限集合は存在しないのか?
この質問はカントールによって初めて提起され、ダヴィッド・ヒルベルトによって1900年の国際数学者会議で提起された23の重要な問題の中で第1問題に該当する。これを連続体仮説と呼ぶ。
- 1940年、クルト・ゲーデルにより「反証不可能」が証明された
- 1963年、ポール・コーエンにより「証明不可能」が証明された
結論として答えがないということである。真であっても構わないし、偽であっても構わない。
これに関する詳細な議論は集合論のZFC公理系の理解を必要とする。
IV. 公理(Axiom)
結局、何を真として受け入れるかは各自の「選択」の領域に該当し、私の選択と他人の選択が一致する必要はない。それも数学の範疇の中においてさえ。
ユークリッド幾何学の公理
我々が中学・高校時代に何度も接してきた数学の中にも、実は真でも偽でもないのに必ずそうでなければならないように受け入れてきた命題があっただろうか?
- (ピタゴラスの定理) 直角三角形の斜辺の長さの二乗は、直角を成す二辺の長さの二乗和に等しい。
- (三角形の内角の和) すべての三角形の内角の和は $180°$ である。
- 長方形は存在する。
- (等距離公準) 平行な二直線の距離はどこでも一定である。
- (平行線公準) 二直線が一直線と交わり、同じ側の内角の和が二直角より小さいとき、この二直線を無限に延長するとその二つの同側内角と同じ側で交わる。
実は、上の五つの文は数学的にすべて同値である。
紀元前3世紀に書かれたユークリッド幾何学(我々が中学時代に学んだもの)の原論は五つの約束(公理)を基に作られており、その中で五番目の公理が平行線公準に該当する。
そして19世紀になって第5公理を否定しても他の公理とは何ら矛盾がないことが明らかになった。まるで連続体仮説のように。
非ユークリッド幾何学(Non-Euclidean geometry):第5公理を否定する幾何学。現代数学では一般にリーマン幾何学(Riemannian geometry)と呼ぶ。名前の由来であるベルンハルト・リーマンはガウスの弟子である。
非ユークリッド幾何学は純粋数学的にのみ中枢となる数学ではなく、現代統計学の中枢を成すベイズ統計学、コーディングと情報理論、我々が生きる物理的時空間などで数学的モデルとして自然に登場する。
V. 結論
数学的な真偽を論じるには公理の選択を必要とする。特に無限集合のように直感と実態が対立しうる数学的対象を扱うためには、適切な公理の選択は不可欠である。
しかし適切な公理の選択は各自(そして人間の)合理性に依存する選択と信念の領域である。悪く言えば、与えられた対象をどう見るか「色眼鏡」を決めなければ、そこから真偽を論じることができないのである。
Part 2. 大学院レベルへの拡張
ここからは大学院の論文を読むために必ず身につけるべき概念である。Part 1の直感的理解の上に厳密な定義と証明技法を積み上げる。
VI. 証明技法(Proof Techniques)
大学院の論文で最も頻繁に出会うのが証明である。証明のパターンを知れば論文が読めるようになる。
1. 直接証明(Direct Proof)
仮定 $P$ から論理的段階を踏んで結論 $Q$ に到達する方法。
例: $n$ が偶数ならば $n^2$ も偶数である。
証明. $n$ が偶数なので $n = 2k$($k$ は整数)。すると $n^2 = (2k)^2 = 4k^2 = 2(2k^2)$。$2k^2$ は整数なので $n^2$ は偶数である。$\blacksquare$
2. 対偶証明(Proof by Contrapositive)
$P \Rightarrow Q$ を直接示すのが難しいとき、論理的に同値な $\neg Q \Rightarrow \neg P$ を証明する。
\[P \Rightarrow Q \;\equiv\; \neg Q \Rightarrow \neg P\]例: $n^2$ が奇数ならば $n$ も奇数である。
証明. 対偶:「$n$ が偶数ならば $n^2$ も偶数である。」これは上ですでに証明した。$\blacksquare$
論文で “we prove the contrapositive” という表現が出てきたらこのパターンである。
3. 背理法(Proof by Contradiction)
結論を否定し矛盾を導く方法。Part 1のカントールの対角線論法が代表的な例であった。
構造:
- 証明したいこと:$P$
- $\neg P$ を仮定する
- 論理的推論により矛盾($Q \land \neg Q$)に到達
- よって $\neg P$ は偽なので $P$ が真
古典的な例: $\sqrt{2}$ は無理数である。
証明. $\sqrt{2}$ が有理数であると仮定しよう。すると $\sqrt{2} = \frac{p}{q}$(ただし $p, q$ は互いに素な整数)と書ける。両辺を二乗すると $2 = \frac{p^2}{q^2}$、すなわち $p^2 = 2q^2$。したがって $p^2$ は偶数であり、よって $p$ も偶数である。$p = 2m$ とおくと $4m^2 = 2q^2$、すなわち $q^2 = 2m^2$。したがって $q$ も偶数。しかし $p$ と $q$ がともに偶数であれば互いに素という仮定に矛盾する。$\blacksquare$
4. 数学的帰納法(Mathematical Induction)
自然数に関する命題 $P(n)$ をすべての $n$ について証明する技法。
構造:
- 基底段階(Base case): $P(1)$ が真であることを示す
- 帰納段階(Inductive step): $P(k)$ が真であると仮定し($\leftarrow$ 帰納仮定)、$P(k+1)$ が真であることを示す
例: $1 + 2 + 3 + \cdots + n = \frac{n(n+1)}{2}$
証明.
\[1 + 2 + \cdots + k + (k+1) = \frac{k(k+1)}{2} + (k+1) = \frac{k(k+1) + 2(k+1)}{2} = \frac{(k+1)(k+2)}{2}\]
- Base: $n = 1$ のとき左辺 $= 1$、右辺 $= \frac{1 \cdot 2}{2} = 1$。成立。$\checkmark$
- Inductive step: $1 + 2 + \cdots + k = \frac{k(k+1)}{2}$ が成立すると仮定。両辺に $(k+1)$ を足すと:
これは $P(k+1)$ と一致する。$\blacksquare$
5. 強い帰納法(Strong Induction)
帰納段階で $P(k)$ だけでなく $P(1), P(2), \cdots, P(k)$ すべてを仮定して $P(k+1)$ を示す。再帰的構造の証明で頻出する。
6. 構成的証明 vs 非構成的証明
| 構成的(Constructive) | 非構成的(Non-constructive) |
|---|---|
| 存在を主張するとき実際に作って見せる | 存在しないと矛盾であることを示す(作りはしない) |
| アルゴリズムに直接変換可能 | 存在は分かるが見つける方法は分からないことがある |
ゲーム開発では構成的証明の思考方式がより有用である。「こういうものが存在する」ではなく「こうやって作ればよい」と考える習慣。
VII. 集合演算(Set Operations)
基本演算
$A$ と $B$ が集合のとき:
| 演算 | 表記 | 定義 |
|---|---|---|
| 和集合(Union) | $A \cup B$ | ${x \mid x \in A \text{ or } x \in B}$ |
| 共通部分(Intersection) | $A \cap B$ | ${x \mid x \in A \text{ and } x \in B}$ |
| 差集合(Difference) | $A \setminus B$ | ${x \mid x \in A \text{ and } x \notin B}$ |
| 補集合(Complement) | $A^c$ | ${x \in U \mid x \notin A}$(全体集合 $U$ 基準) |
| 対称差(Symmetric Difference) | $A \triangle B$ | $(A \setminus B) \cup (B \setminus A)$ |
ド・モルガンの法則(De Morgan’s Laws)
\[\neg(P \land Q) \equiv (\neg P) \lor (\neg Q)\] \[\neg(P \lor Q) \equiv (\neg P) \land (\neg Q)\]集合で表現すると:
\[(A \cap B)^c = A^c \cup B^c\] \[(A \cup B)^c = A^c \cap B^c\]論文で限量子の否定をする際に常に登場する:
- $\neg(\forall x, P(x)) \equiv \exists x, \neg P(x)$ — 「すべてが P」の否定は「P でないものが存在」
- $\neg(\exists x, P(x)) \equiv \forall x, \neg P(x)$ — 「P が存在」の否定は「すべてが P でない」
冪集合(Power Set)
集合 $A$ のすべての部分集合の集合。
\[\mathcal{P}(A) = \{S \mid S \subseteq A\}\]例: $A = {1, 2, 3}$ のとき:
\[\mathcal{P}(A) = \{\emptyset, \{1\}, \{2\}, \{3\}, \{1,2\}, \{1,3\}, \{2,3\}, \{1,2,3\}\}\]元素が $n$ 個の集合の冪集合の大きさは $2^n$ である。
カントールの定理: 任意の集合 $A$ に対して $ A < \mathcal{P}(A) $。つまり、どんな集合もその冪集合より小さい。無限集合でも成立し、「無限にも大きさの異なる無限がある」の核心原理である。
直積集合(Cartesian Product)
\[A \times B = \{(a, b) \mid a \in A, \; b \in B\}\]例: $A = {1, 2}$、$B = {x, y}$ のとき $A \times B = {(1,x), (1,y), (2,x), (2,y)}$
これが座標系の数学的基礎である。$\mathbb{R} \times \mathbb{R} = \mathbb{R}^2$ がまさに2次元平面。
VIII. 関係と関数(Relations & Functions)
関係(Relation)
集合 $A$ から $B$ への関係 $R$ は直積集合 $A \times B$ の部分集合である。
\[R \subseteq A \times B\]$a$ と $b$ が関係 $R$ にあるとき $aRb$ または $(a, b) \in R$ と書く。
同値関係(Equivalence Relation)
集合 $A$ 上の関係 $\sim$ が次の三条件をすべて満たすとき同値関係と呼ぶ:
- 反射性(Reflexive): $a \sim a$
- 対称性(Symmetric): $a \sim b \Rightarrow b \sim a$
- 推移性(Transitive): $a \sim b \land b \sim c \Rightarrow a \sim c$
例: 整数での「同じ余り」関係。$a \equiv b \pmod{n}$
\[7 \equiv 2 \pmod{5} \quad \text{(両方とも5で割った余りが2)}\]同値関係は集合を重なりのないグループに分ける。これを同値類(equivalence class)と呼び、分けられた結果を分割(partition)と呼ぶ。大学院数学のあらゆるところで登場する核心概念である。
順序関係(Partial Order)
関係 $\leq$ が次を満たすとき半順序(partial order)と呼ぶ:
- 反射性: $a \leq a$
- 反対称性(Antisymmetric): $a \leq b \land b \leq a \Rightarrow a = b$
- 推移性: $a \leq b \land b \leq c \Rightarrow a \leq c$
すべての元素のペアが比較可能であれば全順序(total order)、そうでなければ半順序である。
例: 集合の包含関係 $\subseteq$ は半順序。${1}$ と ${2}$ は比較不可能。
関数の厳密な定義
関数 $f: A \to B$ は関係 $f \subseteq A \times B$ であり、各 $a \in A$ に対して正確に一つの $(a, b) \in f$ が存在するものである。
| 種類 | 定義 | 直感 |
|---|---|---|
| 単射(Injection) | $f(a_1) = f(a_2) \Rightarrow a_1 = a_2$ | 異なる入力 → 異なる出力 |
| 全射(Surjection) | $\forall b \in B, \exists a \in A: f(a) = b$ | すべての出力に到達可能 |
| 全単射(Bijection) | 単射 + 全射 | 完全な一対一対応 |
カントール=ベルンシュタインの定理(Cantor-Bernstein Theorem)
\[|A| \leq |B| \text{ かつ } |B| \leq |A| \text{ ならば } |A| = |B|\]つまり、$A$ から $B$ への単射と $B$ から $A$ への単射がそれぞれ存在すれば、$A$ と $B$ の間に全単射が存在する。二つの集合の大きさが同じであることを示すには双方向の単射を示すだけで十分という強力な道具。
IX. 大学院論文のための核心概念プレビュー
このセクションは各概念の「なぜ必要か」と「どこで出会うか」を指摘する。厳密な定義は各分野専用のポストで扱う。
位相(Topology)- 開集合と閉集合
核心アイデア: 「近さ」を定義する方法。距離(metric)なしでも「連続」と「収束」を論じることができる。
集合 $X$ 上の位相 $\tau$ は $X$ の部分集合の族であり:
- $\emptyset, X \in \tau$
- $\tau$ の元の任意の和集合は $\tau$ に属する
- $\tau$ の元の有限個の共通部分は $\tau$ に属する
$\tau$ の元を開集合(open set)と呼ぶ。
どこで出会うか: 多様体(manifold)理論、微分幾何学、MLにおけるデータ空間分析。特にグラフィックスにおけるメッシュの数学的基礎が位相数学である。
シグマ代数($\sigma$-algebra)- 測度論の基礎
確率論と積分論の厳密な基礎。集合 $X$ 上の $\sigma$-algebra $\mathcal{F}$ は:
- $X \in \mathcal{F}$
- $A \in \mathcal{F} \Rightarrow A^c \in \mathcal{F}$(補集合に対して閉じている)
- $A_1, A_2, \cdots \in \mathcal{F} \Rightarrow \bigcup_{i=1}^{\infty} A_i \in \mathcal{F}$(可算和集合に対して閉じている)
確率空間 $(\Omega, \mathcal{F}, P)$ における $\mathcal{F}$ がまさにこれである。「確率を問うことのできる事象の族」を定義する。
どこで出会うか: 確率論、統計学、ML論文で期待値と積分を厳密に扱うとき。”measurable function” という表現が論文に出てきたらこの概念である。
距離空間(Metric Space)
集合 $X$ と距離関数 $d: X \times X \to \mathbb{R}$ の組 $(X, d)$ であり:
- $d(x, y) \geq 0$、かつ $d(x, y) = 0 \iff x = y$
- $d(x, y) = d(y, x)$(対称性)
- $d(x, z) \leq d(x, y) + d(y, z)$(三角不等式)
どこで出会うか: 最適化理論、収束の証明、アルゴリズム解析。ゲームにおいてA*探索のヒューリスティックが admissible であるためには三角不等式を満たさなければならない。
ノルムと内積(Norm & Inner Product)
ベクトル空間 $V$ 上のノルム $|\cdot|$ は「長さ」を、内積 $\langle \cdot, \cdot \rangle$ は「角度」を抽象化したものである。
\[\|v\| = \sqrt{\langle v, v \rangle}\] \[\cos\theta = \frac{\langle u, v \rangle}{\|u\| \cdot \|v\|}\]どこで出会うか: シェーダーの
dot(normal, lightDir)がまさに内積である。MLではコサイン類似度、グラフラプラシアンなどあらゆるところで登場する。
収束と極限(Convergence & Limits)- イプシロン-デルタ
関数 $f$ における $\lim_{x \to a} f(x) = L$ の厳密な定義:
\[\forall \epsilon > 0, \; \exists \delta > 0 : \; 0 < |x - a| < \delta \Rightarrow |f(x) - L| < \epsilon\]読み方: 「どんなに小さい誤差 $\epsilon$ を取っても、$a$ の近くの十分に小さい範囲 $\delta$ を見つけることができる。」
この定義の構造を理解すれば、論文で「$\forall \epsilon, \exists \delta$」パターンが出てくるたびに自然に読めるようになる。
Part 3. ゲーム開発者の数学的思考実践
集合論、命題論理、証明技法は単なる理論ではない。ゲーム開発の設計、デバッグ、最適化の全過程で無意識的に使われる思考体系である。このセクションはその繋がりを明示的に示す。
X. 集合論的思考 → ゲームシステム設計
1. ビットマスク = 冪集合の実装
ゲームにおけるコンポーネントの組み合わせ、レイヤーマスク、バフ/デバフシステムはすべて冪集合をビットで実装したものである。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// UnityのLayerMaskは32ビット整数 = 2^32個の部分集合を表現
[Flags]
enum BuffType
{
None = 0, // 空集合
Speed = 1 << 0, // {Speed}
Attack = 1 << 1, // {Attack}
Defense = 1 << 2, // {Defense}
Shield = 1 << 3 // {Shield}
}
// 和集合:バフ追加
currentBuffs |= BuffType.Speed | BuffType.Attack;
// 共通部分:特定バフ確認
bool hasSpeed = (currentBuffs & BuffType.Speed) != 0;
// 差集合:バフ除去
currentBuffs &= ~BuffType.Defense;
数学的対応:
| 集合演算 | ビット演算 | 用途 |
|---|---|---|
| $A \cup B$ | a \| b | 状態/バフ追加 |
| $A \cap B$ | a & b | 条件確認 |
| $A \setminus B$ | a & ~b | 状態/バフ除去 |
| $A^c$ | ~a | 反転 |
| $\mathcal{P}(A)$ | すべてのビットの組み合わせ | 全状態空間探索 |
$n$ 個のバフがあれば可能な組み合わせは $2^n$ 個。バフが20個あれば百万通りを超える。これがゲームバランス調整が難しい数学的理由である。
2. ECS(Entity Component System)= 集合の共通部分クエリ
Unity DOTS / ECSアーキテクチャの核心は集合演算である。
1
2
3
4
5
6
// "PositionとVelocityの両方を持つEntity" = 共通部分
query = EntityQuery.Where(has: Position ∩ Velocity)
// "Positionはあるが Static ではないEntity" = 差集合
query = EntityQuery.Where(has: Position, exclude: Static)
// 数学的に:{e | e ∈ Position} \ {e | e ∈ Static}
3. 衝突レイヤーマトリクス = 関係の行列表現
Unityの Physics Layer 衝突マトリクスは集合間の関係を定義するものである。
\[R \subseteq \text{Layers} \times \text{Layers}\]「PlayerレイヤーとEnemyレイヤーが衝突する」= $(Player, Enemy) \in R$
この関係が対称的であるということは $(A, B) \in R \Rightarrow (B, A) \in R$。物理エンジンが衝突検査を一方向だけ行えばよい理由。
XI. 論理と証明 → デバッグとアルゴリズム
1. 背理法 → 「不可能な状態」のデバッグ
バグが発生したときの最も強力な思考パターン:
「もしこのコードが正常ならば、この時点での値は必ずXでなければならない。しかしログを見るとYである。矛盾。したがってこのコードパスにバグがある。」
これが背理法である。具体的に:
1
2
3
4
5
6
7
[デバッグ背理法パターン]
1. 仮定:「関数Aは正常に動作する」
2. 仮定が真ならば:Aの出力値は常に正でなければならない(仕様)
3. しかしログで負の値が発見された
4. 矛盾 → 仮定が偽 → Aにバグがある
5. Aの内部を調査しながら同じパターンを再帰的に適用
2. 対偶 → 条件文リファクタリング
\[P \Rightarrow Q \;\equiv\; \neg Q \Rightarrow \neg P\]複雑な条件文を対偶に裏返すとより明確になる場合が多い:
1
2
3
4
5
6
7
8
9
10
11
// 元の(直接):"有効なターゲットならダメージを与える"
if (target != null && target.IsAlive && !target.IsInvincible)
{
ApplyDamage(target);
}
// 対偶でリファクタリング:"ダメージを与えられない場合を先にフィルタリング"(Guard Clause)
if (target == null) return;
if (!target.IsAlive) return;
if (target.IsInvincible) return;
ApplyDamage(target);
数学的に同値だが可読性と保守性が劇的に向上する。
3. 数学的帰納法 → 再帰アルゴリズムの正当性
再帰アルゴリズムが正しく動作するか確認することは数学的帰納法そのものである。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// フラクタルツリー生成
void GenerateBranch(Vector3 start, float length, int depth)
{
// Base case(基底段階):depth == 0 なら終了
if (depth <= 0) return; // P(0)確認
// Inductive step(帰納段階):
// "depth-1まで正しく描画される"を仮定し(帰納仮定)
// depthでも正しいことを示す
Vector3 end = start + direction * length;
DrawLine(start, end);
// P(k) → P(k+1):より小さいdepthで再帰呼び出し
GenerateBranch(end, length * 0.7f, depth - 1); // 左
GenerateBranch(end, length * 0.7f, depth - 1); // 右
}
再帰が無限ループに陥らないことの証明法: Base caseに必ず到達可能であり、呼び出しごとにある値(ここではdepth)が単調減少することを示せばよい。これが停止証明(termination proof)である。
4. 構成的証明 → 手続き的生成(Procedural Generation)
「こういうダンジョンが存在する」は非構成的である。ゲームでは「こうやって作ればよい」という構成的証明が必要である。
1
2
3
4
5
6
7
8
9
10
[構成的思考でダンジョン生成]
主張:"すべての部屋が接続されたダンジョンを生成できる"
構成的証明:
1. 部屋を一つ置く(基底)
2. 既存の部屋の一つを選び、隣接位置に新しい部屋を接続する(帰納)
3. 2を n-1 回繰り返すと n 個の部屋がすべて接続されたダンジョンが作られる
→ この証明自体がアルゴリズムである!
XII. 全単射/可算性 → ハッシュ、シリアライゼーション、IDシステム
1. 全単射 = 完璧なマッピングシステム
ゲームでIDシステムを設計する際、全単射(bijection)の概念が核心である:
1
2
3
4
// Entity ID → Entity Object のマッピングが全単射でなければならない理由:
// 単射:同じIDで二つのEntityが参照されてはならない(衝突防止)
// 全射:すべてのEntityがIDを持たなければならない(漏れ防止)
Dictionary<int, Entity> entityMap; // 全単射を保証する必要がある
単射が破れると: 同じキーに二つのオブジェクト → 一つが消える(ハッシュ衝突) 全射が破れると: IDのないオブジェクト → 管理不能(メモリリーク)
2. ハッシュ関数 = 全射を犠牲にして速度を得た関数
\[h: \text{大きな集合(キー)} \to \text{小さな集合(バケット)}\]可能なキーの数 $\gg$ バケットの数なので鳩の巣原理により衝突は必然的である。
鳩の巣原理(Pigeonhole Principle): $n+1$ 個のものを $n$ 個の箱に入れると、少なくとも一つの箱に2個以上が入る。単純だがコンピュータサイエンス全般で使われる強力な道具。
3. 可算/非可算 → 状態空間の探索可能性
| 状態空間 | 可算性 | ゲームでの意味 |
|---|---|---|
| チェスの合法手 | 可算(有限) | 完全探索可能(理論的) |
| 囲碁の合法手 | 可算(有限だが巨大) | 完全探索不可能 → MCTS、AI必要 |
| 連続物理シミュレーション | 非可算 | 離散化(discretization)必須 → 固定タイムステップ |
物理エンジンが
FixedUpdateを使う理由:連続的(非可算)な時間を離散的(可算)なステップに変換しなければ計算が不可能だからである。これが離散化であり、数値解析の核心アイデアである。
XIII. 公理的思考 → ゲーム設計原則
「ゲームデザインの公理」= ゲームルール
ユークリッド幾何学が5つの公理からすべての定理を導出したように、ゲームのすべての行動と結果はルール(公理)から導出される。
1
2
3
4
5
6
7
8
9
10
[ゲーム公理系の例 - カードゲーム]
公理 1:デッキはカードの順序付き集合である
公理 2:プレイヤーはターンごとに正確に1枚ドローする
公理 3:手札の最大サイズは7である
公理 4:マナはターン開始時に1増加し、最大10である
→ 定理:「8ターン目にプレイヤーの最大マナは8である」(公理4から演繹)
→ 定理:「7ターンの間カードを使わなければ7枚持っている」(公理2、3)
→ バグ検出:「10マナなのに11マナのカードを使った」→ 公理違反 → バグ
公理の無矛盾性(Consistency)= ゲームバランス
ユークリッドの5公理が互いに矛盾しないように、ゲームのルールも互いに矛盾してはならない。
1
2
3
4
5
ルール A:"無敵バフ中はダメージを受けない"
ルール B:"毒状態異常は毎秒HPの5%を削る"
Q:無敵 + 毒が同時にかかったら?
→ 公理の衝突! 優先順位(公理の追加)または一方の修正が必要。
ゲームでよく発見される「コーナーケースバグ」のほとんどはルール(公理)間の矛盾から発生する。数学者が公理系の無矛盾性を検証するように、ゲームデザイナーはルールの無矛盾性を検証しなければならない。
公理の独立性(Independence)= モジュール化
ユークリッドの第5公理が残りの4つと独立であったように、良いゲームシステムは各システムが独立である。
- 戦闘システムを変えてもインベントリが壊れない → 独立
- 移動速度を変えるとジャンプ高度が変わる → 依存(結合度が高い)
これがまさにソフトウェア工学で言う低結合度(loose coupling)の数学的起源である。
XIV. 実践チートシート:論文で出会う記号解読表
大学院の論文を開いたときに最初に行き詰まるのは記号である。
| 記号 | 読み方 | 意味 |
|---|---|---|
| $\forall$ | for all | すべての〜に対して |
| $\exists$ | there exists | 〜が存在する |
| $\exists!$ | there exists unique | 唯一つ存在する |
| $\in$ | element of | 〜に属する |
| $\subseteq$ | subset of | 〜の部分集合 |
| $\subset$ | proper subset | 〜の真部分集合 |
| $\implies$ ($\Rightarrow$) | implies | 〜ならば |
| $\iff$ ($\Leftrightarrow$) | if and only if (iff) | 〜のとき、かつそのときに限り(必要十分) |
| $:=$ または $\triangleq$ | defined as | 〜と定義する |
| $\approx$ | approximately | ほぼ等しい |
| $\propto$ | proportional to | 〜に比例する |
| $\sim$ | distributed as / equivalent | 〜の分布に従う / 同値 |
| $|x|$ | norm of x | xの大きさ(ノルム) |
| $\langle x, y \rangle$ | inner product | xとyの内積 |
| $\nabla$ | nabla (gradient) | 勾配(グラディエント) |
| $\partial$ | partial | 偏微分 |
| $\sum$ | summation | 和 |
| $\prod$ | product | 積 |
| $\int$ | integral | 積分 |
| $\circ$ | composition | 合成($f \circ g = f(g(\cdot))$) |
| $\mapsto$ | maps to | 〜に対応する($x \mapsto x^2$) |
| $\mathbb{E}[X]$ | expectation | 期待値 |
| $\Pr(A)$ または $P(A)$ | probability | 確率 |
| s.t. | subject to | 〜を満たす条件の下で |
| w.r.t. | with respect to | 〜に関して |
| i.i.d. | independently and identically distributed | 独立同一分布 |
| a.s. | almost surely | ほとんど確実に(確率1) |
| w.l.o.g. | without loss of generality | 一般性を失わずに |
| QED または $\blacksquare$ | quod erat demonstrandum | 証明終わり |
論文でよく見る文の構造解読
1
2
3
4
5
6
7
8
論文:"Let ε > 0 be given. Then ∃ δ > 0 s.t. ∀ x ∈ X,
‖x - a‖ < δ ⟹ ‖f(x) - f(a)‖ < ε."
解読:"任意の正の数εが与えられたとき、適切な正のδが存在して
Xのすべての元素xに対して、xとaの距離がδより小さければ
f(x)とf(a)の距離もεより小さい。"
一行要約:"fは点aで連続である。"
1
2
3
4
5
論文:"∀ η > 0, the sequence {x_n} converges to x* a.s.,
i.e., Pr(lim_{n→∞} x_n = x*) = 1."
解読:"数列{x_n}はx*にほとんど確実に収束する。
すなわち、x_nがx*に収束する確率が1である。"
次回のための問い
- 自然数の集合の数学的定義は何か?($1, 2, 3, \cdots$ と言う人もいるだろうが、「$\cdots$」と言ってはいけないのではないか?)
- なぜ $1 + 1 = 2$ なのか?(「なぜ当たり前のことを聞くのか」と不満を述べたい方は、納得できるように説明できるだろうか?)
- なぜ $(-1) \times (-1) = 1$ なのか?
参考資料
- 期待値に関するYouTube講義
- Lecture Note 1(集合と命題、公理)- 手書きノートに基づく
- Halmos, P. - Naive Set Theory(集合論入門の古典)
- Velleman, D. - How to Prove It(証明技法の学習書)
- Munkres, J. - Topology(位相数学の標準教科書)
