Intro to Homology

Chain Groups and the Chain Complex Cycles, Boundaries, and Homology The Euler-Poincaré Theorem Computation and Applications

Chain Groups and the Chain Complex

In Incidence Structure & Cycle/Cut Spaces, we discovered that the oriented incidence matrix \(\boldsymbol{B}\) of a graph encodes far more than adjacency. Its kernel \(\ker \boldsymbol{B}\) is the cycle space \(Z_1\), the set of all edge-flows that circulate without accumulating at any vertex. In Simplicial Complexes, we generalized this operator to all dimensions. The boundary operator \(\partial_k : C_k \to C_{k-1}\) maps \(k\)-chains to \((k-1)\)-chains, and the fundamental property \(\partial^2 = 0\) guarantees that \(\operatorname{im}(\partial_{k+1}) \subseteq \ker(\partial_k)\), so every boundary is a cycle. We now ask the converse question: is every cycle a boundary? The answer, measured precisely by the quotient \(\ker(\partial_k) / \operatorname{im}(\partial_{k+1})\), is homology.

We pause for a note on notation. Throughout this page, \(B_k = \operatorname{im}(\partial_{k+1})\) denotes the \(k\)-th boundary group, the set of \(k\)-chains that are boundaries of \((k+1)\)-chains. This is not the oriented incidence matrix \(\boldsymbol{B}\) (boldface). The two are related, since \(\boldsymbol{B}\) represents \(\partial_1\) up to sign and hence \(B_0 = \operatorname{im}(\partial_1) = \operatorname{im}(\boldsymbol{B})\). Nevertheless, the italic \(B_k\) and the boldface \(\boldsymbol{B}\) are different objects. Likewise, the cut space \(B_1(G) = \operatorname{im}(\boldsymbol{B}^\top)\) of a graph shares the letter but not the meaning, since for a graph our \(B_1\) is \(\{0\}\).

Cycles and Boundaries

Let \(K\) be a simplicial complex with chain groups \(C_k = C_k(K; \mathbb{R})\) and boundary operators \(\partial_k\), as defined on the previous page. Recall the chain complex: \[ \begin{align*} \cdots \xrightarrow{\partial_{k+2}} C_{k+1} \xrightarrow{\partial_{k+1}} C_k &\xrightarrow{\partial_k} C_{k-1} \xrightarrow{\partial_{k-1}} \cdots \\\\ &\xrightarrow{\partial_1} C_0 \xrightarrow{\partial_0} 0. \end{align*} \] At each level \(k\), two subspaces of \(C_k\) play a central role.

Definition: Cycle Group and Boundary Group

The \(k\)-th cycle group is the kernel of \(\partial_k\): \[ Z_k = \ker(\partial_k) = \{ c \in C_k \mid \partial_k(c) = 0 \}. \] Its elements are called \(k\)-cycles: chains with empty boundary. The \(k\)-th boundary group is the image of \(\partial_{k+1}\): \[ B_k = \operatorname{im}(\partial_{k+1}) = \{ \partial_{k+1}(d) \mid d \in C_{k+1} \}. \] Its elements are called \(k\)-boundaries: chains that are the boundary of some \((k+1)\)-chain.

For graphs (\(1\)-complexes), the cycle group recovers the cycle space. Since \(\partial_1\) and \(\boldsymbol{B}\) differ only by sign, they have the same kernel, so \(Z_1 = \ker(\partial_1) = \ker(\boldsymbol{B})\) consists of the edge-flows that satisfy Kirchhoff's current law at every vertex. The boundary group \(B_1 = \operatorname{im}(\partial_2)\) consists of 1-chains that bound some 2-chain. But a graph has no 2-simplices, so \(C_2 = \{0\}\) and \(B_1 = \{0\}\). Hence no nonzero 1-cycle in a graph is a boundary. The situation changes when the complex has higher-dimensional simplices, and homology is precisely the tool that measures that change.

The inclusion \(B_k \subseteq Z_k\) is a direct consequence of the fundamental property \(\partial^2 = 0\). If \(c = \partial_{k+1}(d) \in B_k\), then \(\partial_k(c) = \partial_k(\partial_{k+1}(d)) = 0\), so \(c \in Z_k\). In words, every boundary is a cycle. Whether the converse holds, that is, whether every cycle is a boundary, depends on the topology of the complex.

