30
5
v1v2 (latest)

Classical and Quantum Algorithms for Variants of Subset-Sum via Dynamic Programming

Abstract

Subset-Sum is an NP-complete problem where one must decide if a multiset of nn integers contains a subset whose elements sum to a target value mm. The best-known classical and quantum algorithms run in time O~(2n/2)\tilde{O}(2^{n/2}) and O~(2n/3)\tilde{O}(2^{n/3}), respectively, based on the well-known meet-in-the-middle technique. Here we introduce a novel classical dynamic-programming-based data structure with applications to Subset-Sum and a number of variants, including Equal-Sums (where one seeks two disjoint subsets with the same sum), 2-Subset-Sum (a relaxed version of Subset-Sum where each item in the input set can be used twice in the summation), and Shifted-Sums, a generalization of both of these variants, where one seeks two disjoint subsets whose sums differ by some specified value. Given any modulus pp, our data structure can be constructed in time O(n2p)O(n^2p), after which queries can be made in time O(n2)O(n^2) to the lists of subsets summing to any value modulo pp. We use this data structure in combination with variable-time amplitude amplification and a new quantum pair finding algorithm, extending the quantum claw finding algorithm to the multiple solutions case, to give an O(20.504n)O(2^{0.504n}) quantum algorithm for Shifted-Sums, an improvement on the best-known O(20.773n)O(2^{0.773n}) classical running time. Incidentally, we obtain new O~(2n/2)\tilde{O}(2^{n/2}) and O~(2n/3)\tilde{O}(2^{n/3}) classical and quantum algorithms for Subset-Sum, not based on the seminal meet-in-the-middle method. We also study Pigeonhole Equal-Sums and Pigeonhole Modular Equal-Sums, where the existence of a solution is guaranteed by the pigeonhole principle. For the former problem, we give faster classical and quantum algorithms with running time O~(2n/2)\tilde{O}(2^{n/2}) and O~(22n/5)\tilde{O}(2^{2n/5}), respectively. For the more general modular problem, we give a classical algorithm that also runs in time O~(2n/2)\tilde{O}(2^{n/2}).

View on arXiv
Comments on this paper