跳轉到

1890 - Peano 曲線(一條線填滿整個正方形)#

案件摘要#

1890 年,Giuseppe Peano(1858–1932) 在《數學年刊》發表 Sur une courbe, qui remplit toute une aire plane,展示了一個讓數學界震驚的怪物:

\[ \boxed{\text{存在一條連續曲線,經過正方形內的每一個點}} \]

一維的線,可以「填滿」二維的面——維數的直覺崩潰了!

\[ \text{維數} = \text{「需要幾個座標」的直覺} \xrightarrow{\text{Peano 1890}} \text{失效}. \]

這是維數論(dimension theory)的起點—— 「什麼是維數」從此成為一個需要嚴格定義的問題。

前因 -- 為什麼會有這個案子#

  • Cantor 的集合論(1874–1884): Cantor(1874)證明實數與 \(\mathbb{R}^2\) 等基數(同樣多):
\[ |\mathbb{R}| = |\mathbb{R}^2| \quad\text{(透過交錯小數的對射)}. \]

Cantor 自己也震驚:

「我看到了,但我不相信!」 這是「一維與二維同樣多個點」的集合論證明—— 但 Cantor 的對射不連續。 - 自然的問題(1878–1890):

\[ \text{等基數的對射可以是「連續」的嗎?} \]
\[ \text{一維 } [0,1] \xrightarrow{\text{連續對射}} \text{二維 } [0,1]^2\ ? \]
  • Peano 的回答(1890): 可以!Peano 用三進位展開構造了一個連續的滿射(surjection):
\[ f: [0,1] \to [0,1]^2 \quad\text{(連續、滿射)}. \]

注意:是滿射而非對射—— Netto(1879)已證明連續對射不可能(維數障礙)。

\[ \text{Peano 曲線 = 連續滿射(不是一一對應)}. \]
  • Hilbert 的接力(1891): Hilbert 在 1891 年給出了更直觀的幾何版本(Hilbert 曲線)—— 用「U 形折疊」的疊代構造,一條線反覆折疊,填滿整個正方形。

線索與推理 -- 數學式、程式、理論#

第一條線索:Peano 曲線的構造(三進位)#

Peano 的構造:把 \(t \in [0,1]\) 寫成三進位:

\[ t = 0.t_1 t_2 t_3\cdots \quad (t_i \in \{0,1,2\}). \]

定義映射:

\[ x = 0.t_1 (t_3) (t_5)\cdots,\qquad y = 0.t_2 (t_4) (t_6)\cdots \]

(奇數位給 \(x\) ,偶數位給 \(y\) ,中間經過一個「翻轉」變換)。 性質: - 連續:三進位展開的映射連續(可證明); - 滿射:每個 \((x,y)\) 都被某個 \(t\) 映到。

第二條線索:Hilbert 曲線(1891,幾何版本)#

Hilbert 的疊代構造: 1. 第 0 步:一個點; 2. 第 1 步:一個 U 形(經過 4 個小正方形的中心); 3. 第 n 步:把每個 U 形縮小 2 倍,旋轉並連接——

\[ \text{Hilbert 曲線 } H_n \text{ 經過 } 4^n \text{ 個小正方形}. \]

極限: \(\lim_{n\to\infty} H_n = H\) 是連續滿射 \([0,1] \to [0,1]^2\) 。 收斂的證明:Hilbert 曲線序列在一致收斂拓樸下收斂—— 一致極限的連續性(Weierstrass M-判別法)保證極限連續。

第三條線索:維數的嚴格定義(Peano 曲線的後果)#

Peano 曲線證明「點的個數」不能定義維數—— 維數需要新的定義: 1. 拓樸維數(Brouwer, 1913;Urysohn, 1922;Menger, 1923):

\[ \boxed{\text{歸納維數:用「切開」的邊界維數定義}} \]
  • 點 = 維數 0;
  • 線 = 維數 1(切一點,剩兩段,邊界是點);
  • 面 = 維數 2(切一線,邊界是線)。
  • Hausdorff 維數(1918):
\[ \dim_H(X) = \lim_{\varepsilon\to 0}\frac{\ln N(\varepsilon)}{\ln(1/\varepsilon)} \quad\text{(覆蓋的指數)}. \]
  • Peano 曲線的 Hausdorff 維數 = 2(雖然拓樸維數 = 1)!
  • 分形(fractal,Mandelbrot 1975):Hausdorff 維數非整數的集合—— Peano 曲線是第一個「維數異常」的例子。

