English

Subset Sum Made Simple

Data Structures and Algorithms 2018-07-24 v1

Abstract

Subset Sum is a classical optimization problem taught to undergraduates as an example of an NP-hard problem, which is amenable to dynamic programming, yielding polynomial running time if the input numbers are relatively small. Formally, given a set SS of nn positive integers and a target integer tt, the Subset Sum problem is to decide if there is a subset of SS that sums up to tt. Dynamic programming yields an algorithm with running time O(nt)O(nt). Recently, the authors [SODA '17] improved the running time to O~(nt)\tilde{O}\bigl(\sqrt{n}t\bigr), and it was further improved to O~(n+t)\tilde{O}\bigl(n+t\bigr) by a somewhat involved randomized algorithm by Bringmann [SODA '17], where O~\tilde{O} hides polylogarithmic factors. Here, we present a new and significantly simpler algorithm with running time O~(nt)\tilde{O}\bigl(\sqrt{n}t\bigr). While not the fastest, we believe the new algorithm and analysis are simple enough to be presented in an algorithms class, as a striking example of a divide-and-conquer algorithm that uses FFT to a problem that seems (at first) unrelated. In particular, the algorithm and its analysis can be described in full detail in two pages (see pages 3-5).

Keywords

Cite

@article{arxiv.1807.08248,
  title  = {Subset Sum Made Simple},
  author = {Konstantinos Koiliaris and Chao Xu},
  journal= {arXiv preprint arXiv:1807.08248},
  year   = {2018}
}