Featured image of post Может ли одна линия заполнить квадрат? Заполняющие пространство кривые и интуиция размерности

Может ли одна линия заполнить квадрат? Заполняющие пространство кривые и интуиция размерности

От открытия Кантором мощности континуума до строгого построения кривых Пеано и Гильберта, доказательств равномерной сходимости, сюръективности, 1/2-гёльдеровости и нигде не дифференцируемости, топологической и хаусдорфовой размерности, а также приложений Google S2 и Hilbert R-Tree.

В самом начале Книги I «Начал» Евклид Александрийский дал два основополагающих определения: «Точка есть то, что не имеет частей; линия же — длина без ширины ($\mu\tilde{\eta}\kappa\omicron\varsigma\ \dot{\alpha}\pi\lambda\alpha\tau\acute{\varepsilon}\varsigma$).» Согласно нашей повседневной геометрической интуиции, идеальная математическая кривая имеет строго нулевую толщину ($\delta = 0$). На протяжении более двух тысячелетий казалось самоочевидным, что одномерная нить нулевой ширины никогда не сможет без просветов заполнить внутренность двумерного квадрата $[0,1]^2$.

Однако в 1890 году итальянский математик Джузеппе Пеано (Giuseppe Peano, 1858–1932) разрушил эту двухтысячелетнюю уверенность в пятистраничной статье в Mathematische Annalen, построив непрерывное сюръективное отображение $f: [0,1] \to [0,1]^2$ единичного отрезка на единичный квадрат. Год спустя (1891) Давид Гильберт (David Hilbert, 1862–1943) предложил прозрачную геометрическую рекурсию — кривую Гильберта. Ещё более удивительно то, что объект, который в конце XIX века называли «патологическим монстром» чистой математики, столетие спустя стал одним из важнейших алгоритмов современной информатики, лежащим в основе Google Maps (библиотека Google S2), пространственных баз данных (Hilbert R-Tree), кэш-независимых (cache-oblivious) алгоритмов и балансировки нагрузки суперкомпьютеров.


1. Шок Кантора (1877) и теорема Нетто (1879)

В 1877 году создатель теории множеств Георг Кантор обнаружил, что между точками одномерного отрезка $[0,1]$ и точками двумерного квадрата $[0,1]^2$ существует биекция (взаимно однозначное соответствие). Потрясённый собственным доказательством, он написал Рихарду Дедекинду знаменитую фразу: «Je le vois, mais je ne le crois pas!» (Я вижу это, но не верю этому!)

Идея Кантора состояла в чередовании (interleaving) десятичных цифр (или неделимых блоков цифр, оканчивающихся ненулевой цифрой, чтобы строго устранить неоднозначность конечных дробей вида $0{,}5 = 0{,}4999\dots$):

$$x = 0.a_1 a_2 a_3 \dots, \quad y = 0.b_1 b_2 b_3 \dots \quad \Longrightarrow \quad t = \phi(x, y) = 0.a_1 b_1 a_2 b_2 a_3 b_3 \dots$$$$|[0,1]| = |[0,1]^2| = |[0,1]^n| = |\mathbb{R}| = \mathfrak{c} = 2^{\aleph_0}$$

Тем самым было доказано, что отрезок $[0,1]$, квадрат $[0,1]^2$ и $n$-мерный гиперкуб $[0,1]^n$ имеют одну и ту же мощность континуума $\mathfrak{c} = 2^{\aleph_0}$. Однако Дедекинд сразу заметил, что биекция Кантора всюду разрывна. В 1879 году Ойген Нетто доказал, что между $[0,1]$ и $[0,1]^2$ не существует непрерывной биекции (гомеоморфизма): так как $[0,1]$ компактно, а $[0,1]^2$ хаусдорфово, любая непрерывная биекция была бы гомеоморфизмом; но при удалении внутренней точки $t_0 = 1/2$ множество $[0,1]\setminus\{1/2\} = [0,1/2) \cup (1/2,1]$ становится несвязным, тогда как проколотый квадрат $[0,1]^2 \setminus \{f(1/2)\}$ остаётся линейно связным — противоречие!


