Counting Perfect Matchings as Fast as Ryser

preprint2011arXivOpen access

Abstract

We show that there is a polynomial space algorithm that counts the number of perfect matchings in an nn-vertex graph in O∗(2n/2)⊂O(1.415n)O^*(2^{n/2})\subset O(1.415^n) time. (O∗(f(n))O^*(f(n)) suppresses functions polylogarithmic in f(n)f(n)).The previously fastest algorithms for the problem was the exponential space O∗(((1+5)/2)n)⊂O(1.619n)O^*(((1+\sqrt{5})/2)^n) \subset O(1.619^n) time algorithm by Koivisto, and for polynomial space, the O(1.942n)O(1.942^n) time algorithm by Nederlof. Our new algorithm's runtime matches up to polynomial factors that of Ryser's 1963 algorithm for bipartite graphs. We present our algorithm in the more general setting of computing the hafnian over an arbitrary ring, analogously to Ryser's algorithm for permanent computation. We also give a simple argument why the general exact set cover counting problem over a slightly superpolynomial sized family of subsets of an nn element ground set cannot be solved in O∗(2(1−ε1)n)O^*(2^{(1-ε_1)n}) time for any ε1>0ε_1>0 unless there are O∗(2(1−ε2)n)O^*(2^{(1-ε_2)n}) time algorithms for computing an n×nn\times n 0/1 matrix permanent, for some ε2>0ε_2>0 depending only on ε1ε_1.

Explore this paper’s authors, topics and related work.

Building this map preview

BZPEER is loading the nearby papers, people, topics and institutions for this page.

Reviews 0

Write a reviewWrite

No reviews yet.

Discussion 0

Add a commentWrite

No comments yet.