Bipartite Matching in the Semi-streaming Model - Eggert, Sebastian; Kliemann, Lasse; Munstermann, Peter; Srivastav, Anand (Algorithmica, 2012)
We present the first deterministic 1+ ε approximation algorithm for finding a large matching in a bipartite graph in the semi-streaming model which requires only O ((1/ ε ) 5 ) passes over the input stream. In this model, the input graph G =( V , E ) is given as a stream of its edges in some arbitrary order, and storage of the algorithm is bounded by O ( n polylog n ) bits, where . The only previously known arbitrarily good approximation for general graphs is achieved by the randomized algorithm of McGregor (Proceedings of the International Workshop on Approximation Algorithms for Combinatorial Optimization Problems and Randomization and Computation, Berkeley, CA, USA, pp. 170–181, 2005 ), which uses Ω ((1/ ε ) 1/ ε ) passes. We show that even for bipartite graphs, McGregor’s algorithm needs Ω (1/ ε ) Ω (1/ ε ) passes, thus it is necessarily exponential in the approximation parameter. The design as well as the analysis of our algorithm require the introduction of some new techniques. A novelty of our algorithm is a new deterministic assignment of matching edges to augmenting paths which is responsible for the complexity reduction, and gets rid of randomization. We repeatedly grow an initial matching using augmenting paths up to a length of 2 k +1 for k =⌈2/ ε ⌉. We terminate when the number of augmenting paths found in one iteration falls below a certain threshold also depending on k , that guarantees a 1+ ε approximation. The main challenge is to find those augmenting paths without requiring an excessive number of passes. In each iteration, using multiple passes, we grow a set of alternating paths in parallel, considering each edge as a possible extension as it comes along in the stream. Backtracking is used on paths that fail to grow any further. Crucial are the so-called position limits : when a matching edge is the i th matching edge in a path and it is then removed by backtracking, it will only be inserted into a path again at a position strictly lesser than i . This rule strikes a balance between terminating quickly on the one hand and giving the procedure enough freedom on the other hand.