We solve the Bin Packing problem in $O^*(2^k)$ time, where $k$ is the number of items less or equal to one third of the bin capacity. This parameter measures the distance from the polynomially solvable case of only large (i.e., greater than one third) items. Our algorithm is actually designed to work for a more general Vector Bin Packing problem, in which items are multidimensional vectors. We improve over the previous fastest $O^*(k! \cdot 4^k)$ time algorithm. Our algorithm works by reducing the problem to finding an exact weight perfect matching in a (multi-)graph with $O^*(2^k)$ edges, whose weights are integers of the order of $O^*(2^k)$. To solve the matching problem in the desired time, we give a variant of the classic Mulmuley-Vazirani-Vazirani algorithm with only a linear dependence on the edge weights and the number of edges, which may be of independent interest. Moreover, we give a tight lower bound, under the Strong Exponential Time Hypothesis (SETH), showing that the constant $2$ in the base of the exponent cannot be further improved for Vector Bin Packing. Our techniques also lead to improved algorithms for Vector Multiple Knapsack, Vector Bin Covering, and Perfect Matching with Hitting Constraints.
翻译:我们用$O ⁇ ( 2 ⁇ k) 时间来解决本包包问题, 即 $k$ 是小于或等于 bin 容量的三分之一 。 这个参数测量只大( 大于 三分之一 ) 的多元可溶性外观的距离。 我们的算法实际上是为了解决更一般的矢量包包问题而设计的, 其中项目是多维矢量。 我们改进了前一个最快的 $ ⁇ ( k!\ cdot 4 ⁇ k) 时间算法。 我们的算法通过减少问题, 找到一个与 $ ⁇ ( 2 ⁇ k) 边缘的( 多功能) 完全匹配的重量。 这个参数测量点只测量小于 $ ⁇ ( 2 ⁇ k) 的( 多功能) 。 其重量是 $% ( 2 ⁇ k) 的整数。 为了在理想的时间内解决匹配问题, 我们给出了一个经典的 Mulmuley- Vazirani- Vazictor 算法的变式。 我们的公式只有对边缘重量和边缘数的直线依赖, 可能具有独立兴趣。 此外, 我们用一个较紧的硬的硬的硬的硬基的硬基的 K。 我们用硬基的硬基的硬的硬的基的基的基的硬基的K。