Abstract
We study the storage allocation problem (SAP) which is a variant of the unsplittable flow problem on paths (UFPP). A SAP instance consists of a path $$P = (V,E)$$P=(V,E) and a set J of tasks. Each edge $$e \in E$$e?E has a capacity $$c_e$$ce and each task $$j \in J$$j?J is associated with a path $$I_j$$Ij in P, a demand $$d_j$$dj and a weight $$w_j$$wj. The goal is to find a maximum weight subset $$S \subseteq J$$S⊆J of tasks and a height function $$h:S \rightarrow \mathbb {R}^+$$h:S?R+ such that (i) $$h(j)+d_j \le c_e$$h(j)+dj≤ce, for every $$e \in I_j$$e?Ij; and (ii) if $$j,i \in S$$j,i?S such that $$I_j \cap I_i \ne \emptyset $$Ij?Ii?? and $$h(j) \ge h(i)$$h(j)?h(i), then $$h(j) \ge h(i) + d_i$$h(j)?h(i)+di. SAP can be seen as a rectangle packing problem in which rectangles can be moved vertically, but not horizontally. We present a polynomial time $$(9+\varepsilon )$$(9+?)-approximation algorithm for SAP. Our algorithm is based on a variation of the framework for approximating UFPP by Bonsma et al. [FOCS 2011] and on a $$(4+\varepsilon )$$(4+?)-approximation algorithm for $$\delta $$?-small SAP instances (in which $$d_j \le \delta \cdot c_e$$dj≤?·ce, for every $$e \in I_j$$e?Ij, for a sufficiently small constant $$\delta >0$$?>0). In our algorithm for $$\delta $$?-small instances, tasks are packed carefully in strips in a UFPP manner, and then a $$(1+\varepsilon )$$(1+?) factor is incurred by a reduction from SAP to UFPP in strips. The strips are stacked to form a SAP solution. Finally, we provide a $$(10+\varepsilon )$$(10+?)-approximation algorithm for SAP on ring networks.
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have