情報数学 I

第四回 (2011年11月 4日)

組み合わせ、命題

Martin J. Dürst

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

AGU

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

今日の目標

論理関数と論理式を操る

今日の内容

Moodle について

前回の宿題 (1, 2)

1. 自分で四個の元の集合を作る

例: {猫, 牛, 犬, 馬}

2. 1. のベキ集合を作る

例: {{}, {猫}, {牛}, {犬}, {馬}, {猫,牛}, {猫,犬}, {猫,馬}, {牛,犬}, {牛,馬}, {犬,馬}, {猫,牛,犬}, {猫,牛,馬}, {猫,犬,馬}, {牛,犬,馬}, {猫,牛,犬,馬}}

前回の宿題 (3)

3. 元の数がゼロ個から六個までの集合のベキ集合の大きさの表を作る。

|A|   |P(A)|
0       1
1       2
2       4
3       8
4      16
5      32
6      64

前回の宿題 (4)

4. ある集合の大きさとそのベキ集合の大きさの関係を式で表し、その式の根拠について簡単に説明する。

|P(A)| = 2|A| で、|A| 個の元をそれぞれ部分集合に入れるかどうかで違う部分集合ができ、元が一個増えると部分集合の数が倍になる

前回の宿題 (5)

5. ゼロ個から五個の元の集合の同じ大きさの部分集合の数 (|{B|BAかつ|B|=n}|, *) を数えて表にまとめる。

|A|  n    *     |A|  n    *
 0   0    1      4   0    1
 1   0    1      4   1    4
 1   1    1      4   2    6
 2   0    1      4   3    4
 2   1    2      4   4    1
 2   2    1      5   0    1
 3   0    1      5   1    5
 3   1    3      5   2   10
 3   2    3      5   3   10
 3   3    1      5   4    5
                 5   5    1

 

パスカルの三角形

(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 と書く

真と偽はともに真理値 (truth value) という

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

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

 

命題の演算: 「かつ」

二つの命題 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 個以上の論理引数 (ブール引数 (ひきすう), boolean argument) から真偽値を返す関数

すなわち:

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

今週の宿題

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