Abstract. In this paper we consider the problem of computing a minimum cycle basis in a graph G with m edges and n vertices. The edges of G have non-negative weights on them. The previous best result for this problem was an O(mω n) algorithm, where ω is the best exponent of matrix multiplication. It is presently known that ω < 2.376. We obtain an O(m2 n + mn2 log n) algorithm for this problem. Our algorithm also uses fast matrix multiplication. When the edge weights are integers, we have an O(m2 n) algorithm. For unweighted graphs which are reasonably dense, our algorithm runs in O(mω ) time. For any > 0, we also design a 1 + approximation algorithm to compute a cycle basis which is at most 1 + times the weight of a minimum cycle basis. The running time of this algorithm is O(mω log(W/ )) for reasonably dense graphs, where W is the largest edge weight.