情報数学 I
第五回 (2006年11月10日)
論理回路と記号論理
Martin J. Dürst
duerst@it.aoyama.ac.jp
O 棟 529号室
http://www.sw.it.aoyama.ac.jp/2006/Math1/lecture5.html

© 2006 Martin J.
Dürst 青山学院大学
今日の目次
- 三週間前の宿題と復習
- 標準形の単純化
- 論理回路
- 記号論理
今週の主な目的
- 論理演算子と論理回路の関係が分かる
- 論理回路を書ける
- 記号論理の目的が分かる
三週間前の復習
- 組み合わせと順列:
nCm =
n!/m!·(n-m)!,
nPm =
n!/(n-m)!
- 論理演算の性質は集合演算の性質とそっくり
- 双対原理
- 加法標準形 (選言標準形、disjunctive normal form): 変数の
(否定の) 積の和
- 乗法標準形 (連言標準形、conjunctive normal form): 変数の
(否定の) 和の積
三週間前の宿題
[都合により削除]
論理関数の単純化の方法
- 標準形の式の操作
- カルノー図表 (Karnaugh map)
- クワイン・マクラスキー法 (Quine-McClusky method,
対象外)
三つは基本的に同じことをやるが、使う「道具」(式、図、表)
が違う。
下の二つの方法は標準形の構造 ((否定) の積の和等)
を保つ。違う構造でもっと単純にできる例もある。
論理関数の単純化: 式の操作
- あらゆる性質の適用を試してみて、簡単化する
- 一番多い:
一つの因子の否定の有無だけ違う二つの項を見つけて、一つの項にする。(これはカルノー図表でやる作業と同等)
例: A∧B∧C ∨
A∧¬B∧C ⇒ A∧C∧
(B ∨ ¬B) ⇒ A∧C
先週の例全体: A∧B∧C ∨
A∧¬B∧C ∨
¬A∧¬B∧C ∨
¬A∧¬B∧¬C ⇒
A∧C ∨ ¬A∧¬B
注意:
複数の単純化の道で、複数の結果がありうる。複数をやってみるが、混乱しないように注意
(元の式のそれぞれの項をなくさないように)。
論理関数の単純化: カルノー図表
- 二次元の真理表を作る。次元毎に変数の半分ぐらいを与える。
- 真理表の値の順番を隣接するものができるだけ似ているように変える。
- 真理値表の T のところだけ記入する (F は省略)。
- 真理値表に隣り合っている二つの T
を線で囲む。両方の端にある枠も隣り合うと見なす
(円筒やトーラス (ドーナッツ))。
- 二つの線で囲んだところが隣り合ったら別の色の線で囲む。できる限り二つ、四つ、八つ等の
T
を線で囲む。それそれの囲みが単純化した式の一部に当たる。
- 全ての T
が囲まれているようにできるだけ少ない囲みを選んでそれに相当する式を結果として書く。(複数の結果もありうる)
カルノー図表の例
|
A=F
B=F |
A=T
B=F |
A=T
B=T |
A=F
B=T |
C=F
D=F |
T |
T |
F |
T |
C=T
D=F |
F |
T |
T |
F |
C=T
D=T |
F |
T |
T |
F |
C=F
D=T |
F |
F |
F |
T |
XOR, NAND, NOR
今までの論理演算子以外に、回路やプログラミングによく使う演算子がある:
- 「いずれか一つ」: xor, A ⊕ B
(排他的論理和、exclusive or): 暗号学など幅広い応用
- NAND,
¬(A ∨ B) ¬(A ∧ B)
- NOR,
¬(A ∧ B) ¬(A ∨ B)
論理回路
論理関数を実際に計算する回路を作ることができる。
論理演算と電気 (電子) 回路の関係は 1938 年に C. Shannon
が修士論文で発表。
論理回路の部品を「ゲート」と呼ぶ。あるゲートの出力を次のゲートの入力につなぐことができる。
実際の回路では出力を元のゲートに戻すことなどもあるが、その場合には論理回路ではなくなる。
論理回路の場合に真と偽の代わりに 1 と 0
を使うのが普通。
論理回路に使う (主な) ゲート
| NOT ゲート |
AND ゲート |
OR ゲート |
|
|
|
|
| XOR ゲート |
NAND ゲート |
NOR ゲート |
|
|
|
|
論理回路の例
この例は半加算器 (half adder) を実現する
(足し算一ビットごとに二個必要)
| 入力 |
出力 |
| A |
B |
S (sum) |
C (carry) |
| 0 |
0 |
0 |
0 |
| 0 |
1 |
1 |
0 |
| 1 |
0 |
1 |
0 |
| 1 |
1 |
0 |
1 |
論理回路の書き方
- 入力は左、出力は右にする
- 入力と出力の線に変数の名前や式を書く
- 線は交差のところつないでいるかどうかはっきりする
- AND と OR
のゲートの場合交換律と結合律が成り立つため、入力の数を制限する必要がない。NAND
と NOR にもこの拡張を適用できる。
NAND、NOR の特徴
NAND だけ (又は NOR だけ)
で全ての論理関数が実現できる。
∧、∨、と ¬
で標準形を使って全ての論理関数が実現できるので、この三つを
NAND で実現できれば証明ができる。
¬ A =
A ∧ B =
A ∨ B =
NOR の場合には双対原理を使って証明できる。
記号論理
(symbolic logic)
- 論理のモデルを作って、記号演算だけで論理ができるようにする。
- 論理にはいくつかの種類がある。例えば:
- 二値論理 (真と偽だけ)
- 多値論理 (真と偽以外の値がある)
- ファジィ論理 (曖昧さの計算を含む)
- 命題論理 (propositional logic, 命題だけを使う)
- 述語論理 (predicate logic, 一階 (first order) 等)
- 時間など他の要素を取り入れた論理
論理に大切な演算子
「同値である」と
「ならば」の真理表
| A |
B |
A ↔ B |
A → B |
| T |
T |
T |
T |
| T |
F |
F |
F |
| F |
T |
F |
T |
| F |
F |
T |
T |
「同値である」と「ならば」の性質
- 含意の除去: A→B =
¬A∨B = ¬(A∧¬B)
- 同値の除去: A↔B =
(A→B)∧(B→A) =
(A∧B)∨(¬A∧¬B)
- 推移律: ((A→B) ∧
(B→C)) → (A→C),
((A↔B) ∧ (B↔C)) →
(A↔C)
- 背理法: A→¬A = ¬A
- 対偶: A→B = ¬B→¬A
- 同値の性質: A↔B =
¬A↔¬B, ¬(A↔B) =
(A↔¬B)
- 含意の性質: T→A = A, F→A = T,
A→T = T, A→F = ¬A
恒真と恒偽
- 常に真の式を「恒真式」と呼ぶ。トートロジー
(tautology) ともいう。
- 常に偽の式を「恒偽式」と呼ぶ。
今週の宿題
提出: 再来週の木曜日 (11月16日)、22:00 (厳守)、Moodle
にて。形式はプレーンテキスト。ファイル名は
solution5.txt (メモ帳など、solution4.txt
の第一問と同様な形式)
二つの変数 (例: A, B)
で可能な論理関数を全て表に列挙し、それぞれの関数をNOR
だけの式又は NAND だけの式で書きなさい。
A = F
B = F |
A = F
B = T |
A = T
B = F |
A = T
B = T |
簡単な式 |
| F |
F |
F |
F |
? |
| F |
F |
F |
T |
NAND(NAND(A,
B)) |
| F |
F |
T |
F |
? |
| ? |
? |
? |
? |
? |