Skip to main content
QUICK REVIEW

[论文解读] Subset Sum Made Simple

Konstantinos Koiliaris, Chao Xu|arXiv (Cornell University)|Jul 22, 2018
Complexity and Algorithms in Graphs参考文献 15被引用 3
一句话总结

本文提出了一种新的、概念上简单的子集和问题算法,采用分治法与快速傅里叶变换(FFT),时间复杂度为 $ ilde{O}(ar{t}ar{t})$,与目前已知的最佳确定性时间复杂度一致。该方法基于 $ floorar{n}ar{ar{n}} floor$ 对输入集合进行同余分类,递归计算每个同余类内的子集和,并通过基于FFT的卷积合并结果。

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 $S$ of $n$ positive integers and a target integer $t$, the Subset Sum problem is to decide if there is a subset of $S$ that sums up to $t$. Dynamic programming yields an algorithm with running time $O(nt)$. Recently, the authors [SODA '17] improved the running time to $ ilde{O}\bigl(\sqrt{n}t\bigr)$, and it was further improved to $ ilde{O}\bigl(n+t\bigr)$ by a somewhat involved randomized algorithm by Bringmann [SODA '17], where $ ilde{O}$ hides polylogarithmic factors. Here, we present a new and significantly simpler algorithm with running time $ ilde{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).

研究动机与目标

  • 提出一种更简单、更直观的子集和问题算法,实现当前最优的确定性时间复杂度。
  • 展示FFT如何以非显而易见的方式应用于经典动态规划问题,该问题具有伪多项式时间复杂度。
  • 提供一种清晰、易于教学的算法,适合纳入高级算法课程。
  • 与先前方法相比,特别是Bringmann的随机化算法和作者们早期的方法,降低概念与技术复杂度。
  • 提供统一且透明的分析过程,可在两页内完整说明,提升教学可及性。

提出的方法

  • 将包含 $n$ 个正整数的输入集合 $S$ 按模 $b = \lfloor \sqrt{n\log n} \rfloor$ 划分为 $b$ 个同余类,依据 $x \bmod b$。
  • 对每个同余类 $S_\ell$,将元素变换为 $Q_\ell = \{(x - \ell)/b \mid x \in S_\ell\}$,以将问题简化为更小的子集和实例。
  • 对每个 $Q_\ell$,使用标准的分治法递归计算所有带基数信息的子集和 $\mathcal{S}^{\#}_{u/b}(Q_\ell)$。
  • 通过 $zb + \ell j$ 将结果映射回原始和,其中 $(z,j) \in \mathcal{S}^{\#}_{u/b}(Q_\ell)$,得到 $\mathcal{S}_u(S_\ell)$。
  • 使用 $u$-有界成对和运算 $\oplus_u$ 合并所有同余类的子集和,该运算通过FFT高效实现。
  • 利用FFT的卷积计算所有同余类间子集和的并集,时间复杂度为 $O(b u \log u)$,其中 $b = \Theta(\sqrt{n\log n})$。

实验结果

研究问题

  • RQ1能否设计一种更简单、确定性的子集和算法,实现 $\tilde{O}(\sqrt{n}\,t)$ 时间复杂度,而无需依赖复杂的随机化或复杂的递归结构?
  • RQ2如何有效应用快速傅里叶变换(FFT)于子集和问题,该问题本身并不天然涉及卷积?
  • RQ3能否设计一种基于同余划分的分治法子集和算法,并利用FFT高效合并结果?
  • RQ4实现接近最优的伪多项式时间复杂度所需的最小概念开销是多少?
  • RQ5该算法能否足够透明且自包含,以适用于标准算法课程的教学?

主要发现

  • 所提算法在 $O(\sqrt{n\log n}\,u\log u)$ 时间内计算出所有不超过 $u$ 的子集和,当 $u = t$ 时,与目前已知的最佳确定性时间复杂度 $\tilde{O}(\sqrt{n}\,t)$ 一致。
  • 该算法通过一种清晰的分治策略实现此结果,即基于 $\lfloor \sqrt{n\log n} \rfloor$ 对输入进行同余划分,减小问题规模,并通过基于FFT的高效卷积实现合并。
  • 使用FFT计算同余类间子集和的并集是效率的关键,合并结果的总代价被限制在 $O(b u \log u)$ 内,其中 $b = \lfloor \sqrt{n\log n} \rfloor$。
  • 该算法是确定性的,避免了Bringmann的 $\tilde{O}(n + t)$ 算法中复杂的随机化和两阶段着色编码,因此更易于教学和实现。
  • 分析过程简洁,可在两页内完整呈现,适合纳入高级算法教科书和课程。
  • 该算法可推广至AllSubsetSums问题,计算带基数信息的所有子集和,因此可直接应用于原始的子集和判定问题。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。