1

If our field is the one with two elements, $F_2$, then $C_k$ is a direct product of several copies of $F_2$, which means that so are $ker(\partial_k)$, $im(\partial_{k+1})$ and $ker(\partial_k)/im(\partial_{k+1})$. This means that the only data you could really want from $H_k$ is its dimension as a vector space over $F_2$: $$dim(H_k)= dim(ker(\partial_k)) - dim(im(\partial_{k+1}))$$ If $M_k$ and $M_{k+1}$ are matrix representations of $\partial_k$ and $\partial_{k+1}$ then the dimension of the image is the rank of the matrix representation, and the dimension of the kernel is, I think, the number of columns minus the rank. This means that: $$dim(H_k)=numCols(M_k)-rank(M_k)-rank(M_{k+1})$$ Which should be all the data desired from $H_k(X, F_2)$. This shouldn't give negative numbers because the constraint $im(M_{k+1})\subseteq ker(M_k)$ should imply that $rank(M_{k+1})\leq numCols(M_k)-rank(M_k)$. That is, if I'm right about $dim(ker(M_k))=numCols(M_k)-rank(M_k)$.

This seems like a trivial conclusion to me, but I'm writing code for computing simplicial (and eventually persistent) homology over $\mathbb{Z}$ and $F_2$. Obviously, the same reasoning won't work for homology over $\mathbb{Z}$, but when I tried to use this to find the dimensions of $F_2$ homology groups I got some negative numbers...so I thought I would check here in case I'm wasting my time debugging the functions for getting the rank of a matrix over $F_2$.

Eben Kadile
  • 732
  • 4
  • 16
  • 1
    Your formula for the dimension of $H_k$ is correct; it's what SageMath (http://www.sagemath.org) uses to compute homology when you use field coefficients. (This is assuming your boundary matrices work by using left multiplication, rather than right multiplication.) – John Palmieri Feb 19 '18 at 22:19
  • By the way, there is already some existing homology computation software: SageMath is good general purpose software, although not necessarily built for speed. There is also CHomP, and I'm sure there are others. Do you have good reasons for writing your own? – John Palmieri Feb 19 '18 at 22:20
  • Well, I'm a first year undergrad that's really interested in math. I decided that the best way to ensure that I understand these basic homology theories is to write a library for computing them in my favorite language, Haskell, which is quite speedy. – Eben Kadile Feb 20 '18 at 08:25
  • 1
    If you really want speed, there is a lot of literature on computing the homology of simplicial complexes and cubical complexes. You can optimize rank computations, for example, based on the sorts of matrices that arise as boundary maps for these complexes. – John Palmieri Feb 22 '18 at 16:03

0 Answers0