前300 歐幾里得《幾何原本》:公理化方法成為一切理論的骨架#
案發現場#
約西元前 300 年,亞歷山大城。托勒密王朝剛在尼羅河口建立起圖書館與博物院,欧幾里得(Euclid, 約前330–前275)在這裡寫下《幾何原本》(Στοιχεῖα,Elements)。
當時的幾何知識並不稀奇——埃及人有測地術,巴比倫人有面積公式,希臘歷代(泰勒斯、畢達哥拉斯、歐多克索斯)累積了大量定理。真正的問題是:這些知識彼此孤立,各說各話,誰也無法確定哪些是真的、哪些只是經驗。 一個「怎樣才能確定無疑」的懸案,擺在整個希臘學術界面前。
偵查過程#
歐幾里得的偵查手法前無古人:他不新增任何「事實」,而是把既有的幾何知識重新組織成一個演繹系統。
第一步,他只保留少數不言自明的起點:5 條公設(postulates,如「過兩點可作一直線」「任意直線可無限延長」)與 5 條公理(如「等量加等量,其和相等」)。其中最著名的第五公設——「過直線外一點,恰有一條平行線」——措辭冗長,日後將成為一樁獨立懸案(見下)。
第二步,從這 10 條始點出發,以純邏輯推演,一層層證出 465 個命題,涵蓋平面幾何、比例論、數論與立體幾何。書中處理不可公度量的比例論(承襲歐多克索斯),展現了希臘數學對「嚴格性」的執著——這正是偵查的核心:每一個結論都必須有明確的前件,每一條推理都必須可被任何人重演。
第三步(也是意外收穫),書中第 VII 卷用「輾轉相除法」求兩數的最大公因數——兩千年後,這個演算法成為現代電腦科學最早的範例之一(見本文末程式)。
結案報告#
《幾何原本》的結案報告寫得比任何書都長——它成為此後兩千三百年間一切理論的結構範本:
- 數學⇒理論的極致:牛頓的巨著名為《自然哲學的數學原理》(Philosophiæ Naturalis Principia Mathematica,見 1687-牛頓原理.md),刻意模仿《幾何原本》——從定義、公理(三大運動定律)出發,以幾何方式演繹出行星軌道。書名與結構本身就是歐幾里得的致敬。
- 哲學也被格式化:斯賓諾莎的《倫理學》(1677)副標題是「依幾何次序證明」——連人類情感與神,都要用公理、命題、證明的格式來寫。
- 數學⇒數學的自我促進:對第五公設兩千年的質疑,最終在十九世紀催生非歐幾何——羅巴切夫斯基與鮑耶允許「過一點有無窮多條平行線」,1854-黎曼幾何.md 進一步允許根本沒有平行線。質疑一條公設,解放了整個數學的公理自由,六十年後這份自由成為廣義相對論的骨架。
- 公理化的現代回響:希爾伯特 23 問題(1900-希爾伯特23問題.md)、圖靈機(1936-圖靈機.md)皆是公理化思維的直系後裔。
促進鏈分析#
- 數學⇒理論:公理化方法(5 公設→465 命題)成為牛頓《原理》的結構範本,也把斯賓諾莎《倫理學》格式化——理論從此必須「像幾何一樣」自足地成立。
- 數學⇒數學:對第五公設的質疑催生非歐幾何,公理從「自明真理」變成「可替換的起點」,數學自我解放。
- 數學⇒技術:輾轉相除法成為演算法與密碼學(RSA)的基本工具,公理化的「演繹」思想成為程式驗證的基礎。
證據與工具#
# 歐幾里得輾轉相除法(出自《幾何原本》第七卷)
# 公理化思維的現代回響:一個 2300 年前的演算法,今天仍在 CPU 裡跑
def gcd_euclid(a, b):
# 《原本》命題 VII.1-2:不斷以大減小(現代改為取餘數)
while b != 0:
a, b = b, a % b # 新的 a 是舊的 b,新的 b 是餘數
return a
# 驗證幾組數
cases = [(1071, 462), (252, 105), (2024, 606)]
for a, b in cases:
g = gcd_euclid(a, b)
print(f"gcd({a}, {b}) = {g}")
# 檢查公理化精神:結論可被「定義」驗證
assert a % g == 0 and b % g == 0, "最大公因數必須整除兩數"
# 延伸:gcd 與最小公倍數的關係 lcm(a,b) = a*b / gcd(a,b)
a, b = 1071, 462
print(f"lcm({a}, {b}) = {a*b // gcd_euclid(a,b)}")
# 「輾轉相除」的步數對數級成長——拉梅定理的直覺示範
a, b = 3141592, 2718281
steps = 0
while b:
a, b = b, a % b
steps += 1
print(f"兩個七位數只需 {steps} 步——演算法的效率源自邏輯結構本身")