Given matrices A and B and vectors a, b, c and d, all with non-negative
entries, we consider the problem of computing min {c.x: x in Z^n_+, Ax > a, Bx
< b, x < d}. We give a bicriteria-approximation algorithm that, given epsilon
in (0, 1], finds a solution of cost O(ln(m)/epsilon^2) times optimal, meeting
the covering constraints (Ax > a) and multiplicity constraints (x < d), and
satisfying Bx < (1 + epsilon)b + beta, where beta is the vector of row sums
beta_i = sum_j B_ij. Here m denotes the number of rows of A.
This gives an O(ln m)-approximation algorithm for CIP -- minimum-cost
covering integer programs with multiplicity constraints, i.e., the special case
when there are no packing constraints Bx < b. The previous best approximation
ratio has been O(ln(max_j sum_i A_ij)) since 1982. CIP contains the set cover
problem as a special case, so O(ln m)-approximation is the best possible unless
P=NP.Comment: Preliminary version appeared in IEEE Symposium on Foundations of
Computer Science (2001). To appear in Journal of Computer and System Science