情報数学 I

第四回 (2010年10月15日)

組み合わせ、命題

Martin J. Dürst

http://www.sw.it.aoyama.ac.jp/2010/Math1/lecture4.html

AGU

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

今日の目標

論理関数と論理式を操る

今日の内容

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! = 1

0! = 1

演算の単位元

(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) と言い、T、⊤ や 1 と書く

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

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

プログラム言語によって取り扱い方は違う

命題の演算: 「かつ」

二つの命題 AB から次の命題が作成可能:

A かつ B (A and B)

AB」、「A·B」や「A B」と書く

ABA とも B とも真の場合だけ真、
その他の場合は偽

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

真理表

(truth table)

命題の真偽を定義、証明などには真理表をよく使用:

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

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

モデル化

真理演算

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

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

論理和 (disjunction)

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

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

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

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

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

論理否定 (negation)

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

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

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

A ¬A
F T
T F

論理式の構成

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

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

優先度と括弧の省略:

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

整論理式

(well-formed formula, WFF)

目的: 論理式の構成 (文法を) を明確化

次のものは整論理式:

この定義に合わないものは整論理式でない
(注: 授業の後半に新たな論理演算子が追加)

論理式の評価の例

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

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

真理表で評価

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

論理関数

(ブール関数、Boolean function)

0 個以上の論理引数 (ブール引数) から真偽値を返す関数

論理引数は真と偽の値しか取らないので論理関数は少ない

今週の宿題

注意: 次回は11月5日 (10月22日は海外出張、10月29日は青山際のため休講)

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