We develop a general framework, called \emph{approximately-diverse dynamic programming (ADDP)} that provides PTASs for generating a collection of $k>1$ maximally diverse solutions to various packing and covering problems. Given an approximation factor $0\le c\le 1$, this framework also allows for maximizing diversity in the larger space of $c$-optimal solutions. We showcase the power and limitations of our technique via three applications. 1. Given an input to the knapsack problem, an integer $k$ and a $c\le 1$, we give an algorithm that runs in time $n^{O(1/\epsilon)}\text{poly}(k)f(\epsilon,\delta,\gamma)$ and returns $k$ solutions, each with value within $c(1-\delta)$ of optimal, weight at most $(1+\gamma)$ of the knapsack, and with diversity at least $(1-\epsilon)$ of any optimally diverse collection of $c$-optimal solutions. 2. Given a planar graph $G$, an integer $k$ and a value $c\le 1$, we give algorithms running in time $2^{O(kf(\delta,\epsilon))}n^{O(1/\epsilon)}$ that return $(1-\epsilon)$-apx. diverse $(1-\delta)c$-optimal independent sets or vertex covers. When $k=O(\log n)$, this gives a PTAS. This is the \emph{first PTAS for diverse variants for any NP-complete problem}. 3. We show how to generate diverse solutions for a geometric variant of the knapsack problem - the rectangle packing problem by [Coffman, Garey, Johnson, and Tarjan 1980]. In this problem, we are given a set of axis-aligned rectangles and a square knapsack, and the goal is to pack as many rectangles as possible into the knapsack. We present a poly-time algorithm that returns $k$ distinct solutions, where each solution achieves a profit of at least $(1-\epsilon)$ times the optimal value and fits into a $(1+\epsilon)$-enlarged knapsack. In this case, the diversity is at least $(1-\epsilon)$ of that of any collection of $k$ container based solutions.
翻译:我们提出了一个通用框架,称为\emph{近似多样化动态规划(ADDP)},该框架为各类装箱与覆盖问题生成$k>1$个最大化多样性的解集合提供了多项式时间近似方案(PTAS)。给定近似因子$0\le c\le 1$,该框架还允许在更大的$c$最优解空间中最大化多样性。我们通过三个应用展示该技术的优势与局限。1. 给定背包问题输入、整数$k$及$c\le 1$,我们提出一种算法,其运行时间为$n^{O(1/\epsilon)}\text{poly}(k)f(\epsilon,\delta,\gamma)$,并返回$k$个解:每个解的价值不低于最优值的$c(1-\delta)$,重量至多为背包容量的$(1+\gamma)$,且其多样性至少达到任意$c$最优解最优多样化集合的$(1-\epsilon)$。2. 给定平面图$G$、整数$k$及值$c\le 1$,我们提出运行时间为$2^{O(kf(\delta,\epsilon))}n^{O(1/\epsilon)}$的算法,可返回$(1-\epsilon)$近似多样化的$(1-\delta)c$最优独立集或顶点覆盖。当$k=O(\log n)$时,该算法构成PTAS。这是\emph{首个针对NP完全问题多样化变体的PTAS}。3. 我们展示了如何为背包问题的几何变体——[Coffman, Garey, Johnson, and Tarjan 1980]提出的矩形装箱问题生成多样化解。该问题给定一组轴对齐矩形和一个正方形背包,目标是将尽可能多的矩形装入背包。我们提出一种多项式时间算法,可返回$k$个不同的解,其中每个解的收益至少达到最优值的$(1-\epsilon)$倍,且能装入$(1+\epsilon)$倍扩大的背包。在此情况下,解的多样性至少达到任意$k$个基于容器的解集合的$(1-\epsilon)$倍。