2. Кривая Пеано (1890): отказ от инъективности открывает путь к непрерывной сюръекции!

Пеано увидел логическую лазейку в теореме Нетто: невозможно лишь одновременное выполнение непрерывности, сюръективности и инъективности. Если отказаться от инъективности (разрешив самопересечения, т. е. кратные точки), то можно построить непрерывную сюръекцию $f: [0,1] \to [0,1]^2$!

Пеано использовал троичное разложение $t = 0{,}t_1 t_2 t_3 \dots_3$ ($t_m \in \{0,1,2\}$) и оператор дополнения $k(d) = 2 - d$:

$$t = \sum_{m=1}^{\infty} \frac{t_m}{3^m} \;\; (t_m \in \{0,1,2\}), \qquad k(d) = 2 - d, \qquad k^n(d) = \begin{cases} d & (n \text{ even}) \\ 2 - d & (n \text{ odd}) \end{cases}$$$$x_n = k^{t_2 + t_4 + \cdots + t_{2n-2}}(t_{2n-1}), \qquad y_n = k^{t_1 + t_3 + \cdots + t_{2n-1}}(t_{2n})$$

Поскольку $k^n(d)$ зависит только от чётности показателя $n$, в точках неоднозначности троичной записи (например, $t = 1/3 = 0{,}0222\dots_3 = 0{,}1000\dots_3$) смена $t_1 = 0$ (чётное) на $t_1 = 1$ (нечётное) включает оператор $k^1$, который обращает все последующие нули в двойки и идеально склеивает оба предела в точке $(1/3, 1)$!


3. Геометрическая рекурсия Гильберта (1891) и строгие аналитические доказательства

В 1891 году Давид Гильберт заменил разбиение Пеано $3 \times 3$ двоичной рекурсией на $2 \times 2 = 4$ квадрантах: на шаге $n$ отрезок $[0,1]$ делится на $4^n$ замкнутых подотрезков $I_{n,k}$ длины $4^{-n}$, а квадрат $[0,1]^2$ — на $4^n$ малых квадратов $Q_{n,k}$ со стороной $2^{-n}$, удовлетворяющих Аксиоме A (Смежность: $Q_{n,k}$ и $Q_{n,k+1}$ всегда имеют общую сторону) и Аксиоме B (Вложенность: $Q_{n,k} = \bigcup_{j=0}^3 Q_{n+1, 4k-j}$).

  flowchart TD
    A["Единичный отрезок I = [0,1] и единичный квадрат Q = [0,1]²"] --> B["Разбиение шага n: 4ⁿ отрезков I_{n,k} (длина 4⁻ⁿ)<br/>и 4ⁿ подквадратов Q_{n,k} (сторона 2⁻ⁿ, диагональ √2·2⁻ⁿ)"]
    B --> C["Аксиома A (Смежность): Q_{n,k} и Q_{n,k+1} всегда имеют общее ребро"]
    B --> D["Аксиома B (Вложенность): При m > n и t ∈ I_{n,k} точки H_n(t), H_m(t) ∈ Q_{n,k}"]
    C --> E["1/2-Гёльдерова непрерывность: ||H(t₁) - H(t₂)||₂ ≤ √6 · |t₁ - t₂|^{1/2}"]
    D --> F["Равномерная оценка Коши: sup_t ||H_m(t) - H_n(t)||₂ ≤ √2 · 2⁻ⁿ → 0"]
    F --> G["Равномерная сходимость в полном пространстве C([0,1], ℝ²): H(t) = lim_{n→∞} H_n(t)"]
    G --> H["Теорема 1 (Непрерывность): По теореме Вейерштрасса H(t) всюду непрерывна"]
    G --> I["Теорема 2 (Сюръективность): Вложенные отрезки и компактность ⇒ H([0,1]) = [0,1]²"]
    H --> J["Теорема 3 (Неинъективность): Кратные точки, напр. H(1/6)=H(1/2)=H(5/6)=(1/2,1/2)"]
    E --> K["Теорема 4 (Нигде не дифференцируемость): Разностное отношение ≥ 2^{n-1} → ∞"]
  1. Теорема 1 (Равномерная сходимость и непрерывность): Для любых $m > n \ge 1$ и $t \in I_{n,k}$ по Аксиоме B точки $H_n(t)$ и $H_m(t)$ лежат в одном подквадрате $Q_{n,k}$ диаметра $\sqrt{2}\cdot 2^{-n}$:
