1952-QuineMcCluskey最小化#
案件摘要#
Shannon 證明了電路可用布林代數表示,但留下一個懸案:怎樣把一個真值表自動化簡成最少閘的電路?1952-56 年,邏輯學家 Willard Quine 與貝爾實驗室的 Edward McCluskey 聯手破案:把化簡拆成兩步——先系統性地枚舉所有「質蘊涵項」(prime implicants),再從中挑出涵蓋所有 1 的最小集合。這是史上第一個完全可程式化的邏輯化簡演算法,把「工程師的卡諾圖直覺」變成機器能跑的表格程序,是 Espresso(1984)之前三十年唯一的自動化簡工具。
前因 -- 為什麼會有這個案子#
- 卡諾圖的極限:Karnaugh(1953)的圖解法靠人眼辨識相鄰格,4-6 個變數是極限,無法交給機器。
- 閘是錢:當年每顆真空管/繼電器都昂貴且不可靠,電路省一個項 = 省錢、省體積、省故障率。
- QM 之前已有試錯法:工程師靠經驗合併相鄰項,既不保證最優也不可重現——工業界需要確定性的程序。
線索與推理 -- 數學式、程式、理論#
第一步:質蘊涵項枚舉(合併律的窮舉)#
利用吸收律的關鍵事實:兩個僅差一位的最小項可合併為一個去掉該位的蘊涵項。把最小項按「1 的個數」分組,只須比較相鄰組:
\[ x\,A + \bar{x}\,A = A \quad (\text{合併掉 } x) \]
反覆合併直到無法再合併,剩下的就是質蘊涵項(不能被任何更短項涵蓋的項)。以卡諾圖語言:就是「能畫到最大的圈」。
第二步:質蘊涵項表(集合涵蓋)#
列出質蘊涵項 × 最小項的 0/1 矩陣,問題化為最小涵蓋:選最少的質蘊涵項,使每個最小項至少被一個選中項涵蓋:
\[ \min \sum_i x_i \quad \text{s.t.} \quad \forall j:\ \sum_{i:\, m_j \in P_i} x_i \ge 1,\ x_i \in \{0,1\} \]
- 必要質蘊涵項(essential PIs):某最小項只有它涵蓋——必選,可直接剝離。
- 剩餘部分用分支法(Petrick, 1959)精確求解,或貪心啟發式。
範例#
\(f = \Sigma m(0,1,2,5,6,7)\) ,最小項以二進位表示:
| 組(1 的個數) | 最小項 | 合併 |
|---|---|---|
| 0 | 000 | 與 001、010、100 各差一位 → \(\bar{z},\ \bar{y},\ \bar{x}\) (兩字母項) |
| 1 | 001, 010, 100 | 再合併出單字母項(涵蓋四格的圈) |
| 2, 3 | 101, 110, 011, 111 | 111 與 101 → \(xz\) ;110 與 111 → \(xy\) |
結果:質蘊涵項 \(\{\bar{x}\bar{z}\ 帶 \ldots\}\) 經涵蓋表化簡得 \(f = \bar{y}\bar{z} + xz + xy\) 級別的最簡式(6 個最小項從 6 項縮到 3 項)。
複雜度:雙重爆炸#
- 質蘊涵項最多可達 \(\binom{n}{n/2}\) 個(Sperner 定理),是 \(O(2^n/\sqrt{n})\) 級。
- 最小涵蓋是 NP-困難(Karp 1971 的清單裡就有 Set Cover)——註定只能啟發式,這為 Espresso 的「啟發式為王」路線埋下伏筆。
結案 -- 後果與影響#
- PLA 時代的標配:1950-70 年代所有 ROM/PLA 化簡都靠 QM 及其變體,是自動邏輯設計的第一代引擎。
- 劃出演算法學的基本盤:「枚舉質蘊涵項 + 集合涵蓋」的兩段式結構,被 Espresso(1984)繼承但反轉策略——不再枚舉全部質蘊涵項,而是逐步「膨脹-精簡」。
- 暴露表示法的瓶頸:QM 證明真值表表示撐不過 ~16 個變數,逼出 BDD(1986)與 AIG(2005)等新表示法。
- McCluskey 日後成為史丹佛測試理論宗師,與 Roth 的 D 演算法(1966)共同奠定可測試性設計。
關鍵人物與文獻#
- Willard V. Quine(1908–2000):哈佛哲學家,從邏輯哲學角度提出質蘊涵項理論。
- Edward J. McCluskey(1929–2022):貝爾實驗室→史丹佛,開關理論與測試理論大家。
- 文獻:
- W. V. Quine, "The Problem of Simplifying Truth Functions," Amer. Math. Monthly 59, 521 (1952).
- E. J. McCluskey, "Minimization of Boolean Functions," Bell Syst. Tech. J. 35, 1417 (1956).
- S. R. Petrick, "A Direct Determination of the Irredundant Forms of a Boolean Function," 1959.