Discover how homology groups count topological features: connected components (H₀), loops (H₁), and voids (H₂).
Homology is an algebraic tool for measuring the "holes" in a space. The key insight is that holes are cycles that don't bound anything: a loop around a donut hole can't be filled in, but a loop on a sphere can be contracted to a point.
The Betti numbers count these holes in each dimension: β₀ counts connected components, β₁ counts loops/tunnels, and β₂ counts voids/cavities. These are topological invariants — they don't change under continuous deformation.
Adjust ε to see how the Betti numbers change as the complex fills in. When ε is small, there are many components (high β₀). As edges connect points, components merge (β₀ decreases) and loops may form (β₁ increases).
Betti numbers count topological features that persist across the filtration. Adjust ε to see how they change as the complex fills in.
The formal definition of homology involves three concepts:
Formal sums of k-simplices with coefficients in Z/2Z (or Z). A 1-chain is a collection of edges; a 2-chain is a collection of triangles.
Chains with zero boundary. A 1-cycle is a closed loop of edges. Every boundary is a cycle (∂² = 0), but not every cycle is a boundary.
Chains that are the boundary of a (k+1)-chain. The boundary of a triangle is a 1-cycle consisting of its three edges.
Every 0-chain is a 0-cycle (there are no (-1)-chains to map to); the 0-boundaries are differences of edge endpoints. Quotienting identifies vertices joined by edge paths, so H₀ counts the separate pieces of the space.
1-cycles are closed loops; 1-boundaries are loops that bound a surface. H₁ counts loops that can't be filled in.
2-cycles are closed surfaces; 2-boundaries are surfaces that bound a volume. H₂ counts enclosed cavities.
The Euler characteristic χ is a fundamental topological invariant that relates the simplex counts to the Betti numbers:
This is a powerful constraint: if you know any three of {V, E, T, χ}, you can compute the fourth. For a connected planar graph: