  We develop general methods to obtain fast (polynomial time) estimates of the
cardinality of a combinatorially defined set via solving some randomly
generated optimization problems on the set. Geometrically, we estimate the
cardinality of a subset of the Boolean cube via the average distance from a
point in the cube to the subset. As an application, we present a new randomized
polynomial time algorithm which approximates the permanent of a 0-1 matrix by
solving a small number of Assignment problems.
