規範形式 (布林代數)

布林代數中,所有由標準邏輯運算子組成的布林函數,都可以表示為布林規範形式。規範形式分為「極小項」形式,及其對偶,「極大項」形式。

極小項

我們首先定義極小項(minterm)。對於一個有 n 個變數的布林函數,極小項是由邏輯與運算子將這 n 個變數(或其邏輯否定)不重複地組合而成的邏輯表達式。

例如:

 
 

這兩項中每個變數都出現,且僅只出現一次。三個變數間都僅使用邏輯與相連,因此這兩項都符合極小項的定義。

 個變數有 個可能的極小項—這是因為在極小項表達式中,一個變數要麼是其自身,要麼是其邏輯否定形式— 個變數中的每個都有兩種選擇。

索引極小項

為了方便書寫極小項,我們按照其中的每個變數是否含有邏輯非,為每一個可能的極小項指派一個索引值。

首先確保每個極小項中的變數都按照同樣的次序排列(通常按拉丁字母序),從左到右,每個變數對應一個位元。一個帶邏輯非的項,如 ,對應的位元為 0,而一個不帶邏輯非的項,如 ,對應的位元為 1。例如,  對應的二進制序列是( ),因此,其索引是數字 6,這個極小項表達式寫作  。與之相似,三個變數的   ),而 則是  )。

函數等價

因為極小項由各變數的邏輯與組合而成,所以只有當所有含有邏輯非的變數取值都為0,且所有不含邏輯非的變數取值都為 1,該極小項才會輸出 1。例如,極小項 ,只在 ac 都為 1 而 b 為 0 時輸出 1。

如果你給出一個邏輯函數的真值表,就可以把這個函數寫為"積之和"(由極小項OR起來的序列)。像這樣組合出來的布林表達式,其中任何一個極小項輸出 1 時也輸出 1,對其餘輸入其輸出都是 0。由於每個極小項都只對一個輸入輸出 1,所以這個組合可以唯一地表示任何布林函數。這是析取範式的特殊形式。例如,如果給出真值表

例:布林函數 的真值表
     
0 0 1
0 1 0
1 0 1
1 1 0

觀察到 的輸出僅在第一行和第三行為 1,所以我們可以把 寫為極小項  之和。

驗證:

 

通過直接計算,結果和這個函數的真值表是一樣的。

布林函數表示為極小項之和的形式,叫做其主析取範式極小項規範形式

極大項

極大項是極小項的對偶。其中各變數(或其邏輯否定)由邏輯或運算子不重複地組合而成。 例如:

 
 

 個變數同樣也有 個可能的極大項。

索引極大項

極大項的索引與極小項的相反:含邏輯非的變數對應的位元為 1,不含的對應位元為 0。例如,極大項 的索引為 6( ),記作 。同樣,三個變數的    

對偶化

可以輕易的使用德·摩根定律驗證,極小項的補是同索引的極大項。例如

 
 

函數等價

明顯的,極大項 n 現在對這個邏輯函數的第 n+1 個唯一的函數輸入給出值。例如,極大項 5,a'+b+c',只在 ac 都為真而 b 為假的時候是假的 - 輸入為 a = 1, b = 0, c = 1 得到 0。

如果你給出一個邏輯函數的真值表,就可以把這個函數寫為「和之積」(由極大項AND起來的序列)。它是合取範式的特殊形式。例如,如果給出真值表

例:布林函數 的真值表
     
0 0 1
0 1 0
1 0 1
1 1 0

觀察到 的輸出僅在第二行和第四行為 0,所以我們可以把 寫為極大項  之積。

驗證:

 

通過直接計算,結果和這個函數的真值表是一樣的。

布林函數表示為極大項之積的形式,叫做其主合取範式極大項規範形式

結果總結

所有邏輯函數都可以用「極小項之和」或「極大項之積」的規範形式表達。除了可以用直接和簡單的代數形式表達複雜的邏輯函數之外,規範形式還允許把這些函數強力分析成最簡化的形式,這對於數字電路的最小化是非常重要的。

參見