Knapsack problems are among the most fundamental problems in optimization. In the Multiple Knapsack problem, we are given multiple knapsacks with different capacities and items with values and sizes. The task is to find a subset of items of maximum total value that can be packed into the knapsacks without exceeding the capacities. We investigate this problem and special cases thereof in the context of dynamic algorithms and design data structures that efficiently maintain near-optimal knapsack solutions for dynamically changing input. More precisely, we handle the arrival and departure of individual items or knapsacks during the execution of the algorithm with worst-case update time polylogarithmic in the number of items. As the optimal and any approximate solution may change drastically, we only maintain implicit solutions and support certain queries in polylogarithmic time, such as the packing of an item and the solution value. While dynamic algorithms are well-studied in the context of graph problems, there is hardly any work on packing problems and generally much less on non-graph problems. Given the theoretical interest in knapsack problems and their practical relevance, it is somewhat surprising that Knapsack has not been addressed before in the context of dynamic algorithms and our work bridges this gap.
翻译:Knapsack 问题是优化的最根本问题之一。 在多个 Knapsack 问题中, 我们被赋予了具有不同能力和价值和大小的多功能和物品的多重背包。 任务在于找到一组最高总价值的物品, 可以在不超出能力的情况下, 将其包装到 knapsack 中。 我们从动态算法和设计数据结构的角度来调查这一问题和其中的特殊情况, 从而有效地维持近于最佳的背包解决方案, 以便动态变化输入。 更确切地说, 我们处理个人物品或背包的进出问题, 执行具有最坏情况更新时间多功能和大小的算法时, 在项目数量中, 我们使用最优和任何大致的解决方法, 可能会在不超出能力的情况下, 我们只保留隐含的解决方案, 并支持在多功能分析时的某些查询, 例如项目包装和解算值。 虽然动态算法在图形问题中受到很好研究, 但是在包装问题方面几乎没有任何工作, 一般来说, 在非绘图问题上也没有做任何工作。 由于对 knaps 的理论上的问题及其实际桥梁的相关性, Knaack 在我们的工作之前没有处理多少令人惊讶。