Python:Hilbert 曲線的疊代構造#

import numpy as np

# 1) Hilbert 曲線的疊代構造
def hilbert_curve(order):
    """產生 Hilbert 曲線的第 order 次疊代(座標序列)"""
    def hilbert(x, y, xi, xj, yi, yj, n):
        """遞迴:從 (x,y) 出發,方向 (xi,xj) 與 (yi,yj),n 階"""
        if n <= 0:
            pts.append((x + (xi + yi)/2, y + (xj + yj)/2))
        else:
            hilbert(x, y, yi/2, yj/2, xi/2, xj/2, n-1)
            hilbert(x + xi/2, y + xj/2, xi/2, xj/2, yi/2, yj/2, n-1)
            hilbert(x + xi/2 + yi/2, y + xj/2 + yj/2, xi/2, xj/2, yi/2, yj/2, n-1)
            hilbert(x + xi/2 + yi, y + xj/2 + yj, -yi/2, -yj/2, -xi/2, -xj/2, n-1)
    pts = []
    hilbert(0, 0, 1, 0, 0, 1, order)
    return np.array(pts)

print("Hilbert 曲線的疊代:")
for order in [1, 2, 3, 4]:
    pts = hilbert_curve(order)
    n_squares = 4**order
    total_len = np.sum(np.linalg.norm(np.diff(pts, axis=0), axis=1))
    print(f"  order={order}: 經過 {n_squares} 個小正方形,曲線長度 = {total_len:.4f}")
print("  → 長度隨 order 指數增長(2^order);極限長度 = ∞\n")

# 2) 驗證曲線的「覆蓋性」:order=3 的曲線經過 8×8 網格的每個中心
pts3 = hilbert_curve(3)
# 8×8 網格的中心:(i+0.5)/8, (j+0.5)/8
grid_centers = {(round((i+0.5)/8, 4), round((j+0.5)/8, 4))
                for i in range(8) for j in range(8)}
curve_pts = {(round(x, 4), round(y, 4)) for x, y in pts3}
covered = grid_centers & curve_pts
print(f"覆蓋性驗證(order=3):")
print(f"  網格中心數 = {len(grid_centers)}")
print(f"  曲線經過的中心數 = {len(covered)}")
print(f"  覆蓋率 = {len(covered)/len(grid_centers):.1%}")
print("  → 極限情況下覆蓋率 = 100%(Peano 曲線的性質)\n")

# 3) Hausdorff 維數:Peano/Hilbert 曲線 = 2
print("Hausdorff 維數(覆蓋的指數):")
for order in [1, 2, 3, 4]:
    # 每個「小正方形」邊長 = 1/2^order,需要 4^order 個
    eps = 1/2**order
    N = 4**order
    dim = np.log(N)/np.log(1/eps)
    print(f"  order={order}: ε = {eps:.4f}, N(ε) = {N}, dim_H = {dim:.4f}")
print("  → dim_H → 2(Peano 曲線的 Hausdorff 維數 = 2)")
print("  → 拓樸維數 = 1,但 Hausdorff 維數 = 2(維數異常!)\n")

# 4) Cantor 集的對照:維數 = ln2/ln3 ≈ 0.631
print("Cantor 集的 Hausdorff 維數:")
dim_cantor = np.log(2)/np.log(3)
print(f"  dim_H = ln2/ln3 = {dim_cantor:.6f}(非整數 → 分形)")
輸出:
Hilbert 曲線的疊代:
  order=1: 經過 4 個小正方形,曲線長度 = 1.5000
  order=2: 經過 16 個小正方形,曲線長度 = 3.7500
  order=3: 經過 64 個小正方形,曲線長度 = 7.8750
  order=4: 經過 256 個小正方形,曲線長度 = 15.9375
  → 長度隨 order 指數增長(2^order);極限長度 = ∞

覆蓋性驗證(order=3):
  網格中心數 = 64
  曲線經過的中心數 = 64
  覆蓋率 = 100.0%
  → 極限情況下覆蓋率 = 100%(Peano 曲線的性質)

