情報数学 I

第三回: 組み合わせ、命題 (2008年 10月10日)

Martin J. Dürst

duerst@it.aoyama.ac.jp

http://www.sw.it.aoyama.ac.jp/2008/Math1/lecture3.html

AGU

© 2005-8 Martin J. Dürst 青山学院大学

今週の目次

先週からの残り

演算子の法則

演算子に色々な法則が考えられる

演算子と被演算子の種類によって成り立つか
成り立たないか

よくあるパターン (雛形) に名前が付いている:

演算子の法則の例

名前: 交換律 (commutative law)

パターン (△ は「何かの演算子」): ab = ba

成り立つ具体例:

成り立たない例:

Moodle について

一部メールアドレスなどを所定のものにしていない学生がまだまだいる

その一部をこちらで変更した

残りは自分で必ず変更のこと (今まで出した宿題は残る)

変更できなかった人は授業後に対応

変更できない場合には早めに電子メールで連絡

警告: 修正されていないアカウントは消される

先週の宿題 (1, 2)

現在,諸事情により閲覧不可

先週の宿題 (3)

現在,諸事情により閲覧不可

先週の宿題 (4)

現在,諸事情により閲覧不可

先週の宿題 (5)

現在,諸事情により閲覧不可

パスカルの三角形

(Pascal's triangle)

一行目の (0 ... 0) 1 (0 ... 0) からスタートし、左上と右上の数を足し合わせると出来る。

                  1
                1   1
              1   2   1
            1   3   3   1
          1   4   6   4   1
        1   5  10  10   5   1
      1   6  15  20  15   6   1
    1   7  21  35  35  21   7   1
  1   8  28  56  70  56  28   8   1

パスカルの三角形の性質

インドで紀元前から知られ、多くの性質が知られている。

ここで次の関係や性質を証明する:

部分集合の数とパスカルの三角形

パチンコ玉の道の数とパスカルの三角形

部分集合と組み合わせ

パスカルの三角形の一ヶ所の直接計算

階乗

(factorial)

書き方: n!

定義: n! = 1 · 2 · ... (n-1) · n = ∏ni=1 i

問題:

1! = ?

0! = ?

演算の単位元

(unit element, identity element, neutral element)

複数の演算を行うプログラムの構造

具体例 (合計):

int sum = 0;
for (i=0; i<end; i++)
    sum += array[i];

一般の構造

C プログラム言語の場合:

type result = 単位元;
for (i=0; i<end; i++)
    result = result 演算子 array[i];

Ruby の場合:

array.inject(単位元) do |memo, next|
  memo 演算子 next
end

命題

(proposition 又は statement)

正しいか正しくないかが客観的に決められる文 (命題は正しいものでも正しくないものでも良い)

命題ではないのは主観的な記述、質問、一部が決定されてない、代名詞や変数を含む場合など。

命題の例と判例

例:

反例 (命題ではない):

命題の真偽

命題は正しいか正しくないかである。

「正しい」は「真」(しん、true) とも言って、1、T や ⊤ と書く

「正しくない」は「偽」(ぎ、false) とも言って、0、F や ⊥ と書く

真偽のプログラム言語での取り扱い

命題の演算: 「かつ」

二つの命題 AB があるとすると次の命題が作れる:

A かつ B (A AND B)

これは「AB」と書く。A·BA B と書くこともある。

ABA とも B とも真の場合だけ真、そのほかの場合は偽。

これは関数とも考えられる: AND(A, B)

真理表

命題の真偽を定義したり、証明したり、調べたりするには真理表がよく使われる:

「かつ」の真理表
A B AB
T T T
T F
F T
F F

論理演算などの情報テクノロジーでの役割

モデル化

真理演算

論理演算子は一つ以上の命題から複合命題を作る。

一番よく使われる基本的な論理演算子は次:

論理和 (disjunction)

二つの命題 AB から次の命題が作れる: A 又は B

A 又は B」 (A or B) は AB (又はA+B) と書く。

ABA とも B とも偽の場合だけ偽。

真理表で表すと次になる:

A B AB
T T T
T F T
F T T
F F F

論理否定 (negation)

A ではない」(not A) は ¬A と書く。A', A, ~A と書くこともある。

¬AA が真の場合に偽、偽の場合に真。

真理表で表すと次になる:

A ¬A
T F
F T

論理式の構成

論理演算子と命題 (変数) で論理式が作られる。

例: (A ∨ (¬B)) ∧ C

優先度と括弧の省略:

演算子に優先度が付いている。優先度の高い順から適用される。括弧は優先度が合わない時だけ必要。

論理演算子の優先度は「¬」が「∧」より高く、「∧」が「∨」より高い。

論理式の評価の例

例: (A ∨ (¬B)) ∧ B

B) の括弧が必要ない: (A ∨ ¬B) ∧ B

真理表を使った評価

A B ¬B A ∨ ¬B (A ∨ ¬B) ∧ B
T T F T T
T F T T F
F T F F F
F F T T F

今週の宿題

  1. (提出なし) nCm = n!/m! (n-m)! を証明しなさい。
    ヒント: 部分集合の足し会わせを参照
  2. (提出なし) 論理演算の性質についてしらべなさい。
    ヒント1: 集合演算の性質を参考にしたらどうか
    ヒント2: 真理表を使って確認する