§ An invitation to homology and cohomology, Part 1 --- Homology

There are many introductions to homology on the internet, but none of them really met my criteria for being simple, picture filled, and getting the basic ideas across. I feel that Hatcher might come closest to what I want (and where I originally learnt the material), but their description of homology is surrounded by the context of Algebraic Topology, while really, simplicial homology is accessible to anyone who has seen some linear algebra and group theory. This is my attempt to get the ideas across. Let's first try to understand what we're trying to do here. We want to detect holes in a space, broadly construed. We focus in simplicial complexes, which are collections of triangles and triangle-like objects in higher (and lower) dimensions. We define what holes are for these simplicial complexes, and we then try to find algebraic objects that allow us to "detect" these holes.

§ Simplices

  • A 0-simplex is a point
  • A 1-simplex is a line
  • A 2-simplex is a filled triangle
  • A 3-simplex is a solid tetrahedra
  • A kk-dimensional simplex is the convex hull of k+1k+1linearly independent points (uiRk+1)(u_i \in \mathbb R^{k+1})in k+1k+1 dimensional space.
Sk{θiui  θi0, iθi=1}S_k \equiv \left \{ \sum \theta_i u_i ~\mid~ \theta_i \geq 0, ~ \sum_i \theta_i = 1 \right \}

§ Simplicial complexes

A simplicial complex KK is a collection of simplices where:
  • (1) Every boundary of a simplex from KK is in KK
  • (2) The intersection of any two simplices in KK is also in KK
Examples of simplicial complexes:
  • Every simplex is trivially a simplicial complex.
  • A collection of points is a simplicial complex with all simplices of degree 00.
  • An unfilled triangle is a simplicial complex with simplices of degree 00, 11.
  • Non-triangular shapes such as this "butterfly" are also simplicial complexes,this one of degree 00, 11.
  • This is the same shape as the unfilled butterly, except now containing asimplex of degree 2: the filling in of the bottom of the butterfly.
Non-examples of simplicial complexes are:
  • This does not contain the point at the lower-left corner, which should existsince it is a boundary of the straight line. This violates rule (1):Every boundary of a simplex from KK is in KK
  • This does not contain the points which are at the intersection of thetriangle and the line. This violates rule (2):The intersection of any two simplices in KK is also in KK.

§ Holes in a space: Homology of a triangle

Let's consider the simplest possible case of computing the homlogy, and we do so, we will expand on what homology is, and what we're trying to do. Look at the triangle above. We have the red, green, and blue vertices, which I'll notate r,g,br, g, b. We also have the edges that are orange (oo), cyan (cc), and magenta (mm). What we are interested in doing is to be able to detect the "hole" in the triangle in between the edges o-m-c. That is, we want some algorithm which when offered the representation of the triangle, can somehow detect the hole. Note that the hole doesn't really depend on the length of the edges. We can "bend and stretch" the triangle, and the hole will still exist. The only way to destroy the hole is to either cut the triangle, or fill in the triangle. We first need to agree on an abstract representation of the triangle, which ideally does not change if we were to stretch out the edges, before we can discuss how we can detect the existence of the hole.

§ Representation of the triangle: boundary operators

We first describe the shape of the triangle in terms of two sets, EE and VV representing the edges and the vertices, and a function EV\partial_{EV}, called as the boundary operator, which tells us how edges are glued to vertices. We first have a ground set of edges Eo,m,cE \equiv \\{o, m, c\\} and a set of vertices Vr,g,bV \equiv \\{r, g, b \\}. What we now need is to know how the edges are connected to the vertices, since that's what really makes a triangle. We would like to say something like "the boundary of the edge oo has points r,gr, g". In fact, we have slightly more information than that: the orientation. So what we really ought to be saying is "the edge oo points from gg to rr". To do this, we create a map from oo to rgr - g, where we think of oo as a "vector", pointing from gg to rr. But hang on, what is rgr - g? we don't have a mathematical structure on VV that lets us add and subtract vertices. So, we create a new set V\mathcal V, which represents linear combinations of vertices in VV. Similarly, anticipating some future development, we also create a new set E\mathcal E of linear combinations of edges EE.

§ Formal definition of the boundary operator