$$I_{n,k} = \left[ \frac{k-1}{4^n}, \, \frac{k}{4^n} \right], \qquad \|H_m - H_n\|_\infty = \sup_{t \in [0,1]} \|H_m(t) - H_n(t)\|_2 \le \operatorname{diam}(Q_{n,k}) = \frac{\sqrt{2}}{2^n} \quad (\forall m > n \ge 1)$$

Следовательно, $\{H_n\}$ — фундаментальная последовательность в банаховом пространстве $\mathcal{C}([0,1], \mathbb{R}^2)$, и её равномерный предел $H(t)$ непрерывен на $[0,1]$. 2. Теорема 2 (Сюръективность): Для любой точки $p \in [0,1]^2$ система вложенных подквадратов $Q_{n,k_n} \ni p$ задаёт систему вложенных отрезков $I_{n,k_n}$ длины $4^{-n} \to 0$ с единственной общей точкой $t^* \in [0,1]$, где $H(t^*) = p$:

$$\bigcap_{n=1}^{\infty} I_{n, k_n} = \{t^*\}, \qquad \|H(t^*) - p\|_2 \le \frac{\sqrt{2}}{2^n} \xrightarrow{n \to \infty} 0 \quad \Longrightarrow \quad H([0,1]) = [0,1]^2$$
  1. Теорема 3 (Кратные точки): Центр $(1/2, 1/2)$ проходится трижды ($H(1/6) = H(1/2) = H(5/6) = (1/2, 1/2)$), а в двоично-рациональных узлах сетки возникают четырёхкратные точки.
  2. Теорема 4 (Бесконечная длина, $\frac{1}{2}$-гёльдеровость и нигде не дифференцируемость): Длина ломаной $L(H_n) = 2^n - 2^{-n} \to \infty$. Для любого $t \in I_{n,k}$ хотя бы одна вершина $v_n = H(s_n)$ квадрата $Q_{n,k}$ удалена от $H(t)$ минимум на $2^{-(n+1)}$ при $|s_n - t| \le 4^{-n}$, поэтому разностное отношение расходится как $2^{n-1} \to \infty$ — $H(t)$ не дифференцируема ни в одной точке $t \in [0,1]$:
$$L(H_n) = (4^n - 1) 2^{-n} = 2^n - 2^{-n} \to +\infty, \qquad \|H(t_1) - H(t_2)\|_2 \le \sqrt{6}\, |t_1 - t_2|^{1/2}$$$$\frac{\|H(s_n) - H(t)\|_2}{|s_n - t|} \ge \frac{2^{-(n+1)}}{4^{-n}} = 2^{n-1} \xrightarrow{n \to \infty} +\infty$$

4. Разрешение кризиса размерности: топологическая размерность $\dim_T$ против размерности Хаусдорфа $D_H$

В 1911 году Л. Э. Я. Брауэр доказал теорему об инвариантности размерности ($\mathbb{R}^n \cong \mathbb{R}^m \iff n = m$) через локальные группы гомологий. Большая индуктивная / лебегова размерность покрытия $\dim_T$ определяется минимальной кратностью пересечения $d + 1$ открытых покрытий ($\dim_T([0,1]) = 1$, но $\dim_T([0,1]^2) = 2$ подобно тройным стыкам кирпичной кладки, что топологически объясняет неизбежность минимум тройных точек самопересечения!). Напротив, размерность Хаусдорфа (фрактальная размерность) $D_H$ измеряет масштабное заполнение:

