跳到主要内容

同调论基础:拓扑不变量的代数化

同调论 (Homology) 的核心思想是:通过代数方式统计空间的“孔洞”数量。相比基本群(非交换且难以计算),同调群通常是交换群,具有极佳的计算特性。


一、单纯同调 (Simplicial Homology)

1. 单纯形 (Simplex)

  • 0-单纯形:点。
  • 1-单纯形:线段。
  • 2-单纯形:三角形。
  • n-单纯形nn 维广义三角形。

2. 链复形 (Chain Complex)

KK 为一个单纯复形。定义 Cn(K)C_n(K) 为由所有 nn-单纯形生成的自由阿贝尔群。 边缘算子 (Boundary Operator) n:CnCn1\partial_n: C_n \to C_{n-1}n[v0,,vn]=i=0n(1)i[v0,,v^i,,vn]\partial_n [v_0, \dots, v_n] = \sum_{i=0}^n (-1)^i [v_0, \dots, \hat{v}_i, \dots, v_n] 关键性质n1n=0\partial_{n-1} \circ \partial_n = 0。这保证了“边缘的边缘是空的”。

3. 同调群的定义

  • 循环 (Cycles)Zn=kernZ_n = \ker \partial_n(没有边缘的链)。
  • 边缘 (Boundaries)Bn=im n+1B_n = \text{im } \partial_{n+1}(是高维物体边缘的链)。 第 nn 阶同调群定义为: Hn(K)=Zn/BnH_n(K) = Z_n / B_n 其秩(自由部分的维数)称为 Betti 数 βn\beta_n,直观上代表 nn 维孔洞的数量。

二、拓扑性质分析:欧拉示性数

欧拉-庞加莱公式 (Euler-Poincaré Formula): 对于有限复形 KK,其交错和是不变量: χ(K)=n=0dimK(1)n(n-单纯形的个数)=n=0dimK(1)nβn\chi(K) = \sum_{n=0}^{\dim K} (-1)^n \cdot (\text{n-单纯形的个数}) = \sum_{n=0}^{\dim K} (-1)^n \beta_n

空间β0\beta_0β1\beta_1β2\beta_2χ\chi拓扑特征
球面 S2S^210121个连通分量,1个空腔
环面 T2T^212102个独立环路
实射影平面 RP2\mathbb{RP}^21001不可定向 (存在扭转)

✍️ 深度练习与 C++ 模拟

练习 1:证明 2=0\partial^2 = 0

证明对于 2-单纯形 σ=[v0,v1,v2]\sigma = [v_0, v_1, v_2],有 1(2σ)=0\partial_1(\partial_2 \sigma) = 0

Check Solution

证明:

  1. 2[v0,v1,v2]=[v1,v2][v0,v2]+[v0,v1]\partial_2 [v_0, v_1, v_2] = [v_1, v_2] - [v_0, v_2] + [v_0, v_1]
  2. 对每一项应用 1\partial_1
    • 1[v1,v2]=[v2][v1]\partial_1 [v_1, v_2] = [v_2] - [v_1]
    • 1[v0,v2]=[v2][v0]\partial_1 [v_0, v_2] = [v_2] - [v_0]
    • 1[v0,v1]=[v1][v0]\partial_1 [v_0, v_1] = [v_1] - [v_0]
  3. 加总:([v2][v1])([v2][v0])+([v1][v0])=v2v1v2+v0+v1v0=0([v_2] - [v_1]) - ([v_2] - [v_0]) + ([v_1] - [v_0]) = v_2 - v_1 - v_2 + v_0 + v_1 - v_0 = 0\square

练习 2:C++ 模拟计算 Betti 数 (0 维)

编写 C++ 程序,给定一个图(1维复形)的顶点和边,利用并查集计算其 0 维 Betti 数 β0\beta_0(连通分量数)。

Check Solution
#include <iostream>
#include <vector>
#include <numeric>

/**
* @brief 0-th Betti Number Calculator
* 利用并查集计算单纯复形的连通分量数
*/
struct DSU {
std::vector<int> parent;
int components;
DSU(int n) : parent(n), components(n) {
std::iota(parent.begin(), parent.end(), 0);
}
int find(int i) {
if (parent[i] == i) return i;
return parent[i] = find(parent[i]);
}
void unite(int i, int j) {
int root_i = find(i);
int root_j = find(j);
if (root_i != root_j) {
parent[root_i] = root_j;
components--;
}
}
};

int main() {
// 模拟一个三角形 K = {[0],[1],[2], [0,1],[1,2],[2,0]}
int num_vertices = 3;
DSU dsu(num_vertices);

std::vector<std::pair<int, int>> edges = {{0,1}, {1,2}, {2,0}};

for (auto& edge : edges) {
dsu.unite(edge.first, edge.second);
}

std::cout << "0-th Betti Number (beta_0): " << dsu.components << std::endl;
std::cout << "Explanation: The triangle is connected." << std::endl;

return 0;
}

模拟分析: 在同调论中,β0\beta_0 代表连通分量。上述代码通过维护并查集,动态地从 0-单纯形(点)构造 1-单纯形(边)。最终 β0=1\beta_0 = 1 表明该复形是路径连通的。

练习 3:符号推导——计算空心三角形的 β1\beta_1

已知空心三角形有 3 个顶点、3 条边,且没有 2-单纯形面。利用欧拉公式计算其 β1\beta_1

Check Solution

解析:

  1. 顶点数 V=3V = 3,边数 E=3E = 3,面数 F=0F = 0
  2. χ=VE+F=33+0=0\chi = V - E + F = 3 - 3 + 0 = 0
  3. 同时 χ=β0β1\chi = \beta_0 - \beta_1
  4. 已知连通分量 β0=1\beta_0 = 1
  5. 1β1=0    β1=11 - \beta_1 = 0 \implies \beta_1 = 1直观意义:空心三角形围成了一个“孔洞”。 \square

🚀 同调论的现代演进:持久同调 (PH)

在拓扑数据分析 (TDA) 中,研究人员利用 持久同调 (Persistent Homology) 观察随着阈值变化,同调特征(孔洞)的生存时间(Persistence)。这被广泛应用于生物蛋白质结构分析与复杂网络降维。