跳轉到

1974 Donald Knuth —— 一個人寫一部程式設計的百科全書#

「一個 25 歲的博士生為出版社寫了份校對建議,出版社直接 邀他寫書。他答應了——然後這本書寫了六十年還沒寫完。」

案件檔案#

項目 內容
得主 Donald E. Knuth (b. 1938)
得獎理由 演算法分析與程式設計藝術(TAOCP),多重分支結構理論
關鍵詞 TAOCP、演算法分析、TeX、文學編程

前因#

1962 年前,程式設計知識散落於手冊與江湖傳說,沒有一門 「演算法的科學」:沒有複雜度記號、沒有系統性分析。Knuth 在 Caltech 就讀時為 Addison-Wesley 校稿,被邀請寫成《The Art of Computer Programming》(TAOCP)。

線索與推理#

線索一:以分析代替食譜#

TAOCP 的革命性寫法:每個演算法不只給步驟,還證明其正確性 與效率界。Knuth 與同事推廣了大 O 記號的現代用法:

插入排序:平均比較次數 ≈ n²/4    → O(n²)
合併排序:n log n − n + 1        → Θ(n log n)
排序下界:比較排序至少需 log₂(n!) = Θ(n log n) 次比較

他確立了「最壞情況 / 平均情況」兩軸分析法,使演算法成為 可比較、可改進的科學對象(影響 1978 Floyd 案)。

線索二:混合式數(MIX)——語言無關的機器#

為避免 TAOCP 綁死任何真實電腦(過時即作廢),Knuth 設計虛構 機器 MIX/MMIX。抽象化保證了書的永生。

線索三:TeX 的誕生(1977–1989)#

因不滿第 2 卷新版校樣品質,Knuth 決定自己寫排版系統。 TeX 的核心是段落斷行的最佳化:

把斷行視為動態規劃:
  cost(段落) = Σ (badness of each line)²
badness ∝ (伸縮量/彈性)³
以 Dijkstra 最短路徑式方法求全域最小壞度(參見 1972 案!)

這是「用演算法解決藝術問題」的極致範例。Metafont 則以 方程式定義字體形狀,合稱「電腦與排版」(Computers and Typesetting)。

線索四:文學編程(1981)#

主張:程式是寫給人讀的文學作品,WEB 系統將敘述與代碼交織。 TeX 本身即以 WEB 撰寫——自證範例。

理論評析#

Knuth 的元方法論:從具體案例中提煉不變量。他反對過度 抽象(「過早最佳化是萬惡之源」也出自他),主張理論必須回到 真實的計算代價。

後果#

  • TAOCP 第 4 卷仍在連載(fascicles 形式),如一項未完工的教堂。
  • 學界最高榮譽之一 Knuth Prize(1996 設立)。
  • LaTeX 成為全球學術出版的隱性基礎設施。

關聯案件#

→ 1978-Robert-Floyd與演算法分析方法論、1984-Niklaus-Wirth與Pascal語言、1985-Richard-Karp與NP完全問題的證明