Transcript 第八章

第九章
布林代數與邏輯設計
1
9.2 PNF和CNF正規形式
9.3 DNF正規形式和布林代數
9.4 邏輯設計
2
9.2 PNF和CNF正規形式
3
範例 1何謂PNF ?
所謂的 PNF 乃是將所有帶量詞的述語之量詞全部抽離出來,
並且移到邏輯表示式的最前面。
(這裡, P( x) 和 Q( x) 的量詞可能不同域)
:
x P(x) x Q(x)
可轉換成如下的 PNF:
x y (P(x)  Q( y))
4
範例2 將 x y ((z (P(x, z)  Q( y, z)) r R(x, y, r)) 轉換成
PNF
利用 p  q  p  q, 原式可轉換成
x y (z (~P( x, z)  ~ Q( y, z)) r R( x, y, r ))
 x  y z r (~ P( x, z)  ~ Q( y, z)  R( x, y, r))
5
範例 3 何謂CNF (Conjunctive Normal Form)?
c1  c2  c3
 ck
ci  pi1  pi2 
則稱該命題邏輯的型式為 CNF。例如
(~ p1  p2)  (~ p2  p3)
就是一種 CNF 的型式。
6
範例 4 將 (P  Q)  R轉換成 CNF.
(P  Q)  R 可依如下的轉換方式轉成 CNF 的正規形式
(P  Q)  R  ~ (P  Q)  R
 (~ P ~ Q)  R
 (~ P  R)  (~ Q  R)
7
9.3 DNF正規形式和布林代數
8
範例 1何謂DNF (Disjunctive Normal Form) ?
命題邏輯:
c1  c2  c3
 ck
ci  pi1  pi2 
ci 稱為子句(Clause)且每個子句中的命題以‘  ’連接起來,
這裡,命題也可視為一個變數(Literal)。例如
(~ p1  p2)  (~ p2  p3)
就是一種 DNF 的型式
9
範例 2 如何將任一命題邏輯轉換成DNF ?
四個法則:
~ (P  Q) ~ P ~ Q
P  (Q  R)  (P  Q)  (P  R)
P  Q ~ P  Q
P  Q  (P  Q)  (Q  P)
P  Q 可如下轉換成 DNF:
P  Q  (P  Q)  (Q  P)
 (~ P  Q)  (~ Q  P)
 (~ P  (~ Q  P))  (Q  (~ Q  P))
 (~ P ~ Q)  (~ P  P)  (Q ~ Q)  (Q  P)
 (~ P ~ Q)  (Q  P)
10
範例 3 將 (P  Q)  R 轉換成 DNF
~ (P  Q)  R  (~ P ~ Q)  R
11
範例4請找出下列函數的析取正規型式 (DNF)
x
1
1
1
1
0
0
0
0
y
1
1
0
0
1
1
0
0
z
1
0
1
0
1
0
1
0
f (x , y , z)
1
0
0
1
0
0
0
1
根據上表, 我們得到布林函數的積之和 (DNF) 為
f(x, y, z) = xyz + xy z  x y z .
12
範例 5何謂布林代數(Boolean Algebra)?
任一變數只有二個可能值,0 或 1。
常使用到的運算子為~、  和  。
0、1、p1、p2、…和 pk 為最基本的布林表示式(Boolean Expression),
布林代數常用的法則:
(1) P  P
(2) P  P  P  P  P
P  P  P P  P
(3) P  Q  R  (P  Q) (P  R)
P (Q  R)  PQ  PR
(4) ~ (P Q) ~ P ~ Q  P  Q
~ (P  Q) ~ P ~ Q  P Q
13
上面的法則(2)也叫等冪律(Idempotent Law);
法則(3)叫分配律(Distributive Law);
法則(4)叫迪摩根律(DeMorgan Law)。
14
9.4 邏輯設計
15
邏輯閘

~ x

x y  x  y

x  y  x y
x
~x
x
x y
y
x
x y
y
常用的三種邏輯閘
16
範例1 請設計全加器 (Full Adder)
兩數 X  xn1xn2
其核心的部份為
x1x0 和 Y  yn1 yn2
y1 y0 相加,
ci
xi
 yi
ci1 zi
這裡 ci1 代表進位 (Carry). 利用下圖的真值表
ci
xi
yi
ci 1
zi
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
0
0
1
0
1
1
1
0
1
1
0
1
0
0
1
圖 核心部份的真值表
17
我們得到
ci 1  ci xi yi  ci xi yi  ci xi yi  ci xi yi
zi  ci xi yi  ci xi yi  ci xi yi  ci xi yi
ci
xi
ci 1
yi
zi
基本的電路圖模組
18
ci
xi
ci 1
全加器
zi
yi
圖 模組全加器
則 X 和 Y 的相加可利用下面的電路來完成
c2
y n 1 xn 1 cn 1
全加器
cn
z n 1
...
y1 x1 c1
y 0 x0
0
全加器
全加器
z1
z0
圖 X  Y 的電路設計
19
範例 2何謂葛雷碼(Gray Code)?
葛雷碼又叫反身碼 (Reflected Code). 以二位元為例, 我們得
到下列的葛雷碼:
0 0
0 1
1 1
1 0
若將上述的葛雷碼擴展成三位元的葛雷碼, 我們依照鏡子反
射的原理可得下列暫時狀態:
U
U
L
L


00
01
11
10
10
11
01
00
鏡子
20
令上半部的暫時碼為 U, 而下半部的暫時碼為 L.
這裡的 U 其實就是二位元的葛雷碼.
接下來我們在 U 的每一個二元碼左邊加個 0,
而在 L 的每一個二元碼左邊加個 1,
如此一來由 0U 和 1L 所形成的三位元葛雷碼就建立了,
請參見下圖.
0
0
0
0
1
1
1
1
0
0
1
1
1
1
0
0
0
1
1
0
0
1
1
0
21
範例3 如何將一整數所對應的二進位碼轉成葛雷碼?
另一整數
的對應二進位碼為 (bm1bm2 b1b0 ) ,
而所對應的葛雷碼為 ( gm1gm2 g1g0 ) . 兩者的關係為
X
gm1  bm1
gm2  bm1  bm2
gm3  bm2  bm3
g1  b2 b1
g0  b1 b0
例如: X1  (01)2 , 則相對應的葛雷碼為 L1  ( g1g0 )  (01) ;
X 2  (10)2 , 則對應的葛雷碼為 L2  ( g1g0 )  (11) .
原本 X1 和 X 2 的漢明距離為 H ( X1, X 2 )  2 ,
經過轉換後的漢明距離為 H ( X1, X 2 ) 1 .
22