情報数学 I
第十四回 (2014年1月17日)
証明の方法
Proof Methods
Martin J. Dürst
http://www.sw.it.aoyama.ac.jp/2013/Math1/lecture14.html
© 2006-14 Martin
J. Dürst 青山学院大学
今日の予定
- これからの予定
- 証明の方法
- 数学的帰納法
- 授業改善のための学生アンケート
これからの予定
- 1月24日 (金): 15回目の授業
- 1月31日 (金) 11:10-12:35: 期末試験
Google Chrome 内の過去問の表示について: 拡張 (例: Style
Chooser) の追加が必要
配布テキストについて
- (有名な) 言語理論の教科書から
言語理論やオートマトン理論についての語句は無視してよい
- 一般的で分かりやすいので配布
- たまに違う「方言」を使用
- 期末試験の範囲に含まれる
証明の大切さ
- 数学の重要な道具
できるだけ少ない公理や定義からできるだけ多くのことを証明
- 情報テクノロジー
- データ構造の性質の証明
- アルゴリズムの正しさや性質の証明
- プログラムの正しさや性質の証明
- プログラムの変換の正しさの証明
どこまで証明すればよいか
- 直感
- (プログラムの) テスト
- 証明の細かさ:
- 粗い証明
例: x + (y + 1) =(算術)
(x + 1) + y
- 細かい証明
例: x + (y + 1) =
(足し算の交換律) x + (1 + y)
=
=(足し算の結合律) (x + 1) + y
- 証明の表現:
- 文書中心の証明
- 式中心の証明
- 機械で確認可能な証明
証明の方法
- 演繹的証明 (deductive proof, proof
by deduction)
- 帰納的証明 (inductive proof, proof by induction)
- 背理法 (proof by contradiction)
- 反例による証明 (proof by counterexample)
- 集合についての証明 (proof about sets)
- 列挙による「証明」(proof by enumeration)
証明と記号論理
(S は証明する命題や述語)
- 演繹的証明: (H ∧
(H→S)) ⇒ S など
- 帰納的証明: S(0) ∧ (∀k∈ℕ:
S(k) → S(k+1)) ⇒
(∀n∈ℕ: S(n)) など
- 背理法: (¬S→S) ⇒ S
- 反例による証明: (∃x: ¬S(x)) ⇒ ¬∀x: S(x)
- 列挙による「証明」: 例: 真理表
演繹と帰納
演繹 (deduction):
一般の原理から特定な場合を推論
帰納 (induction): 少数の事実から一般の原理を推測
数学的帰納法 (mathematical induction)
目的: ある構造の部分の (殆ど) 全てについての証明
「ある構造」は自然数が多いが、木なども
数学的帰納法は一般の分類では帰納ではなく演繹
数学的帰納法の応用
情報テクノロジーでの数学的帰納法の応用:
- アルゴリズムやデータ構造の設計や性質の証明
- プログラムについての証明
数学的帰納法の二つのステップ
S(0) ∧ (∀k∈ℕ: S(k) →
S(k+1)) ⇒ (∀n∈ℕ:
S(n))
- 基底 (basis (step), base case; S(0) の証明)
- 帰納 (induction, inductive step/case, (∀k∈ℕ:
S(k) → S(k+1)) の証明)
- 仮定 ((inductive) hypothesis; S(k)
の明記)
- 帰納の証明自体 (技法:
式の操作により、仮定を使える形に変換)
Simple Example of Mathematical Induction
Look at the following equations:
1 = 1
1 + 3 = 4
1 + 3 + 5 = 9
1 + 3 + 5 + 7 = 16
1 + 3 + 5 + 7 + 9 = 25
Express the general rule contained in the above additions as a
hypothesis.
Prove the hypothesis using Mathematical induction.
Hypothesis
- The right side of the equations is m2
- The left side is the equations is the sum of m consecutive odd
numbers, starting with 1
- Hypothesis: For n≥0,
∑ni=0 2i+1 =
(n+1)2
Proof
Basis:
Prove the property for n = 0:
∑0i=0 2i+1 = 1 =
12
Induction:
Inductive assumption: Assume that the hypothesis is true for some
k≥0: ∑ki=0
2i+1 = (k+1)2.
Show that the property is true for k + 1:
∑(k+1)i=0 2i+1 =
(k+2)2:
(k+2)2 [start with right side]
= k2 + 4k + 4 [expansion]
= k2 +2k +1 +2k + 3 [arithmetic]
= (k+1)2 + 2(k+1) + 1
[arithmetic]
= ∑ki=0 (2i+1) +
2k + 3 [use hypothesis]
= ∑ki=0 (2i+1) +
2(k+1)+1 [property of ∑]
= ∑(k+1)i=0 2i+1
Q.E.D.
数学的帰納法の種類・変更
- 基底を S(0) ではなくて S(1) や
S(2)、S(b) など
S(b) ∧ (∀k∈ℕ, k≥b:
S(k) → S(k+1)) ⇒
(∀n∈ℕ, n≥b:
S(n))
S(n) の代わりに
T(n-b)
を証明すると今までと同型
- S(k+1) の証明に j≤k
の一部又は全てのP(j) を使用
(strong induction 又は complete induction)
S(0) ∧ (∀k∈ℕ: (∀i
(0≤i<k): S(i)) →
S(k+1)) ⇒ ∀n∈ℕ:
S(n)
又は(∀k∈ℕ: (∀i
(0≤i<k): S(i)) →
S(k+1)) ⇒ ∀n∈ℕ:
S(n)
- 一部の自然数に限る
(例えば偶数だけ、2n など)
- 自然数そのものではなく、自然数で整理できるものに応用する
- 枝分かれや他の構造を許す (条件: (半)順序)
演習問題
1. 次の証明のどこがおかしいのかを見つけて下さい。
- 全てのお互いに平行ではない平面上の直線 n
本は全て一つの点を共有する。
証明:
- 基底: n=2 の場合に明らかである。
- 帰納: n+1 本の場合、最初の n
本にも、最後の n
本にも共通点があるので全ての n+1
本に共通点がある。
2. 来週質問したいことを考えて下さい。
復習
次回の授業の後半にみなさんの希望に応じて復習を予定
質問、疑問などなんでも結構
授業改善のための学生アンケート
お願い:
自由記述をできるだけ使って、具体的に書いてください
(例:
「英語をやめてほしい」のではなく、「日本語の部分で出てくる用語も
Glossary に含めてほしい」など)
Glossary
- hypothesis
- 仮説
- equation
- 方程式
- consecutive
- 連続的な
- odd (number)
- 奇数
- inductive assumption
- (帰納の) 仮定