Hausdorff 維數(覆蓋的指數):
  order=1: ε = 0.5000, N(ε) = 4, dim_H = 2.0000
  order=2: ε = 0.2500, N(ε) = 16, dim_H = 2.0000
  order=3: ε = 0.1250, N(ε) = 64, dim_H = 2.0000
  order=4: ε = 0.0625, N(ε) = 256, dim_H = 2.0000
  → dim_H → 2(Peano 曲線的 Hausdorff 維數 = 2)
  → 拓樸維數 = 1,但 Hausdorff 維數 = 2(維數異常!)

Cantor 集的 Hausdorff 維數:
  dim_H = ln2/ln3 = 0.630930(非整數 → 分形)

結案 -- 後果與影響#

  • 維數論的誕生(1890–1923):
\[ \boxed{\text{維數 = 拓樸不變量(不是「點的個數」)}} \]
  • Brouwer(1913):維數的歸納定義(維數不變量定理:同胚保持維數);
  • Urysohn–Menger(1922–1923):小歸納維數的公理化;
  • Hurewicz–Wallman(1941):Dimension Theory——維數論的教科書。
\[ \text{Peano(1890):維數異常} \xrightarrow{} \text{Brouwer(1913):維數論} \xrightarrow{} \text{現代拓樸}. \]
  • 分形幾何的先聲(1918–1975):
  • Hausdorff 維數(1918):非整數維數的測量;
  • Koch 曲線(1904)、Sierpinski 三角(1915)、Cantor 集(1883): 一系列「維數異常」的怪物;
  • Mandelbrot(1975):Fractals——把這些怪物統一為「分形」:
\[ \text{海岸線、雲、血管、股市} = \text{分形(自相似 + 非整數維數)}. \]
\[ \text{Peano(1890)} \xrightarrow{} \text{Mandelbrot(1975)} \xrightarrow{} \text{分形的世紀}. \]
  • 空間填充曲線的應用(1990s–):
  • 資料庫索引(Hilbert 曲線索引):把二維(地圖、影像)映射到一維索引—— MySQL、PostgreSQL 的空間索引用 Hilbert 曲線;
  • 影像處理:Hilbert 掃描比逐行掃描保留更多局部性(image compression);
  • 並行計算:Hilbert 曲線用於任務分配(負載平衡)。
\[ \text{Hilbert(1891)} \xrightarrow{} \text{資料庫索引(1990s)} \xrightarrow{} \text{大數據的空間索引}. \]
  • 數學基礎的危機(1890–1930): Peano 曲線與 Cantor 集合論一起,引發了數學基礎的危機:
  • 直覺主義(Brouwer, 1908):反對「無限集合」的實在論;
  • 形式主義(Hilbert, 1899):數學 = 形式系統;
  • 邏輯主義(Russell, 1903):數學 = 邏輯。
\[ \text{Cantor/Peano 的怪物} \xrightarrow{} \text{數學基礎的三大學派(1900s)}. \]
  • 現代應用(2000s–):
  • 機器學習:空間填充曲線用於降維(PCA、t-SNE 的對照);
  • 神經網路:Hilbert 曲線用於權重排序(記憶體局部性);
  • 分形天線(1990s–):手機天線用分形形狀(多頻段的緊湊設計)。
  • 歷史定位:Peano 曲線是「直覺的崩潰」與「嚴格化的開始」—— 它告訴我們:數學的直覺必須被嚴格定義檢驗。
\[ \text{直覺(一維就是一維)} \xrightarrow{\text{Peano 1890}} \text{崩潰} \xrightarrow{} \text{維數論 + 分形 + 現代拓樸}. \]

關鍵人物與文獻#

  • G. Peano:Sur une courbe, qui remplit toute une aire plane(1890);Peano 公理(1889)。
  • D. Hilbert:Über die stetige Abbildung einer Linie auf ein Flächenstück(1891)——Hilbert 曲線。
  • L. E. J. Brouwer:Über den natürlichen Dimensionsbegriff(1913)——維數不變量。
  • F. Hausdorff:Dimension und äusseres Maß(1918)——Hausdorff 維數。
  • B. Mandelbrot:Les objets fractals(1975);The Fractal Geometry of Nature(1982)。
  • 相關案件:1858-莫比烏斯帶.md、1752-歐拉多面體公式.md、1956-異質球面.md。