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 xn1xn2 其核心的部份為 x1x0 和 Y yn1 yn2 y1 y0 相加, ci xi yi ci1 zi 這裡 ci1 代表進位 (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 如何將一整數所對應的二進位碼轉成葛雷碼? 另一整數 的對應二進位碼為 (bm1bm2 b1b0 ) , 而所對應的葛雷碼為 ( gm1gm2 g1g0 ) . 兩者的關係為 X gm1 bm1 gm2 bm1 bm2 gm3 bm2 bm3 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