再帰・数学的帰納法
再帰・数学的帰納法
離散数学は,ZF集合論 (Zermelo-Fraenkel set theory), および PA公理 (Peano axioms) に基づく標準モデルに依拠して体系化されている.そのため,再帰的定義 (recursive definition) においては 整礎性 (well-foundedness)・非循環性 (non-cyclicity) が要求され,基底 (base) の存在が必須である.
- 「再帰」$=$「自己参照」$+$「基底」
一方,離散数学には 命題論理 (propositional logic),推論規則 (inference rule),証明論 (proof theory) 的体系など,より 形式論理 (formal logic) に近い領域も含まれる.この領域では,ゲーデル文や停止性問題などに見られるように,基底を欠ける再帰的・自己言及的構造が理論的に取り扱われる.
- 「再帰」$=$「自己参照」
再帰的定義
- 例:
- 階乗とは?(一般的な定義):正の整数 $n$ に対して,$n$ の階乗 ($n!$) は以下となる.
- 階乗とは?(再帰的な定義):正の整数 $n$ に対して,$n$ の階乗 ($n!$) は以下となる.
- 実際の計算:
- $n=1$の時,$1!=1$
- $n=2$の時,$2!=2\times 1!\,=\cdots=2\times 1=2$
- $n=3$の時,$3!=3\times 2!\,=\cdots=3\times 2=6$
- $n=4$の時,$4!=4\times 3!\,=\cdots=4\times 6=24$
- $\cdots$
- 動的計画法 (Dynamic Programming) での メモ化再帰 (memoized recursion) により,各部の「$=\cdots$」の計算が省略可能
- 同じ部分問題を何度も解くことを避けるために,中間結果を保存 (メモ化)
- 時間計算量が減るが,空間計算量が増える
- 動的計画法 (Dynamic Programming) での メモ化再帰 (memoized recursion) により,各部の「$=\cdots$」の計算が省略可能
自己参照
「自己参照」は,矛盾を引き起す可能性がある
- 嘘つきのパラドックス:「この文は嘘である」
- $L=$「$L$は偽」
- 仮に $L$ が真だとすると,「$L$ は偽」と矛盾
- 逆に $L$ が偽だとすると,「$L$ は偽」は真だったので,また矛盾
- 停止性問題 (Halting Problem):プログラムと入力を受け取って,その計算は有限時間で停止するか (を判断できるプログラムが存在するか)?
- この問題を解けるプログラム $S(P,I)$ が存在すると仮定する,ただし,$P$ は問題プログラム,$I$ は $P$ の入力
- あるプログラム $D$ (入力は $P$ と想定) を以下の規則に従って作る
- $S$ は $D(D)$ が停止するかどうかを判断できるか?(決定不能)
- 仮に $S(D,D)=1$ だとすると,$S$ の定義により,$D(D)$ は停止する.これは $D$ の定義と矛盾
- 逆に $S(D,D)=0$ だとすると,$S$ の定義により,$D(D)$ は停止しない.これも $D$ の定義と矛盾
- カントールの対角線論法 (Cantor’s Diagonal Argument)
- 非可算集合 \(F=\{f(i)\mid f(i)=0.a_{i1}a_{i2}a_{i3}\ldots\textrm{かつ}a_{ij}\in\mathbb{N}\}\)
- \[\begin{align*} b_i=\begin{cases} 1 & a_{ij}\neq 1\textrm{の時} \\ 2 & a_{ij}=1\textrm{の時} \end{cases}, 0.b_1b_2b_3\ldots\notin F \end{align*}\]
- ゲーデルの不完全性定理 (Gödel’s Incompleteness Theorems) からの思考
- ある日,賢明なゲーデルは「この文は嘘である」を「この文は真であると証明することはできない」に書き換えた.では,この文は真であろうか?
PA公理 (非形式的な説明)
- $0$ は自然数である.
- 任意の自然数 $a$ に対して,後続数 $a’$ が存在し,それも自然数である.後続数は,ある自然数のすぐ次の数である.例えば,$0$ の後続数は $1$,$1$ の後続数は $2$ である.
- 任意の自然数 $b,c$ に対して,$b=c$ の時,それらの後続数も等しくなる ($b’=c’$).逆に,後続数が等しいなら元の数も等しい.
- $0$ はどの自然数の後続数でもない.
- 以下の2点が成立すれば,ある命題はすべての自然数について成り立つとなる.
5.1. その命題が $0$ に対して成り立つこと.
5.2. 任意の自然数 $a$ に対し,もしその命題が $a$ に対して成り立つならば,$a’$ に対しても成り立つこと.
数学的帰納法 (Mathematical Induction, $=$ PA (第5) 公理)
- 原理:「$0$ に成り立ち,任意の自然数 $n$ に成り立てば $n+1$ にも成り立つ命題は,すべての自然数に成り立つ」($\star$ 正の整数の範囲なら,$0$ を $1$ に変更)
- 千年の歴史をもつ,今もなお使われる数学的証明法
- PA公理 (1891年) によって帰納的推論の正当性を保証
数学的帰納法の手順
- 「任意の正の整数 $n$ に対して,$P(n)$」という形の命題の証明
- (基底段階) $P(1)$ を証明
- (帰納段階) 「任意の正の整数 $k$ に対して,$P(k)$ ならば $P(k+1)$」を証明
例:任意の正の整数$n$に対して,$2n\le 2^n$ となることを証明せよ.
証明:
- (基底段階)まず,$n=1$ の時に正しいことを証明する.
- $n=1$ の時に,左辺 $=2n=2$,右辺 $=2^n=2$,左辺 $=$ 右辺
- したがって,$2n\le 2^n$ であり,正しい.
- (帰納段階) 次に,任意の正の整数 $k$ を考える.
- $2k\le 2^k$ であると仮定する.
- $2(k+1)=2k+2$
- したがって,$2(k+1)\le 2^k+2\le 2^k+2^k=2^{k+1}$
- したがって,$2(k+1)\le 2^{k+1}$ であり,正しい.$~\square$
This post is licensed under CC BY 4.0 by the author.