Let us say that a multiset M dominates another multiset N if each element in N occurs at least as many times in M.
Given a target multiset M and an integer k>0, I'd like to find a list, L, of size-k multisets whose sum dominates M. I'd like this list to be of small cost, where my cost function is of the form:
cost = c*m + n
where c is a constant, m is the number of multisets in L, and n is the number of distinct multisets in L.
How can I do this? An efficient algorithm to find the optimal solution would be ideal.
The problem comes from trying to fulfill a customer's order for printing pages with a specialized block-printer that prints k pages at a time. Setting up the block-printer to print a particular template of k pages is costly, but once a template is initialized, printing with it is cheap. The target multiset M represents the customer's order, and the n distinct multisets of the list L represent n distinct k-page templates.
In my particular application, M typically has >30 elements whose multiplicities are in the range [10^4, 10^6]. The value of k is 15, and c is approximately 10^-5.