Post

再帰・数学的帰納法

再帰・数学的帰納法

離散数学は、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!$) は以下となる。
    \[\begin{align*} n! & =\Pi^n_{k=1}k \\ & =1\times 2\times\cdots\times (n-1)\times n \end{align*}\]
    • 階乗とは?(再帰的な定義):正の整数 $n$ に対して、$n$ の階乗 ($n!$) は以下となる。
    \[\begin{align*} n! & = \begin{cases} 1 & n=1\textrm{の時} \\ n\times (n-1)! & n>1\textrm{の時} \end{cases} \end{align*}\]
    • 実際の計算:
      • $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$」の計算が省略可能
          • 同じ部分問題を何度も解くことを避けるために、中間結果を保存 (メモ化)
          • 時間計算量が減るが、空間計算量が増える

自己参照

「自己参照」は、矛盾を引き起す可能性がある

  • 嘘つきのパラドックス:「この文は嘘である」
    • $L=$「$L$は偽」
    • 仮に $L$ が真だとすると、「$L$ は偽」と矛盾
    • 逆に $L$ が偽だとすると、「$L$ は偽」は真だったので、また矛盾
  • 停止性問題 (Halting Problem):プログラムと入力を受け取って、その計算は有限時間で停止するか (を判断できるプログラムが存在するか)?
    • この問題を解けるプログラム $S(P,I)$ が存在すると仮定する、ただし、$P$ は問題プログラム、$I$ は $P$ の入力
    \[\begin{align*} S(P,I)=\begin{cases} 1 & P(I)\,\textrm{停止する時、かつその時に限り} \\ 0 & P(I)\,\textrm{停止しない時、かつその時に限り} \end{cases} \end{align*}\]
    • あるプログラム $D$ (入力は $P$ と想定) を以下の規則に従って作る
    \[\begin{align*} D(P)=\begin{cases} \textrm{停止させない} & S(P,P)=1\textrm{の時} \\ \textrm{停止させる} & S(P,P)=0\textrm{の時} \end{cases} \end{align*}\]
    • $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公理 (非形式的な説明)

  1. $0$ は自然数である。
  2. 任意の自然数 $a$ に対して、後続数 $a’$ が存在し、それも自然数である。後続数は、ある自然数のすぐ次の数である。例えば、$0$ の後続数は $1$、$1$ の後続数は $2$ である。
  3. 任意の自然数 $b,c$ に対して、$b=c$ の時、それらの後続数も等しくなる ($b’=c’$)。逆に、後続数が等しいなら元の数も等しい。
  4. $0$ はどの自然数の後続数でもない。
  5. 以下の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)$」という形の命題の証明
    1. (基底段階) $P(1)$ を証明
    2. (帰納段階) 「任意の正の整数 $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.