  We study the problem of finding a minimum homology basis, that is, a lightest
set of cycles that generates the $1$-dimensional homology classes with
$\mathbb{Z}_2$ coefficients in a given simplicial complex $K$. This problem has
been extensively studied in the last few years. For general complexes, the
current best deterministic algorithm, by Dey et al., runs in $O(N m^{\omega-1}
+ n m g)$ time, where $N$ denotes the total number of simplices in $K$, $m$
denotes the number of edges in $K$, $n$ denotes the number of vertices in $K$,
$g$ denotes the rank of the $1$-homology group of $K$, and $\omega$ denotes the
exponent of matrix multiplication. In this paper, we present three conceptually
simple randomized algorithms that compute a minimum homology basis of a general
simplicial complex $K$. The first algorithm runs in $\tilde{O}(m^\omega)$ time,
the second algorithm runs in $O(N m^{\omega-1})$ time and the third algorithm
runs in $\tilde{O}(N^2 g + N m g{^2} + m g{^3})$ time which is nearly quadratic
time when $g=O(1)$. We also study the problem of finding a minimum cycle basis
in an undirected graph $G$ with $n$ vertices and $m$ edges. The best known
algorithm for this problem runs in $O(m^\omega)$ time. Our algorithm, which has
a simpler high-level description, but is slightly more expensive, runs in
$\tilde{O}(m^\omega)$ time.
  We also provide a practical implementation of computing the minimum homology
basis for general weighted complexes. The implementation is broadly based on
the algorithmic ideas described in this paper, differing in its use of
practical subroutines. Of these subroutines, the more costly step makes use of
a parallel implementation, thus potentially addressing the issue of scale. We
compare results against the currently known state of the art implementation
(ShortLoop).
