情報数学 I

第四回: 論理関数とその変換と単純化 (2008年 10月17日)

Martin J. Dürst

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

AGU

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

今日の目標

論理関数と論理式を操る

今日の内容

先回のまとめ

先回の宿題

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

[都合により削除]

追加: 組合わせの式の理由と順列

nCm = n!/m!·(n-m)! を直感的に分かろう!

順列 (permutation): n 個の違うものから m 個を順番を考慮して選択するのはなん通り?

nPm = n·(n-1)·(n-2)·...·(n-m+2)·(n-m+1) = ∏ni=n-m+1 i = n!/(n-m)!

nCmnPm から計算ができる: 要素が同じで順番が違う数で割る

nCm = nPm / mPm = n!/(n-m)! / m!/(m-m)! = n!/m!(n-m)!

論理演算の復習

論理和 論理積 論理否定
又は かつ でない
conjunction disjunction negation
or and not
優先度
A B AB AB ¬B
F F F F T
F T T F F
T F T F
T T T T

先回の宿題: 命題論理の性質

[都合により削除]

整論理式

(well-formed formula, WFF)

目的: 論理式をなんとなく作ったが、(文法を) 明確にしたい

次のものは整論理式:

論理関数

(ブール関数、Boolean function)

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

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

論理演算の双対原理

(duality principle)

論理演算の性質を調べてみると、ある性質で「∧」と「∨」、それに「T」と「F」を入れ代えると結果も性質として成り立つ。

これは一般に成り立つ。∧ と ∨ の真理表で確かめて証明が可能。

これを双対原理という。

性質を覚えるのに便利

性質を使った式の変更 (簡略化)

(A ∨ ¬B) ∧ B

真理表から論理式へ

次の真理表 (論理関数) が与えられている

A B C ?
F F F F
F F T T
F T F F
F T T T
T F F T
T F T F
T T F T
T T T F

この真理表に相当する論理関数を論理式で表しなさい。

標準形

加法標準形 (選言標準形、disjunctive normal form): 変数の (否定の) 積の和

乗法標準形 (連言標準形、conjunctive normal form): 変数の (否定の) 和の積

標準形の性質:

標準形作成

加法標準形の場合 [乗法標準形の場合は [] 内 (双対原理使用)]

  1. 真理表に結果が T [F] の行だけに注目
  2. 注目の行で A, B, C,... 全ての変数の論理積 [和] を作成
  3. ある行にある変数が F [T] であるところだけの変数を否定
  4. 注目した行で作った式 (項) を論理和 [積] でつないで標準形が完成

得られる式はなぜ正しいのか:

標準形作成の例

A B C ? 加法標準形の項
F F F T ¬A ∧ ¬B ∧ ¬C
F F T T ¬A ∧ ¬BC
F T F F -
F T T F -
T F F F -
T F T T A ∧ ¬BC
T T F F -
T T T T ABC

全体の結果: ABCA∧¬BC ∨ ¬A∧¬BC ∨ ¬A∧¬B∧¬C

論理関数の単純化の方法

二つは基本的に同じことをやるが、使う「道具」(式、図) が違う。

カルノー図表は標準形の構造 ((否定) の積の和等) を保持

違う構造でもっと単純にできる例も存在

論理関数の単純化: 式の操作

例: ABCA∧¬BCAC∧ (B ∨ ¬B) ⇒ AC

以前のスライドの式全体: ABCA∧¬BC ∨ ¬A∧¬BC ∨ ¬A∧¬B∧¬CAC ∨ ¬A∧¬B

注意: 複数の単純化の道で、(式の構成が) 異なる結果が可能

論理関数の単純化: カルノー図表

カルノー図表の例

 

 

 

今週の宿題

提出: 来週の木曜日 (10月 23日)、22:00 (厳守)、Moodle にて。形式はプレーンテキスト。ファイル名は solution4_xxxxxxxx.txt (, メモ帳など; xxxxxxxx は八桁の学籍番号)

第一問:
第二問:
四つの変数 (例: A, B, C, D) の論理関数を一つ、サイコロ等を使って作ってください。
その論理関数の二つの標準形と一つ以上の単純化を計算しなさい。