Cycles, Boundaries, and Homology

We now arrive at the central construction of algebraic topology. Since \(B_k \subseteq Z_k\), we can form the quotient vector space \(Z_k / B_k\). Its elements are the equivalence classes \([z] = \{z + b \mid b \in B_k\}\), and its operations are \([z_1] + [z_2] = [z_1 + z_2]\) and \(\alpha [z] = [\alpha z]\). (These are well-defined precisely because \(B_k\) is a subspace of \(Z_k\).)

The quotient collapses two cycles to the same class whenever they differ by a boundary. Intuitively, the two cycles then jointly bound a \((k+1)\)-dimensional region, and "filling in" that region carries one to the other. What remains after this collapse is the essential cycle structure: the "holes" that cannot be filled.

Definition: Homology Group and Betti Number

The \(k\)-th homology group of \(K\) (with real coefficients) is the quotient vector space \[ H_k(K; \mathbb{R}) = Z_k \,/\, B_k = \ker(\partial_k) \,/\, \operatorname{im}(\partial_{k+1}). \] Two \(k\)-cycles \(z, z' \in Z_k\) represent the same element of \(H_k\) if and only if their difference is a boundary: \(z - z' \in B_k\). Such cycles are called homologous, written \(z \sim z'\). The dimension \[ \beta_k = \dim H_k(K; \mathbb{R}) \] is the \(k\)-th Betti number. It counts the number of independent \(k\)-dimensional "holes" in \(K\).

The first three Betti numbers have a direct geometric reading:

We now compute these for several examples, starting from the simplest and building to a complete matrix-level calculation.

\(H_0\): Connected Components

By convention, \(\partial_0 = 0\), so every 0-chain is a 0-cycle: \(Z_0 = \ker(\partial_0) = C_0 = \mathbb{R}^{f_0}\). The boundary group \(B_0 = \operatorname{im}(\partial_1)\) consists of all 0-chains that can be written as the boundary of a 1-chain. The boundary of an oriented edge \([a, b]\) is \([b] - [a]\), a difference of two vertices. Hence \(B_0\) is the subspace of \(\mathbb{R}^{f_0}\) spanned by all difference vectors \(\mathbf{e}_b - \mathbf{e}_a\) for edges \(\{a, b\} \in K\).

The quotient \(H_0 = \mathbb{R}^{f_0} / B_0\) identifies two vertices whenever they are connected by a path. Within each connected component, all vertices therefore represent the same class. Thus \(\beta_0 = \dim H_0\) equals the number of connected components of \(K\).

We can verify this with rank-nullity. The map \(\partial_1 : C_1 \to C_0\) has image \(B_0\). Let \(c\) be the number of connected components. Since \(\partial_1 = -\boldsymbol{B}\) has the same rank as \(\boldsymbol{B}\), the rank of the incidence matrix gives \(\operatorname{rank}(\partial_1) = f_0 - c\). Each component contributes one dimension to the kernel of \(\partial_1^\top\), or equivalently, removes one from the rank of \(\partial_1\). Therefore \[ \beta_0 = \dim(C_0 / B_0) = f_0 - \operatorname{rank}(\partial_1) = f_0 - (f_0 - c) = c. \]

\(H_1\) for Graphs: Recovery of the Cycle Rank

For a graph (1-complex), \(C_2 = \{0\}\), so \(B_1 = \operatorname{im}(\partial_2) = \{0\}\). This means \[ H_1 = Z_1 / B_1 = Z_1 / \{0\} \cong Z_1 = \ker(\partial_1). \] The dimension formula for the cycle space gives \(\dim Z_1 = |E| - |V| + c\), where \(|V| = f_0\) and \(|E| = f_1\). Thus \(\beta_1 = |E| - |V| + c\), the number of independent cycles in the graph. For a connected graph, \(\beta_1 = |E| - |V| + 1\). Each edge beyond a spanning tree creates exactly one independent loop.

The graph case is the "prototype" of homology. In a graph, every nonzero cycle is interesting. None of them bounds anything, because there are no 2-simplices to fill them in. When we add 2-simplices (triangles), some cycles become boundaries and \(H_1\) shrinks. The next example illustrates this phenomenon vividly.

The Central Example: Hollow vs. Solid Tetrahedron

We already computed the f-vectors and Euler characteristics of the hollow and solid tetrahedra. We now use homology to explain why their Euler characteristics differ.

Setup. Let the vertices be \(\{1, 2, 3, 4\}\). We orient the edges as \(e_1 = [1,2]\), \(e_2 = [1,3]\), \(e_3 = [1,4]\), \(e_4 = [2,3]\), \(e_5 = [2,4]\), \(e_6 = [3,4]\), and the four triangular faces as \(\sigma_1 = [1,2,3]\), \(\sigma_2 = [1,2,4]\), \(\sigma_3 = [1,3,4]\), \(\sigma_4 = [2,3,4]\).

The boundary matrix \([\partial_1]\). This is the \(4 \times 6\) matrix mapping the edge space \(C_1 = \mathbb{R}^6\) to the vertex space \(C_0 = \mathbb{R}^4\). The column for edge \([a, b]\) has \(-1\) in row \(a\) and \(+1\) in row \(b\): \[ [\partial_1] = \begin{pmatrix} -1 & -1 & -1 & 0 & 0 & 0 \\ 1 & 0 & 0 & -1 & -1 & 0 \\ 0 & 1 & 0 & 1 & 0 & -1 \\ 0 & 0 & 1 & 0 & 1 & 1 \end{pmatrix}. \] This has rank 3 (one less than the number of vertices, since the complex is connected).

The boundary matrix \([\partial_2]\). This is the \(6 \times 4\) matrix mapping the triangle space \(C_2 = \mathbb{R}^4\) to \(C_1 = \mathbb{R}^6\). The column for triangle \([a, b, c]\) has the entry pattern from the boundary formula \(\partial_2[a,b,c] = [b,c] - [a,c] + [a,b]\): \[ [\partial_2] = \begin{pmatrix} 1 & 1 & 0 & 0 \\ -1 & 0 & 1 & 0 \\ 0 & -1 & -1 & 0 \\ 1 & 0 & 0 & 1 \\ 0 & 1 & 0 & -1 \\ 0 & 0 & 1 & 1 \end{pmatrix}. \]

Let us verify \(\partial^2 = 0\). The product \([\partial_1][\partial_2]\) is a \(4 \times 4\) matrix, and each column computes \(\partial_1(\partial_2(\sigma_j))\), the boundary of the boundary of a triangle. For instance, the first column is \[ \begin{align*} [\partial_1] \cdot (1, -1, 0, 1, 0, 0)^\top &= (-1 + 1, 1 - 1, -1 + 1, 0) \\\\ &= (0, 0, 0, 0). \end{align*} \] The remaining three columns vanish in the same way, so \([\partial_1][\partial_2] = \mathbf{0}_{4 \times 4}\), confirming \(\partial^2 = 0\) at the matrix level.

Case 1: The Hollow Tetrahedron (\(\partial \Delta^3\)). This complex has \(\boldsymbol{f} = (4, 6, 4)\): four vertices, six edges, four triangles, and no 3-simplex. We compute all Betti numbers.

Computation: Betti Numbers of the Hollow Tetrahedron

\(\beta_0\). The complex is connected, so \(\beta_0 = 1\).

\(\beta_1\). We need \(\dim Z_1 = \dim \ker(\partial_1) = f_1 - \operatorname{rank}(\partial_1) = 6 - 3 = 3\) and \(\dim B_1 = \operatorname{rank}(\partial_2)\). The four columns of \([\partial_2]\) satisfy exactly one linear dependence up to scaling. Rows 1, 2, and 4 of \([\partial_2]\) show that a combination \(c_1\sigma_1 + c_2\sigma_2 + c_3\sigma_3 + c_4\sigma_4\) has zero boundary only if \(c_1 + c_2 = 0\), \(-c_1 + c_3 = 0\), and \(c_1 + c_4 = 0\), so it is a multiple of \(-\sigma_1 + \sigma_2 - \sigma_3 + \sigma_4\). This combination does map to zero under \(\partial_2\), as the remaining rows confirm, and geometrically it is the oriented surface of the tetrahedron, a closed 2-cycle. Thus \(\dim \ker(\partial_2) = 1\) and \(\operatorname{rank}(\partial_2) = 4 - 1 = 3\). Therefore \[ \beta_1 = \dim Z_1 - \dim B_1 = 3 - 3 = 0. \] Every 1-cycle is the boundary of some 2-chain. The triangular faces fill in all loops.

\(\beta_2\). We need \(\dim Z_2 = \dim \ker(\partial_2) = f_2 - \operatorname{rank}(\partial_2) = 4 - 3 = 1\). The kernel is spanned by the single vector \(-\sigma_1 + \sigma_2 - \sigma_3 + \sigma_4\), which is the oriented shell of the tetrahedron identified above. Since there is no 3-simplex, \(B_2 = \operatorname{im}(\partial_3) = \{0\}\). Therefore \[ \beta_2 = \dim Z_2 - \dim B_2 = 1 - 0 = 1. \]

Summary. \((\beta_0, \beta_1, \beta_2) = (1, 0, 1)\). The hollow tetrahedron is connected (\(\beta_0 = 1\)), has no 1-dimensional holes (\(\beta_1 = 0\)), and encloses one 2-dimensional cavity (\(\beta_2 = 1\)). Topologically, this is a sphere \(S^2\).

Check. \(\chi = f_0 - f_1 + f_2 = 4 - 6 + 4 = 2\) and \(\beta_0 - \beta_1 + \beta_2 = 1 - 0 + 1 = 2\).

Case 2: The Solid Tetrahedron (\(\Delta^3\)). Now we add the 3-simplex \(\tau = [1, 2, 3, 4]\) to the complex. The f-vector becomes \(\boldsymbol{f} = (4, 6, 4, 1)\). The chain groups and boundary operators in dimensions up to 2 are unchanged, so \(\beta_0 = 1\) and \(\beta_1 = 0\) as before. What is new is \(C_3 = \mathbb{R}^1\), and the boundary of the 3-simplex is \[ \begin{align*} \partial_3 [1,2,3,4] &= [2,3,4] - [1,3,4] + [1,2,4] - [1,2,3] \\\\ &= \sigma_4 - \sigma_3 + \sigma_2 - \sigma_1. \end{align*} \] This is exactly the generator of \(\ker(\partial_2)\) that we found above. Therefore \(B_2 = \operatorname{im}(\partial_3)\) is spanned by this same vector, which means \(B_2 = Z_2\). The quotient collapses: \[ H_2 = Z_2 / B_2 = Z_2 / Z_2 = \{0\}, \quad \beta_2 = 0. \]

The 3-simplex "fills in" the cavity. The cycle that was the closed surface is now the boundary of the solid interior. Since \(\partial_3\) is nonzero on the one-dimensional space \(C_3\), we have \(Z_3 = \ker(\partial_3) = \{0\}\) and \(\beta_3 = 0\). The Betti numbers become \((\beta_0, \beta_1, \beta_2, \beta_3) = (1, 0, 0, 0)\), the same as those of a single point. This is what we expect of a contractible space (one that can be continuously deformed to a point), such as the solid tetrahedron.

The Topological Meaning of Filling

The hollow-vs-solid comparison reveals the mechanism of homology in its purest form. The 2-cycle (the closed surface) is the same object in both cases, and it lives in \(Z_2\) regardless. What changes is whether that cycle is the boundary of something. Adding the 3-simplex creates a 3-chain whose boundary is precisely this cycle. The cycle is thereby promoted from a non-trivial homology class to a trivial one, and in the quotient \(Z_2 / B_2\) it becomes zero. This is the algebraic counterpart of a topological fact: a sphere encloses a void, but a filled ball does not.

Higher-Dimensional Example: The Torus

A minimal triangulation of the torus uses \(\boldsymbol{f} = (f_0, f_1, f_2) = (7, 21, 14)\). The boundary matrices are too large for hand computation (\([\partial_2]\) is \(21 \times 14\)), but the rank calculations yield \[ (\beta_0, \beta_1, \beta_2) = (1, 2, 1). \]

The torus is connected (\(\beta_0 = 1\)), has two independent 1-dimensional loops (\(\beta_1 = 2\)), and encloses one cavity (\(\beta_2 = 1\)). One loop goes "around the ring" and the other goes "through the hole". We can verify the Euler-Poincaré relation: \[ \chi = 7 - 21 + 14 = 0 = 1 - 2 + 1 = \beta_0 - \beta_1 + \beta_2. \] This also matches Euler's formula for orientable surfaces, which gives \(\chi = 2 - 2g = 0\) for the torus of genus \(g = 1\).

The Euler-Poincaré Theorem

In Planar Graphs & Euler's Formula, we proved that \(V - E + F = 2\) for any connected planar graph. We then generalized the left-hand side to the Euler characteristic \(\chi(K) = \sum (-1)^k f_k\), and noted that it is a topological invariant. That invariance rests on the topological invariance of homology, which we state without proof. What we can now prove is the identity that ties \(\chi\) to homology. The key insight is that the Euler characteristic, which is defined by counting simplices, is controlled by the ranks of the boundary operators, and therefore by homology.

Theorem: The Euler-Poincaré Formula

Let \(K\) be a finite simplicial complex of dimension \(d\), with f-vector \((f_0, f_1, \ldots, f_d)\) and Betti numbers \(\beta_0, \beta_1, \ldots, \beta_d\). Then \[ \chi(K) = \sum_{k=0}^{d} (-1)^k f_k = \sum_{k=0}^{d} (-1)^k \beta_k. \]

Before the proof, let us set up the notation. For each \(k\), write \(r_k = \operatorname{rank}(\partial_k)\) for the rank of the boundary operator \(\partial_k : C_k \to C_{k-1}\). The image of \(\partial_k\) lands in \(C_{k-1}\), so \(r_k = \dim B_{k-1}\) (the dimension of the \((k-1)\)-th boundary group). By convention, \(r_0 = 0\) (since \(\partial_0 = 0\)) and \(r_{d+1} = 0\) (since \(C_{d+1} = \{0\}\)).

Proof:

By the rank-nullity theorem, applied to \(\partial_k : C_k \to C_{k-1}\): \[ f_k = \dim C_k = \dim(\ker \partial_k) + \dim(\operatorname{im} \partial_k) = \dim Z_k + r_k. \] Since \(r_k = \dim(\operatorname{im} \partial_k) = \dim B_{k-1}\), we can rewrite this as \[ f_k = \dim Z_k + \dim B_{k-1}. \]

Now form the alternating sum and substitute this expression for \(f_k\): \[ \begin{align*} \sum_{k=0}^{d} (-1)^k f_k &= \sum_{k=0}^{d} (-1)^k \bigl(\dim Z_k + \dim B_{k-1}\bigr) \\\\ &= \sum_{k=0}^{d} (-1)^k \dim Z_k + \sum_{k=0}^{d} (-1)^k \dim B_{k-1}. \end{align*} \] In the second sum, substitute \(j = k - 1\) (so \(k = j + 1\) and the sign \((-1)^k = (-1)^{j+1} = -(-1)^j\)): \[ \begin{align*} \sum_{k=0}^{d} (-1)^k \dim B_{k-1} &= (-1)^0 \dim B_{-1} + \sum_{j=0}^{d-1} (-1)^{j+1} \dim B_j \\\\ &= 0 - \sum_{j=0}^{d-1} (-1)^j \dim B_j, \end{align*} \] where \(\dim B_{-1} = 0\) by convention. Since \(B_d = \operatorname{im}(\partial_{d+1}) = \{0\}\), the upper limit can be extended to \(d\). Combining: \[ \begin{align*} \sum_{k=0}^{d} (-1)^k f_k &= \sum_{k=0}^{d} (-1)^k \dim Z_k - \sum_{k=0}^{d} (-1)^k \dim B_k \\\\ &= \sum_{k=0}^{d} (-1)^k (\dim Z_k - \dim B_k). \end{align*} \] But \(\dim Z_k - \dim B_k = \dim(Z_k / B_k) = \dim H_k = \beta_k\), so \[ \sum_{k=0}^{d} (-1)^k f_k = \sum_{k=0}^{d} (-1)^k \beta_k. \]

The mechanism of this proof is a telescoping structure. Since \(\dim Z_k = \beta_k + \dim B_k\), the identity \(f_k = \dim Z_k + \dim B_{k-1}\) becomes \(f_k = \beta_k + \dim B_k + \dim B_{k-1}\). Each boundary dimension \(\dim B_k\) therefore enters the alternating sum twice with opposite signs, once through \(f_k\) and once through \(f_{k+1}\). These contributions cancel, leaving only the Betti numbers. The Euler-Poincaré identity is also the bridge by which the invariance of the Betti numbers passes to the Euler characteristic.

From Euler to Poincaré: The Meeting of Geometry and Algebra

In 1752, Euler observed that \(V - E + F = 2\) for every convex polyhedron, a statement about the geometry of three-dimensional objects. For over a century, this remained a fact about counting. In the 1890s, Poincaré revolutionized the subject by introducing homology. His work revealed that Euler's combinatorial formula is governed by the ranks of linear maps.

The theorem we have just proved makes this precise. The alternating sum of simplex counts equals the alternating sum of Betti numbers, and the Betti numbers are determined by the kernels and images of the boundary operators, which are objects from linear algebra. What Euler discovered by inspecting polyhedra, Poincaré explained by computing ranks of matrices.

Let us verify the theorem against our earlier examples:

Verification:

Hollow tetrahedron. \(\chi = 4 - 6 + 4 = 2\) and \(\beta_0 - \beta_1 + \beta_2 = 1 - 0 + 1 = 2\).

Solid tetrahedron. \(\chi = 4 - 6 + 4 - 1 = 1\) and \(\beta_0 - \beta_1 + \beta_2 - \beta_3 = 1 - 0 + 0 - 0 = 1\).

Torus. \(\chi = 7 - 21 + 14 = 0\) and \(\beta_0 - \beta_1 + \beta_2 = 1 - 2 + 1 = 0\).

Connected graph. \(\chi = V - E\) and \(\beta_0 - \beta_1 = 1 - (E - V + 1) = V - E\).

In particular, Euler's formula \(V - E + F = 2\) for the sphere follows from the Euler-Poincaré theorem. Since homology is a topological invariant, every triangulation of \(S^2\) has the Betti numbers \((1, 0, 1)\) that we computed for the hollow tetrahedron, so \[ V - E + F = \beta_0 - \beta_1 + \beta_2 = 1 - 0 + 1 = 2. \]

Computation and Applications

Over \(\mathbb{R}\), computing homology reduces to linear algebra. Given the boundary matrices \([\partial_k]\), the Betti numbers are determined entirely by their ranks:

Theorem: The Betti Number Formula

For a finite simplicial complex \(K\) of dimension \(d\) with f-vector \((f_0, f_1, \ldots, f_d)\) and boundary matrices \([\partial_k] \in \mathbb{R}^{f_{k-1} \times f_k}\) for \(1 \leq k \leq d\), the Betti numbers are \[ \beta_k = f_k - \operatorname{rank}(\partial_k) - \operatorname{rank}(\partial_{k+1}), \quad 0 \leq k \leq d, \] where \(\operatorname{rank}(\partial_0) = \operatorname{rank}(\partial_{d+1}) = 0\) by the conventions \(\partial_0 = 0\) and \(C_{d+1} = \{0\}\).

Derivation:

By rank-nullity, \(\dim Z_k = \dim \ker(\partial_k) = f_k - \operatorname{rank}(\partial_k)\). By definition, \(\dim B_k = \dim \operatorname{im}(\partial_{k+1}) = \operatorname{rank}(\partial_{k+1})\). Since \(\beta_k = \dim Z_k - \dim B_k\), we obtain the formula.

This formula reduces the topological question "how many \(k\)-dimensional holes does \(K\) have?" to the rank computation of two sparse, integer-valued matrices. The boundary matrices are sparse (each column has at most \(k + 1\) nonzero entries), so the rank computation is efficient, and simplicial homology is immediately implementable.

Persistent Homology and Topological Data Analysis

The Vietoris-Rips and Čech complexes construct a simplicial complex from point-cloud data. Given a set of points and a distance threshold \(\varepsilon\), we form a simplicial complex whose simplices are determined by the proximity of the points. But a single threshold \(\varepsilon\) is arbitrary. Persistent homology resolves this by tracking how the homology changes as \(\varepsilon\) increases from \(0\) to \(\infty\).

As \(\varepsilon\) grows, more edges, triangles, and higher simplices appear, and the complexes form a filtration: a nested sequence of subcomplexes \[ \emptyset = K_0 \subseteq K_1 \subseteq K_2 \subseteq \cdots \subseteq K_m = K. \] Each homology class in \(H_k(K_i)\) is either "born" (a new cycle appears that is not a boundary) or "dies" (an existing cycle becomes a boundary as a higher-dimensional simplex fills it in). The lifespan of each class, given by its birth and death thresholds, is recorded in a persistence diagram (or equivalently, a barcode): a collection of intervals \([b_i, d_i)\) in the \(\varepsilon\)-axis.

Long bars in the barcode correspond to robust topological features, namely genuine holes that persist across a wide range of scales. Short bars are typically noise. This distinction between signal and noise is the foundational principle of Topological Data Analysis (TDA). The shape of data is revealed not by a single snapshot, but by the persistence of its homological features across the filtration. The algebraic machinery is exactly what we built on this page. Cycle groups, boundary groups, and their quotients are simply applied to a one-parameter family of complexes.

The Discrete Hodge Theorem

Recall the Hodge Laplacian \[ \boldsymbol{L}_k = \partial_{k+1}\partial_{k+1}^\top + \partial_k^\top \partial_k, \] which operates on \(k\)-chains by measuring their "roughness" via both upper and lower adjacencies. A \(k\)-chain \(h\) in the kernel of \(\boldsymbol{L}_k\) must satisfy both \(\partial_k h = 0\) (it is a cycle) and \(\partial_{k+1}^\top h = 0\) (it is orthogonal to all boundaries from above). Such chains are called harmonic.

Theorem: Discrete Hodge Theorem

The space of harmonic \(k\)-chains is isomorphic to the \(k\)-th homology group: \[ \ker(\boldsymbol{L}_k) \cong H_k(K; \mathbb{R}). \] In particular, \(\dim \ker(\boldsymbol{L}_k) = \beta_k\).

Sketch:

Using the inner product on \(C_k\) for which the oriented simplex basis is orthonormal (under this convention, \(\partial_k^\top\) is exactly the adjoint of \(\partial_k\)), the operator \(\boldsymbol{L}_k\) is symmetric positive semi-definite. Each summand \(\partial_{k+1}\partial_{k+1}^\top\) and \(\partial_k^\top \partial_k\) has the form \(MM^\top\), and \(\langle \boldsymbol{L}_k h, h \rangle = \|\partial_{k+1}^\top h\|^2 + \|\partial_k h\|^2\). Hence \(\boldsymbol{L}_k h = 0\) if and only if both terms vanish, that is, \(h \in Z_k = \ker(\partial_k)\) and \(h \perp B_k = \operatorname{im}(\partial_{k+1})\). The second condition holds because \(\partial_{k+1}^\top h = 0\) means that \(h\) is orthogonal to every element of \(\operatorname{im}(\partial_{k+1})\).

Each cycle \(z \in Z_k\) decomposes uniquely as \(z = h + b\) with \(h\) harmonic and \(b \in B_k\) (orthogonal projection onto \(B_k\)), so the map \([z] \mapsto h\) gives a vector-space isomorphism \(H_k = Z_k / B_k \cong \ker(\boldsymbol{L}_k)\). The map is well-defined because cycles in the same class differ by an element of \(B_k\), which the projection removes. It is injective because \(h = 0\) forces \(z \in B_k\), and surjective because each harmonic chain is a cycle whose own harmonic part is itself.

The Hodge theorem gives each homology class a canonical representative, namely the unique harmonic chain in its equivalence class, and connects homology to spectral theory. The Betti number \(\beta_k\) is the multiplicity of the eigenvalue \(0\) in the spectrum of \(\boldsymbol{L}_k\). This connection is the foundation of the Hodge decomposition, which splits every \(k\)-chain into a gradient component, a curl component, and a harmonic component. The decomposition is the higher-dimensional analogue of the orthogonal decomposition of edge flows from graph theory.

Connection to Simplicial Neural Networks

Classical Graph Neural Networks propagate signals on vertices using the graph Laplacian \(\boldsymbol{L}_0\). Simplicial Neural Networks (SNNs) generalize this to higher-dimensional signals. A 1-chain (such as traffic flow on a road network) is processed via \(\boldsymbol{L}_1\), and a 2-chain (such as flux through a surface) via \(\boldsymbol{L}_2\). The gradient, curl, and harmonic components of the Hodge decomposition are invariant subspaces of \(\boldsymbol{L}_k\), so a filter built from \(\boldsymbol{L}_k\) acts on each of them separately, and the homology groups \(H_k\) determine the dimension of the harmonic component that no amount of message passing can dissipate. The Betti numbers are thus architectural constraints, since they count the independent signals that are topologically protected from diffusion.