We define EZ×Z×Z\mathcal E \equiv \mathbb Z \times \mathbb Z \times \mathbb Z that represents linear combinations of edges. For example, (1,2,3)E(1, 2, 3) \in \mathcal E represents o+2m+3co + 2m + 3c --- that is, take 1 copy of the orange edge, 2 copies of the magenta edge, and 3 copies of the cyan edge. We define VZ×Z×Z\mathcal V \equiv \mathbb Z \times \mathbb Z \times \mathbb Z which represents linear combinations of vertices. For example, (1,1,2)V(1, -1, 2) \in V represents rg+2br - g + 2b --- that is, take a copy of the red vertex, subtract the green vertex, and add two copies of the blue vertex. The boundary operator EV:EV\partial_{EV}: \mathcal{E} \rightarrow \mathcal V is depicted in the picture. This operator sends edges to their boundary, and is therefore called the boundary operator. The boundary of an edge describes the edge in terms of vertices, just like we would describe a direction vector (to borrow physics parlance) by subtracting points. The action of the operator on a linear combination of edges is:
EV:EVEV(1,0,0)(1,1,0)orgEV(0,1,0)(1,0,1)mbrEV(0,0,1)(0,1,1)cbg(Extend using linearity)EV(s,t,u)sEV(1,0,0)+tEV(0,1,0)+uEV(0,0,1)=(st,us,tu) \begin{aligned} &\partial_{EV}: \mathcal E \rightarrow \mathcal V \\ &\partial_{EV}(1, 0, 0) \equiv (1, -1, 0) \qquad o \mapsto r - g \\ &\partial_{EV}(0, 1, 0) \equiv (-1, 0, 1) \qquad m \mapsto b - r \\ &\partial_{EV}(0, 0, 1) \equiv (0, 1, -1) \qquad c \mapsto b - g \\ &\text{(Extend using linearity)} \\ &\partial_{EV}(s, t, u) \equiv s \partial_{EV}(1, 0, 0) + t \partial_{EV}(0, 1, 0) + u \partial_{EV}(0, 0, 1) = (s - t, u - s, t - u) \end{aligned}
Now, notice that to traverse the cycle, we should traverse the orange edge, then the magenta edge, then the cyan edge, in that direction. That is, the cycle can be thought of as o+m+co + m + c. However, how do we detect this cycle? The key idea is that if we look at the image of the cycle o+m+co + m + c under the boundary operator EV\partial_{EV}, we will get 00! For us to have completed a cycle, we must have both entered and exited each vertex, so the total sum must be 00. Formally:
EV(s,t,u)(st,us,tu)o+m+c=(1,1,1)EEV((1,1,1)=(11,11,11)=(0,0,0) \begin{aligned} &\partial_{EV}(s, t, u) \equiv (s - t, u - s, t - u) \\ &o + m + c = (1, 1, 1) \in \mathcal E \quad \partial_{EV}((1, 1, 1) = (1 - 1, 1 - 1, 1 - 1) = (0, 0, 0) \end{aligned}

§ Formal definition of cycles

This is very nice, since we have converted the topological invariant of a hole in the space into an algebraic invariant of "linear combination of edges that map to 0". That is, we want to consider all thoose loops that belong to the kernel of EV\partial_{EV}. (Terminology: the kernel of a linear transformation is the set of all things in the domain which map to zero) So, we define (tentatively) the first homology group:
H1Kernel(EV){(a,b,c)EEV((a,b,c))=(0,0,0)}E \begin{aligned} H_1 \equiv Kernel(\partial_{EV}) \equiv \left \{ (a, b, c) \in \mathcal E \mid \partial_EV((a, b, c)) = (0, 0, 0) \right \} \subset \mathcal E \end{aligned}
If we try to compute this, we will have to have:
H1Kernel(EV)={(s,t,u)  EV(s,t,u)=(0,0,0) s,t,uZ}={(s,t,u)  (st,us,tu)=(0,0,0) s,t,uZ}={(s,t,u)  s=t=us,t,uZ}={(x,x,x)  xZ}Z \begin{aligned} H_1 &\equiv Kernel(\partial_{EV}) \\ &= \{ (s, t, u) ~\mid~ \partial_{EV}(s, t, u) = (0, 0, 0) ~ s, t, u \in \mathbb Z \} \\ &= \{ (s, t, u) ~\mid~ (s-t, u-s, t-u) = (0, 0, 0) ~ s, t, u \in \mathbb Z \} \\ &= \{ (s, t, u) ~\mid~ s = t = u \quad s, t, u \in \mathbb Z \} \\ &= \{ (x, x, x) ~\mid~ x \in \mathbb Z \} \simeq \mathbb Z \end{aligned}
So, we know that we have a Z\mathbb Z worth of cycles in our triangle, which makes sense: We can go clockwise (positive numbers) and counter-clockwise (negative numbers) around the triangle, and we can go as many times as we wish, so we have Z\mathbb Z as the number of cycles. that is, it's the linear combination of edges that map to zero through the boundary map. Note that this also includes combinations such as two loops around the triangle, such as o+m+c+o+m+co + m + c + o + m + c.

§ (No) Holes in a space: Homology of a filled triangle

In this case, notice that the triangle is filled with a face ff. Therefore, the "hole" that we had previously is now filled up, and does not count anymore. So, we now need to amend our previous definition of H1H_1 to kill the hole we had detected. The idea is that the hole we had previously is now the boundary of the new face ff. Since it is the boundary of a "filled in" region, it does not count anymore, since we can "shrink the hole" across the face to make it a non-loop. Hence, we need to quotient our H1H_1 with the boundary of the face. Formally, what we do is we create another group FZ\mathcal F \equiv \mathbb Z, which counts copies of our face ff, and we define another boundary operator, such that the boundary of the face ff is o+m+co + m + c.
FE:FEFE(1)(1,1,1)(Extend using linearity)FE(c)c(1)=(c,c,c) \begin{aligned} &\partial_{FE} : \mathcal F \rightarrow \mathcal E \\ &\partial_{FE}(1) \equiv (1, 1, 1) \\ &\text{(Extend using linearity)} \\ &\partial_{FE}(c) \equiv c \partial(1) = (c, c, c) \end{aligned}
Now, we should notice that the image of FE\partial_{FE} is a loop (o+m+c)(o + m + c), which lies ie the kernel of EV\partial_{EV}. This is a general feature of homology, so it bears repeating:
  • Image(FE)Kernel(EV)Image(\partial_{FE}) \subset Kernel(\partial_{EV})
  • FEEV=0\partial_{FE} \circ \partial_{EV} = 0
  • The above equation is sometimes stylishly (somewhat misleadingly) written as2=0\partial^2 = 0. More faithfully, one can write EVFE=0\partial_{EV} \circ \partial_{FE} = 0.
Now, since the image of FE\partial_{FE} lies entirely in the kernel of EV\partial_{EV}, we can construct H1H_1 as:
  • H1Kernel(EV)/Image(FE)EH_1 \equiv Kernel(\partial_{EV}) / Image(\partial_{FE}) \subset E