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)\) — 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.
A note on notation before we proceed. 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) from Incidence Structure. The
two are related — \(\boldsymbol{B}\) represents \(\partial_1\) (up to sign), so \(B_0 = \operatorname{im}(\partial_1) = \operatorname{im}(\boldsymbol{B})\) — but
the italic \(B_k\) and the boldface \(\boldsymbol{B}\) are different objects.
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 in
Simplicial Complexes. Recall the chain complex:
\[
\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.
\]
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), these definitions recover the objects from
Cycle/Cut Spaces.
The cycle group \(Z_1 = \ker(\partial_1)\) is the cycle space — 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\}\): no 1-cycle
in a graph is a boundary of anything. The situation changes dramatically when the complex has higher-dimensional simplices —
and measuring that change is exactly what homology does.
The inclusion \(B_k \subseteq Z_k\) is the direct consequence of the fundamental property \(\partial^2 = 0\) proved in
Simplicial Complexes:
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. The converse — 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 space \(Z_k / B_k\). This quotient
collapses two cycles to the same equivalence class whenever they differ by a boundary — that is, whenever
one can be continuously deformed into the other by "filling in" a \((k+1)\)-dimensional region. 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\)
— they are homologous, written \(z \sim z'\) — if and only
if their difference is a boundary: \(z - z' \in B_k\). 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 Betti numbers give a complete topological fingerprint (over
\(\mathbb{R}\)):
- \(\beta_0\) = number of connected components
- \(\beta_1\) = number of independent 1-dimensional loops
- \(\beta_2\) = number of enclosed cavities (voids)
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, every vertex
is equivalent. 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\), and
\(\operatorname{rank}(\partial_1) = f_0 - c\) where \(c\) is the number of
connected components (each component contributes one dimension to the kernel
of \(\partial_1^\top\), or equivalently, removes one rank from \(\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).
\]
In Cycle/Cut Spaces, we proved that
\(\dim Z_1 = |E| - |V| + c\). Thus \(\beta_1 = |E| - |V| + c\) — the number of independent cycles in the
graph. For a connected graph, \(\beta_1 = |E| - |V| + 1\): every edge beyond a spanning tree creates
exactly one independent loop.
This is the "prototype" of homology. In a graph, every 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
In Simplicial Complexes, we 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. Each column
computes \(\partial_1(\partial_2(\sigma_j))\) — the boundary of the
boundary of a triangle. For instance, the first column is
\[
[\partial_1] \cdot (1, -1, 0, 1, 0, 0)^\top
= (-1 + 1, 1 - 1, -1 + 1, 0) = (0, 0, 0, 0).
\]
Every column vanishes:
\([\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 one linear dependence: the alternating
combination \(-\sigma_1 + \sigma_2 - \sigma_3 + \sigma_4\) maps to
zero under \(\partial_2\), because this combination is the oriented
surface of the tetrahedron — a closed 2-cycle. Thus
\(\operatorname{rank}(\partial_2) = 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\) — the oriented shell of
the tetrahedron, the same closed 2-cycle 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 only change occurs
at dimension 2: the boundary of the 3-simplex is
\[
\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.
\]
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\}, \qquad \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. The Betti numbers become \((\beta_0, \beta_1, \beta_2, \beta_3) = (1, 0, 0, 0)\) — the signature
of a contractible space (one that can be continuously deformed to a point).
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 — it lives in \(Z_2\) regardless. What changes is whether that
cycle is the boundary of something. Adding the 3-simplex creates a
\((k+1)\)-chain whose boundary is precisely this cycle, promoting it
from a non-trivial homology class to a trivial one. In the quotient
\(Z_2 / B_2\), it is "killed." 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\)) — one going
"around the ring" and one going "through the hole" — and encloses one cavity (\(\beta_2 = 1\)).
We can verify the Euler-Poincaré relation:
\[
\chi = 7 - 21 + 14 = 0 = 1 - 2 + 1 = \beta_0 - \beta_1 + \beta_2.
\]
This also matches the genus formula \(\chi = 2 - 2g\) for an orientable surface 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.
In Simplicial Complexes, we generalized
the left-hand side to the Euler characteristic \(\chi(K) = \sum (-1)^k f_k\), and noted that it is a
topological invariant — but deferred the proof. We are now equipped to give that proof. The key insight
is that the Euler characteristic, which is defined in terms of counting simplices, is secretly controlled
by the rank 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, \dots, f_d)\) and Betti numbers
\(\beta_0, \beta_1, \dots, \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}. \tag{$\star$}
\]
Now form the alternating sum. Substituting \((\star)\):
\[
\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. \qquad \square
\]
The beauty of this proof lies in its mechanism: the boundary dimensions \(\dim B_k\) appear twice in the
alternating sum — once with sign \((-1)^k\) from the rank-nullity decomposition at level \(k+1\), and once
with sign \((-1)^{k+1}\) from the decomposition at level \(k\). These opposing signs cancel perfectly, leaving
only the Betti numbers. This telescoping is the algebraic engine behind the topological invariance of
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
groups, revealing 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 — 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 is the
Euler-Poincaré theorem applied to any triangulation of \(S^2\):
\[
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:
The Betti Number Formula
For a simplicial complex \(K\) with f-vector
\((f_0, f_1, \dots, f_d)\) and boundary matrices
\([\partial_k] \in \mathbb{R}^{f_{k-1} \times f_k}\), the Betti
numbers are
\[
\beta_k = f_k - \operatorname{rank}(\partial_k) - \operatorname{rank}(\partial_{k+1}).
\]
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 is a remarkable reduction: the topological question "how many \(k\)-dimensional holes does \(K\) have?" is answered
by computing the ranks of two sparse, integer-valued matrices. For a complex with \(N\) simplices, the boundary matrices
are sparse (each column has at most \(k + 1\) nonzero entries), so the rank computation is efficient. This
makes simplicial homology immediately implementable — a point we will return to in applications below.
Persistent Homology and Topological Data Analysis
In Simplicial Complexes, we constructed the
Vietoris-Rips and Čech complexes from point-cloud data: given a set of points and a distance threshold \(\varepsilon\), we
form a simplicial complex whose simplices are determined by pairwise proximity. But a single threshold \(\varepsilon\) is
arbitrary. Persistent homology resolves this by tracking how the Betti numbers change as \(\varepsilon\)
increases from \(0\) to \(\infty\).
As \(\varepsilon\) grows, more edges, triangles, and higher simplices
appear, creating a filtration: a nested sequence of
complexes
\[
\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 — 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 —
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 — applied to a
one-parameter family of complexes.
The Discrete Hodge Theorem
In Simplicial
Complexes, we introduced 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\).
This gives each homology class a canonical representative — 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 higher-dimensional
analogue of the orthogonal decomposition of edge flows from
graph theory. The full development of this theory, including the discrete Hodge star and discrete exterior calculus, lies ahead in
Discrete Differential Geometry.
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 Hodge decomposition guarantees that the gradient, curl, and harmonic components of the signal are handled
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: they tell us how many independent signals are topologically protected
from diffusion.