A deterministic fully polynomial time approximation scheme for counting integer knapsack solutions made easy - Halman, Nir (Theoretical computer science, 2016)
Given n elements with nonnegative integer weights w=(w1,…,wn), an integer capacity C and positive integer ranges u=(u1,…,un), we consider the counting version of the classic integer knapsack problem: find the number of distinct multisets whose weights add up to at most C. We give a deterministic algorithm that estimates the number of solutions to within relative error ϵ in time polynomial in n, log⁡U and 1/ϵ, where U=maxi⁡ui. More precisely, our algorithm runs in O(n3log2⁡Uϵlog⁡nlog⁡Uϵ) time. This is an improvement of n2 and 1/ϵ (up to log terms) over the best known deterministic algorithm by Gopalan et al. (2011) [5]. Our algorithm is relatively simple, and its analysis is rather elementary. Our results are achieved by means of a careful formulation of the problem as a dynamic program, using the notion of binding constraints.