計算機学 その2...
TRANSCRIPT
論理関数の性質の証明
● これまでの流れ
– AND, OR, NOTなどの基本演算を真理値表で定義
– その他の論理関数は基本演算の組み合わせ
– 論理関数の入力は有限だから、命題がすべての入力について具体的に成立することを示せば証明が可能
● そんなことしなくてもわかる場合もある
– 例: x・y+x・y = y の証明
x・y+x・y = (x+x)・y = 1・y = yすべての入力について調べたわけではなく、論理式の性質
だけから導かれる
論理関数の性質の証明
● 論理演算の持つ性質だけを使って論理関数の性質を証明する→代数学的方法
● 論理演算の体系の明確な定義– 公理による論理演算の体系の記述
– 論理演算の体系:ブール代数(Boolean algebra)集合 B と、Bの元 0と1、Bの元に対する二項演算 +, ・<B,+,・,0,1>
ブール代数の公理
名前 内容単位元 x+0=x x·1=x
零元 x+1=1 x·0=0
べき等律 x+x=x x·x=x
交換律 x+y=y+x x·y=y·x
結合律 (x+y)+z=x+(y+z) (x·y)·z=x·(y·z)
吸収律 x+(x·y)=x x·(x+y)=x
分配律 (x+y)·z=(x·z)+(y·z) (x·y)+z=(x+z)·(y+z)
相補律 x+x=1 x·x=0
二重否定 x=x
ド・モルガン律 x+y=x·y x·y=x+y
ブール代数の双対性:・と+、1と0を入れ替えても定理が成立する
これまでの論理関数の扱いとの違い
項目 これまで 代数的
演算の定義 真理値表 公理
証明 真理値表 公理と推論規則
両者によって得られる定理は一致する(健全性および完全性)前ページの公理は冗長(本当は赤い部分だけでよい)
例:論理和のべき等律の証明
x+x = 1・x+1・x=(1+1)・x=1・x=x
例:二重否定の証明
x=1・x=(x+x)・x=(x・x)+(x・x)=(x・x)+0=(x・x)+(x・x)=x・(x+x)=x・1=x
これまでの論理関数の扱いとの違い
項目 これまで 代数的
演算の定義 真理値表 公理
証明 真理値表 公理と推論規則
両者によって得られる定理は一致する(健全性および完全性)前ページの公理は冗長(本当は赤い部分だけでよい)
例:論理和のべき等律の証明
x+x = 1・x+1・x=(1+1)・x=1・x=x
例:二重否定の証明
x=1・x=(x+x)・x=(x・x)+(x・x)=(x・x)+0=(x・x)+(x・x)=x・(x+x)=x・1=x
演習
● 単位元・零元・交換律・分配律・相補律だけを使って、吸収律を導け。
吸収律: x+(x・y)=x x・(x+y)=x– xとyに0と1を代入して調べれば簡単だが、そういう方法
は使わない(式変形だけを使う)
– ヒント: x=x+0, x=x・1 と分配律を使う
論理関数の性質
● 論理関数の様々な性質を理解する– 特殊な性質を持つ論理関数は少ない素子数で実現可
能● 自己双対・自己反双対関数● 単調増加・単調減少関数/正関数・負関数● 対称関数
– 論理関数の持つその他の性質● 完全系● 同値類
自己双対・自己反双対関数
● 関数 f の双対関数 f * とは
● 自己双対関数は次の性質を満たす
● 自己反双対関数は次の性質を満たす
f ∗(x1 ,… , xn)= f ( x1 ,… , xn)
f ∗(x1 ,… , xn)= f (x1 ,… , xn)
f ∗(x1 ,… , xn)= f (x1 ,… , xn)
自己双対関数の例
● 性質● 例:
f ∗(x1 ,… , xn)= f (x1 ,… , xn)
f (x , y , z)=x y+ y z+z x
x y z f
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1
反対称入力反転
多数決関数
自己反双対関数の例
● 性質● 例:
f ∗(x1 ,… , xn)= f (x1 ,… , xn)
f (x , y , z)= x y z+x y z
x y z f
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 1
1 0 0 1
1 0 1 0
1 1 0 0
1 1 1 0
対称入力反転
自己双対・自己反双対関数の性質
● 真理値表を書くと、上半分と下半分が反対称/対称
– 真理値表の上半分が決まれば下半分も決まる→変数1個分情報が少ないのと同じ
– n変数自己(反)双対関数の個数:(一般のn変数論理関数の個数は )
● 自己双対関数は変数の肯定または否定リテラルと多数決関数だけから構成できる
● 任意の自己双対関数 f1, f2 と自己反双対関数 g1, g2について
22n−1
22n
f 1⊕ f 2 , g1⊕g2 :自己反双対f 1⊕g1:自己双対
単調増加/単調減少関数
● ある関数 f が変数 xi で単調増加であるとは
● ある関数 f が変数 xi で単調減少であるとは
● すべての変数に対して単調増加→単調増加関数
● すべての変数に対して単調減少→単調減少関数
f (x1 ,… , xi−1 ,0, x i+1 ,… , xn)≤ f (x1 ,… , xi−1 ,1, x i+1 ,… , xn)
f (x1 ,… , xi−1 ,0, xi+1 ,… , xn)≥ f (x1 ,… , xi−1 ,1, xi+1 ,… , xn)
正関数/負関数
● 正関数:肯定リテラルの積和形で表せる関数
● 負関数:否定リテラルの積和形で表せる関数
● ユネイト関数:ある変数に関しては肯定または否定リテラルしか含まない関数
● どれでもない例
x+ y+z , x y+ y z ,…
x+ y+ z , x y+ y z ,…
x+ y+ z , x y+ y z ,…
x y+ y z ,…
性質
● f が単調増加関数 ⇔ f が正関数
● f が単調減少関数 ⇔ f が負関数
● f が正関数 ⇔ f が負関数
● 正関数は関数の合成に対して閉じている
– f , g が正関数ならば f (..,g(...),..)も正関数
– 負関数は合成に関して閉じていない
対称関数
● 変数の置換
● 変数を任意に置換しても値が変わらない関数:完全対称関数(あるいは単に対称関数)
f (x , y , z)=x y z → g (x , y , z)= f (x , z , y)=x y z
f (x , y , z)=x y z
f ( x , y , z)= f (x , z , y)= f ( y , x , z)= f ( y , z , x)= f (z , x , y)= f (z , y , x)
対称関数の性質
● n変数基本対称関数
– 入力のうちi個の入力が1のときだけ1になる
– 完全対称関数は基本対称関数の論理和で表せる
– 3入力多数決関数
S in(x1 ,… , xn)
S 03(x , y , z)= x y z
S 13(x , y , z )=x y z+ x y z+ x y z
A∈{0,1,… , n}
S An(x1 ,… , xn)=∑
i∈A
S in(x1 ,… , xn)
M (x , y , z)=S 23(x , y , z )+S3
3(x , y , z)
完全系
● すべての論理関数はAND, OR, NOT演算で表せる→{AND, OR NOT}は完全系(万能系)である という
AND (x , y)=xy , OR(x , y)=x+ y , NOT (x)= x
AND (x , y)=NOT (OR(NOT (x ) , NOT ( y )))
OR(x , y)=NOT (AND (NOT (x) , NOT ( y)))
{AND,NOT}, {OR,NOT}も完全系
完全系
NAND(x , y)=NOT (AND (x , y))
NOT (x)=NAND (x , x )
AND (x , y)=NOT (NAND (x , y ))
OR(x , y)=NAND (NOT (x) , NOT ( y))
{NAND}は完全系
その他の完全系の例
{NOR}, {XOR,1, AND}, {XOR,1,OR} など
関数の同値類
● ある関数に対して、入出力の否定および置換関係にある関数は同値類と呼ばれる
– 入力を否定して得られる同値類:N同値類
– 入力変数を置換して得られる同値類:P同値類
– 入力変数の否定・置換および出力の否定で得られる同値類:NPN同値類
論理回路
xyz
論理回路
xyz