情報数学 I

第十四回: 残り・復習(2012年1月20日)

Martin J. Dürst

http://www.sw.it.aoyama.ac.jp/2011/Math1/lecture14.html

AGU

© 2006-12 Martin J. Dürst 青山学院大学

今日の予定

これからの予定

1月27日(金曜日2限、11:10-12:35): 期末試験

前回の演習問題

次の証明のどこがおかしいのかを見つけてください。

全てのお互いに平行ではない平面上の直線 n 本は全て一つの点を共有する。

証明:

  1. 基底: n=2 の場合に明らかである。
  2. 帰納: n+1 本の場合、最初の n 本にも、最後の n 本にも共通点があるので全ての n+1 本に共通点がある。

 

数学的帰納法の簡単な例

次の式を考えよう:

1 = 1

1 + 3 = 4

1 + 3 + 5 = 9

1 + 3 + 5 + 7 = 16

1 + 3 + 5 + 7 + 9 = 25

この式に秘めている法則を仮説として明確にし、数学的帰納法で証明して下さい。

 

仮説

証明

基底:

n = 1 の場合、∑1i=1 2i-1 = 1 = 12

帰納:

ki=1 2i-1 = k2 を仮定して、∑(k+1)i=1 2i-1 = (k+1)2 を証明しないといけない。

(k+1)2 = k2 + 2k + 1 =∑ki=1 (2i-1) + 2k + 1 = ∑ki=1 (2i-1) + 2(k+1) - 1 = ∑(k+1)i=1 2i-1 Q.E.D.

ペアの公理による足算の結合律の証明

足算の公理:

  1. a + 1 = s(a)
  2. ab が自然数の場合、a + s(b) = s(a + b)

足算の結合律: (c + d) + e = c + (d + e)

基底: e = 1 の場合: (c + d) + 1 = s(c + d) = c + s(d) = c + (d + 1)

帰納: e = k の場合、(c + d) + k = c + (d + k) を仮定して、e = k+1 の場合 (c + d) + (k+1) = c + (d + (k+1)) を証明しないといけない。

(c + d) + (k+1) = (c + d) + s(k) = s((c + d) + k) = s(c + (d + k)) = c + s(d + k) = c + ((d + k) + 1) = c + (d + (k+1))
Q.E.D.

数学的帰納法の応用例

次の式を考えよう:

1 = 1

3 + 5 = 8

7 + 9 + 11 = 27

13 + 15 + 17 + 19 = 64

21 + 23 + 25 + 27 + 29 = 125

この式に秘めている法則を仮説として明確にし、数学的帰納法で証明して下さい。

仮説

右辺は明らかに n3

左辺は全部奇数で、順番通り、奇数の数は n

仮説は次の通り: 最小の 1個の奇数の合計は 13 で、その次々の n個の奇数の合計が n3

証明は二段階で行い、いずれも数学的帰納法を使う

一段階目の帰納法

ある合計の最小の奇数が n2-n+1 であることを帰納法で証明

基底: n=1 の場合、 n2-n+1 = 1 なので明らか

帰納:

ある k≥1 の場合、合計の最小の奇数は k2-k+1 であることを仮定し、m=k+1 の場合、合計の最小の奇数が m2-m+1 であることを証明する必要がある

奇数と奇数の差は常に 2 で、k 行目には k個の奇数がある

k 行の最小の奇数から最大の奇数までの差が 2(k-1) で、k 行目の最小の奇数からm 行目の最小の奇数の差が 2k

よって、k2-k+1 + 2k = m2-m+1 を証明できればよい

m2-m+1 = (k+1)2-(k+1)+1 = k2+2k+1 - k-1 + 1 = k2-k+1+ 2k で証明済み

 

二段階目の帰納法

n2-n+1 という奇数を始め n個の奇数の合計は n3 であることを証明

基底: n=1 の場合奇数の数が 1個なので、n2-n+1 = n3n=1 の場合に明らか

帰納:

ある k≥1 の場合、k2-k+1 で始まる k 個の奇数の合計が k3 であることを仮定し、m=k+1 の場合、m2-m+1 で始まる m 個の奇数の合計が m3 であることを証明

k 行目の合計と m 行目の合計の差は、最初の k 個のそれぞれの差と最後の m 行目にしかない奇数からなる

m 行目の最後の奇数は m+1 行目の最初の奇数 -2 で、すなわち (m+1)2-(m+1)+1 - 2 である

最初の k 個のそれぞれの差は k回行の最初の奇数の差、すなわち k((m2-m+1)-(k2-k+1)) である

よって、差の合計は k((m2-m+1)-(k2-k+1)) + (m+1)2-(m+1)+1 - 2 である

これが m3 - k3 であることが証明できればよい

k((m2-m+1)-(k2-k+1)) + (m+1)2-(m+1)+1 - 2 =

k(((k+1)2-(k+1)+1)-(k2-k+1)) + ((k+1)+1)2-((k+1)+1)+1 - 2 =

k((k2+2k+1-k)-k2+k-1) + (k+2)2-k-3 = 2k2 + k2+4k+4-k-3 = 3k2 + 3k + 1 (1)

m3 - k3 = (k+1)3 - k3 = k3+3k2+3k+1 - k3 = 3k2+3k+1 (2)

(1) と (2) が同じなので、k行目とm行目の左辺の差と右辺の差が同じなので、証明が成立

 

構造的帰納法の例

証明

根だけの非常に小さい木から少しずつ伸ばせば、どんな形の二分木でも作れる。伸ばし方の一歩として、ある葉の代わり二つの新しい葉が伸びる内部節にする方法を取る。

基底: 根だけの木の場合に、節の数が 1 で、葉の数も 1 なので n = 2l-1 が明らか。

帰納: 伸びる前の節の数を n, 葉の数を l、一歩伸びる後の節の数を n', 葉の数を l' にすると、次のことを証明しないといけない: n = 2l-1 → n' = 2l'-1

一歩伸びると節の数が n から n+2 に増え、葉の数が2個増えるが一個減るので、n'=n+2 かつ l'=l+2-1=l+1 が分かる。

以上の n = 2l-1 (1), n'=n+2 (2), l'=l+2-1=l+1 (3) の三つの式から n' を l' で表す式を求める:

(2) に (1) を適用: n' = 2l-1+2 = 2l+1 (4)

(3) の書き換え: l'-1 = l (5)

(4) に (5) を適用: n' = 2(l'-1) + 1 = 2l'-2+1 = 2l'-1

よって、帰納のステップが証明できましたので、証明が完成。

 

展望

情報数学 II: 情報理論、グラフ理論など (二年前期)

データ構造とアルゴリズム (二年後期)

言語理論とコンパイラ (三年)

復習

質問、疑問などなんでも結構