We present a deterministic strongly polynomial algorithm that computes the permanent of a nonnegative n×n matrix to within a multiplicative factor of e n . To this end we develop the first strongly polynomial-time algorithm for matrix scaling -an important nonlinear optimization problem with many applications. Our work suggests a simple new (slow) polynomial time decision algorithm for bipartite perfect matching, conceptually different from classical approaches.
A DETERMINISTIC STRONGLY POLYNOMIAL ALGORITHM 547Our approach to this problem is completely different from the previously taken routes. It involves a natural reduction technique between problem instances: scaling. Observe the following linearity of permanents: Multiplying a row or column by a constant c, multiplies the permanent by c as well. More generally, we say that a matrix B is a scaling of A (by positive vectors x, y ∈ ( + ) n ) if B = XAY , where X = diag(x) and Y = diag(y) are diagonal matrices with x (resp. y) on their diagonal (these being the factors that multiply the rows and the columns respectively). As observed,per(A). Thus scaling reductions not only allow us to compute per(A) from per(B), but in fact any k-factor approximation of per(B) efficiently yields the same approximation for per(A).The idea, then, is to scale an input matrix A into a matrix B whose permanent we can efficiently approximate. A natural strategy is to seek an efficient algorithm for scaling A to a doubly stochastic B. For suppose we succeed: the permanent of B is clearly at most 1, and per(B) ≥ n!/n n > e −n by the lower bound of [7,8]. Consequently, per(A) is also approximated to within an e n factor, as claimed.Note that such a scaling may not always exist -when per(A)= 0. Moreover, even if scaling exists, the scaling vectors x, y may have irrational coordinates, so we may have to settle for an approximately doubly stochastic matrix. The scaling algorithm must, therefore, be accompanied by approximate versions of the van der Waerden bound, and indeed we prove results of the following type (see also proposition 5.1).Lemma 1.2. Let B be a nonnegative n × n matrix, in which all row sums are 1, and where no column sum exceeds 1+ 1 n 2 , then per(B) ≥ e −(n+1) .So we want to efficiently scale A to an almost doubly stochastic matrix. This scaling problem that so naturally arose from our considerations, turned out to have been studied in other contexts as well. The next subsection briefly describes these as well as scaling algorithms -old and new.
Matrix scaling
Background.Our discussion will be restricted to square matrices, though everything generalizes to rectangular matrices (and some of it even to multidimensional arrays).Let r, c ∈ ( + ) n be two positive vectors with r i = c j . A matrix B is an (r, c)-matrix if r and c are the vectors of row and columns sums of B