$$H_k(U, U \setminus \{p\}; \mathbb{Z}) \cong \tilde{H}_{k-1}(S^{n-1}; \mathbb{Z}) \cong \begin{cases} \mathbb{Z} & (k = n) \\ 0 & (k \ne n) \end{cases}, \qquad \dim_T([0,1]) = 1 < \dim_T([0,1]^2) = 2$$$$D_H = \frac{\log N}{\log(1/r)} \quad \Longrightarrow \quad D_H(\text{Peano}) = \frac{\log 9}{\log 3} = 2, \qquad D_H(\text{Hilbert}) = \frac{\log 4}{\log 2} = 2$$

Кривая Гильберта за счёт бесконечного складывания повышает свою фрактальную размерность до $D_H = 2$, а за счёт самопересечений поднимает и топологическую размерность образа до $\dim_T = 2$.

Тип кривой / отображенияНепрерывностьИнъективность (без самопересечений)Сюръективность на $[0,1]^2$ДифференцируемостьТопологическая разм. $\dim_T(\text{Образ})$Разм. Хаусдорфа $D_H$2D мера Лебега $\mu_2$
Гладкая простая кривая (отрезок/дуга)Да ($C^\infty$)ДаНетВсюду дифференцируема$1$$1$$0$
Кривая Коха (снежинка)ДаДаНетНигде не дифференцируема$1$$\frac{\log 4}{\log 3} \approx 1{,}262$$0$
Кривая Осгуда (1903)ДаДа (жорданова дуга)Нет (пустая внутренность)Почти всюду не дифф.$1$$2$$> 0$ (положительная площадь!)
Чередование цифр КантораНет (разрывна)Да (биекция)ДаНигде не непр./дифф.$2$$2$$1$
Кривая Пеано (база 3, 1890)ДаНет (кратные точки)Да (заполняет квадрат)Нигде не дифференцируема$2$$\frac{\log 9}{\log 3} = 2$$1$
Кривая Гильберта (база 2, 1891)Да ($\frac{1}{2}$-Гёльдер)Нет (до 4-кратных точек)Да (заполняет квадрат)Нигде не дифференцируема$2$$\frac{\log 4}{\log 2} = 2$$1$

5. Приложения в компьютерных науках: индексация многомерного мира в 1D-памяти

Поскольку компьютерная память (адреса DRAM, блоки SSD, ключи B+-деревьев) одномерна, а геопространственные и физические данные многомерны, дискретная кривая Гильберта обеспечивает оптимальное сохранение локальности (Locality Preservation) благодаря $\frac{1}{2}$-гёльдеровости и квадродеревянной вложенности:

$$z = \text{Morton}(x, y) = (y_{n-1} x_{n-1} \dots y_1 x_1 y_0 x_0)_2, \qquad C_{\text{dilation}} = \sup_{t_1 \ne t_2} \frac{\|\gamma(t_1) - \gamma(t_2)\|_2^2}{|t_1 - t_2|} = 6 \;\; (\text{Hilbert})$$

В отличие от кривой Мортона (Z-кривой), которая просто чередует биты координат и совершает длинные диагональные скачки на границах квадрантов ($C_{\text{dilation}} = \infty$), кривая Гильберта на каждом шаге $t \to t+1$ смещается ровно на манхэттенское расстояние $1$ ($C_{\text{dilation}} = 6$), сокращая число кластеров поиска в B+-дереве на $25\%\text{–}40\%$.

  1. Google S2 Geometry Library (Google Maps, Uber, MongoDB): Проецирует земную сферу $S^2$ на $6$ граней куба, выравнивает площади ячеек нелинейным преобразованием и покрывает каждую грань 30-уровневой кривой Гильберта $H_{30}$. Каждый участок Земли размером $0{,}7\,\text{см} \times 0{,}7\,\text{см}$ кодируется одним 64-битным целым числом (S2CellId), превращая двумерные геозапросы в молниеносное 1D-сканирование диапазонов в B+-деревьях.
  2. Hilbert R-Tree и суперкомпьютерные расчёты (HPC): Сортировка полигонов по индексу Гильберта минимизирует перекрытие узлов R-дерева (PostGIS, Apache Sedona), а 3D-кривая Гильберта разрезает октодеревья в космологических симуляциях (Gadget-4, AMReX) для идеальной динамической балансировки нагрузки.
comments powered by Disqus