July 14, 2026
In recent years, much attention has been devoted to the study of optimization problems under norm-based objectives coming from the rich class of monotone, symmetric norms (and their generalizations). This work has however almost exclusively focused on covering problems, wherein one seeks to minimize the norm of the cost vector induced by a solution.
We introduce and study the class of norm-budgeted packing problems, which are packing problems where the resource constraints underlying the packing problem are modeled via a norm budget constraint involving a monotone, symmetric norm. Formally, we have some elements with associated rewards and sizes, a downwards-closed collection \(\mathcal{S}\) of feasible solutions, and a budget \(B\). Each solution induces a size vector, and the goal is to maximize the total reward subject to the norm-budget constraint \(f(\text{size vector}) \le B\). As with minimum-norm covering problems, the versatility of monotone, symmetric norms implies that a variety of classical packing problems, involving sum- or max- budget constraints can be captured under the umbrella of norm-budgeted packing problems. Moreover, the closure properties of monotone, symmetric norms, also enable one to encode multiple different norm-budget constraints via a single monotone, symmetric norm.
We consider the norm-budgeted versions of a variety of canonical packing problems, including knapsack, matching, maximum-weight independent set in a matroid (and more generally \(k\)-set system), maximum generalized assignment problem (\(\mathsf{Max}\mathsf{GAP}\)), and \(k\)-facility location, and develop a framework that allows us to obtain constant-factor approximation guarantees for these problems, and PTASes for knapsack, and \(\mathsf{Max}\mathsf{GAP}\) on identical and related machines.
In order to do so, one fundamental and significant impediment that we need to overcome is that the techniques that have been developed in the study of minimum-norm covering optimization problems are not strong enough to deal with a hard norm-budget constraint. All of this machinery leads to an inherent violation of the norm, and moreover, in stark contrast with \(\ell_1\) norms, there can be a huge gap between bicriteria and unicriteria solutions (even when every single item consumes only a small portion of the budget). We address this challenge by developing novel tools to handle the norm-budget constraint.
We also develop constant-factor approximation algorithms for the submodular versions of norm-budgeted knapsack and norm-budgeted \(\mathsf{Max}\mathsf{GAP}\) on related machines, wherein the reward function is now specified by a monotone, submodular function.
Packing and covering problems are two broad and fundamental classes of combinatorial-optimization problems that have been extensively investigated in the Operations Research and theoretical Computer Science literature, and find applications in a variety of domains such as logistics, scheduling, clustering, network design. Covering problems tend to capture settings where there are some entities that need to be “served” (e.g., clients in a logistics problem, jobs in a scheduling problem), and one needs to determine a minimum-cost way of providing service. Packing problems on the other hand model settings where resource constraints preclude one from serving all entities, and the goal is to therefore select a most “profitable” set of entities to serve. Well-known examples of covering problems include set cover, facility location, load balancing, and some prominent examples of packing problems are bin packing, knapsack, maximum coverage problem.
Traditionally, covering problems were studied under the min-sum and min-max objectives (and in some cases with \(\ell_p\)-norm objectives), but in recent years, a great deal of attention has been devoted to minimum-norm optimization [1], wherein one considers a much-richer class of objectives defined by arbitrary monotone, symmetric norms (and their generalizations [2]). A norm \(f:\mathbb{R}^n\mapsto\mathbb{R}_{+}\) is symmetric if it is invariant under permutation of coordinates; a monotone norm satisfies \(f(x)\geq f(y)\) whenever \(x\geq y\geq 0\). In a minimum-norm optimization problem, we are given a monotone, symmetric norm \(f\), the goal is to minimize the \(f\)-norm of the cost-vector induced by a solution (e.g., machine-load vector in load balancing, or client-assignment cost vector in facility location and clustering). Chakrabarty and Swamy [1] initiated this research direction, motivating it from two distinct perspectives. First, monotone, symmetric norms constitute a very versatile class of objectives that afford one a great deal of modeling power. They include \(\ell_p\) norms, the natural class of \(\mathsf{Top}_{\ell}\) norms3
(which yield an alternate means of interpolating between the min-max and min-sum objectives), and ordered norms; moreover, their closure properties imply that one can capture multiple different norm constraints by suitably defining a single monotone, symmetric norm.4 Second, min-sum and min-max problems are often handled via different approaches, and the development of techniques for minimum-norm optimization yields a unified way of approaching these, and various other, objectives. Consequently, there has been much subsequent work investigating minimum-norm optimization for other problems [4]–[8], and in stochastic [3], [9] and online settings [2], [10], [11], some of which has also considered objectives that are more general than monotone, symmetric norms.
However, to our knowledge, essentially all prior work on minimum-norm optimization problems has focused on covering problems, where the norm is in the objective, and there is no prior work that considers packing problems with resource constraints that are modeled by monotone, symmetric norms.5
We initiate the study of norm-budgeted packing problems, which are packing problems with the common distinguishing feature that the resource constraints underlying the packing problem are modeled by a norm budget constraint. We consider problems that fall into the following setup. As is standard in packing problems, there is an underlying ground set of \(n\) elements, where each element \(e\) has a reward \(\mathsf{rwd}_e\geq 0\) and size \(w_e\geq 0\), and a non-empty collection \(\mathcal{S}\subseteq 2^{[n]}\) of candidate solutions that is downwards-closed, i.e., closed under taking subsets. The tuple \(([n],\mathcal{S})\) is often called an independence system. We are also given a monotone, symmetric norm \(f\), and a budget \(B\). Each solution \(T\in\mathcal{S}\) induces a size-vector, denoted \(\ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})\). Sometimes the size-vector \(\ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})\) will simply be the size-weighted characteristic vector of \(T\), which is the vector in \(\mathbb{R}^n\) with coordinates \(w_e\) if \(e\in T\), and \(0\) otherwise. In other settings, this size-vector is formed by aggregating some of the \(w_e\) values for elements \(e\in T\). For instance, in a scheduling problem, where we have jobs and machines and have to select a suitable subset of jobs to assign to machines, a natural choice for the size-vector is the vector of machine-loads. The goal is to maximize \(\mathsf{rwd}(T):=\sum_{e\in T}\mathsf{rwd}_e\) subject to the constraint \(T\in\mathcal{S}\), and the norm budget constraint \(f\bigl( \ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})\bigr)\leq B\).
We use the term norm-budgeted packing problem, to describe a generic problem in the above setup. We assume that the norm \(f\) is specified via a feasibility oracle that given a vector \(v\) and scalar \(\lambda\) determines if \(f(v)\leq\lambda\). We state approximation guarantees as values that are at least \(1\): an \(\alpha\)-approximation, for \(\alpha\geq 1\), denotes that we obtain objective value at least (optimum)/\(\alpha\).
Here are two canonical problems captured by this setup.
Norm-budgeted knapsack (\(\mathsf{NormBudgKnap}\)), Section 3. Here the ground set consists of items that we seek to pack in a knapsack subject to the norm budget constraint. So we have \(\mathcal{S}=2^{[n]}\), and the size-vector \(\ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})\) corresponding to an item-set \(T\subseteq[n]\) is simply the size-weighted characteristic vector \(\ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})\in\mathbb{R}^n\); that is, \(\ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})_i\) is \(w_i\) if \(i\in T\), and is \(0\) otherwise. (So the monotone, symmetric norm \(f\) is over \(\mathbb{R}^n\).) Observe that taking \(f\) to be the \(\ell_1\) norm, we obtain the standard knapsack problem, so \(\mathsf{NormBudgKnap}\) is clearly NP-hard.
We develop a polynomial time approximation scheme (PTAS) for this problem (Theorem 2.)
Norm-budgeted maximum generalized-assignment problem (\(\mathsf{NormBudgMaxGAP}\)). Here, we are given a set \(J\) of jobs, and a set of \(m\) machines. Processing a job \(j\) on machine \(i\) incurs \(p_{ij}\) time, and yields reward \(\mathsf{rwd}_{ij}\). We have a monotone, symmetric norm \(f:\mathbb{R}^m\mapsto\mathbb{R}_{+}\) and a budget \(B\). A solution specifies an assignment \(\sigma:S\mapsto[m]\) of some subset \(S\subseteq J\) of jobs to machines, which induces a load-vector in \(\mathbb{R}^m\), where the load on machine \(i\) is \(\sum_{j\in S:\sigma(j)=i}p_{ij}\), and earns reward \(\sum_{j\in S}\mathsf{rwd}_{\sigma(j)j}\). The goal is to find a maximum-reward solution satisfying the constraint \(f(\text{load vector})\leq B\).
To cast this in our general setup, we take the ground set \(E\) to be the edges of the complete bipartite graph with node-set \(J\cup[m]\), and map the \(p_{ij}\)s and \(\mathsf{rwd}_{ij}\)s to the sizes and rewards respectively of edges in \(E\). We take \(\mathcal{S}=\{T\subseteq E: |T\cap\delta(j)|\leq 1\text{ for all j\in J}\}\), and the size-vector \(\ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})\in\mathbb{R}^m\) associated with \(T\in\mathcal{S}\) is given by \(\bigl(\sum_{e\in T\cap\delta(i)}p_e\bigr)_{i\in[m]}\).
The above setup corresponds to scheduling on unrelated machines. The setting of identical machines is the special case where we have \(p_{ij}=p_j\) and \(\mathsf{rwd}_{ij}=\mathsf{rwd}_j\) for every machine \(i\in[m]\), job \(j\in J\). An intermediate setting is related machines, wherein each machine \(i\in[m]\) has a speed \(s_i>0\), and we have \(p_{ij}=\frac{p_j}{s_i}\), \(\mathsf{rwd}_{ij}=\mathsf{rwd}_j\) for every \(i\in[m]\), \(j\in J\).
The special case of \(\mathsf{NormBudgMaxGAP}\) where \(f\) is the \(\ell_\infty\) norm—i.e., find a maximum-reward set of jobs that can be scheduled within a certain makespan—was considered by Fleischer et al. [13], who called this problem maximum-GAP. They devised a \(\frac{e}{e-1}\)-approximation for this problem, and this problem is known to be APX-hard [14]. The further special cases involving identical machines and related machines correspond respectively to the uniform multiple knapsack problem (\(\mathsf{MKP}\)) and non-uniform \(\mathsf{MKP}\),6 both of which are strongly NP-hard [14] and admit a PTAS [14]–[16].
We obtain a \((4.582+\varepsilon)\)-approximation for \(\mathsf{NormBudgMaxGAP}\)(Theorem [normschedthm]). For \(\mathsf{NormBudgMaxGAP}\) on identical and related machines, we obtain a PTAS. This yields a tight complexity result for the latter two problems, as these problems are strongly NP-hard. Moreover, our PTAS substantially generalizes the PTAS for non-uniform \(\mathsf{MKP}\)(which is the special case of the related-machines problem where \(f\) is the \(\ell_{\infty}\)-norm).
We consider the norm-budgeted versions of various other fundamental packing problems, including matching, maximum-weight independent set, \(k\)-facility location; we define these problems in Section 2.1. We develop constant-factor approximation algorithms for all these problems. Table ¿tbl:restable? summarizes the approximation factors we obtain for the various norm-budgeted packing problems we consider.
l|l|l & &
& & [-10pt]
&
&
&
& &
& &
Besides the fact that monotone, symmetric norms include various prominent norms of interest, a less-evident source of modeling power of monotone, symmetric norms, which was alluded to earlier, stems from the fact that a single monotone-symmetric-norm packing constraint can be used to aggregate multiple norm-budget constraints.
As an illustrative example, consider a setting involving selecting jobs for processing and assigning them to servers (as in \(\mathsf{NormBudgMaxGAP}\)). A natural constraint that one would like to impose is a makespan bound \(\bigl\| \ifmmode \settoheight{\xvec@height}{\mathsf{load}} \settodepth{\xvec@depth}{\mathsf{load}} \settowidth{\xvec@width}{\mathsf{load}} \else \settoheight{\xvec@height}{\mathsf{load}} \settodepth{\xvec@depth}{\mathsf{load}} \settowidth{\xvec@width}{\mathsf{load}} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{load}\bigr\|_\infty\leq B_{\mathsf{mksp}}\), where \(\ifmmode \settoheight{\xvec@height}{\mathsf{load}} \settodepth{\xvec@depth}{\mathsf{load}} \settowidth{\xvec@width}{\mathsf{load}} \else \settoheight{\xvec@height}{\mathsf{load}} \settodepth{\xvec@depth}{\mathsf{load}} \settowidth{\xvec@width}{\mathsf{load}} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{load}\) is the load vector from the assignment, ensuring that no server is overloaded. We may seek more fine-grained load balancing, where we also look to avoid (larger) congestion hot-spots by imposing a bound on the total load handled by any set of \(\ell\) machines; this yields a norm constraint \(\mathsf{Top}_{\ell}( \ifmmode \settoheight{\xvec@height}{\mathsf{load}} \settodepth{\xvec@depth}{\mathsf{load}} \settowidth{\xvec@width}{\mathsf{load}} \else \settoheight{\xvec@height}{\mathsf{load}} \settodepth{\xvec@depth}{\mathsf{load}} \settowidth{\xvec@width}{\mathsf{load}} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{load})\leq B_{\mathsf{Top}_{\ell}}\). Additionally, energy considerations often arise and may dictate a bound on the total energy consumed; the energy consumed is typically modeled by the \(\ell_2^2\) objective of the load vector, so this leads to the norm constraint \(\bigl\| \ifmmode \settoheight{\xvec@height}{\mathsf{load}} \settodepth{\xvec@depth}{\mathsf{load}} \settowidth{\xvec@width}{\mathsf{load}} \else \settoheight{\xvec@height}{\mathsf{load}} \settodepth{\xvec@depth}{\mathsf{load}} \settowidth{\xvec@width}{\mathsf{load}} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{load}\bigr\|_2\leq B_{\mathsf{energy}}\). Now observe that these multiple constraints can be easily captured by defining the aggregate monotone, symmetric norm \(f(x):=\max\left\{\frac{\|x\|_\infty}{B_{\mathsf{mksp}}},\frac{\|x\|_2}{B_{\mathsf{energy}}},\frac{\mathsf{Top}_{\ell}(x)}{B_{\mathsf{Top}_{\ell}}}\right\}\), and imposing the norm constraint \(f( \ifmmode \settoheight{\xvec@height}{\mathsf{load}} \settodepth{\xvec@depth}{\mathsf{load}} \settowidth{\xvec@width}{\mathsf{load}} \else \settoheight{\xvec@height}{\mathsf{load}} \settodepth{\xvec@depth}{\mathsf{load}} \settowidth{\xvec@width}{\mathsf{load}} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{load})\leq 1\).
It is not hard to imagine packing problems that feature such multiple resource constraints, and the framework of norm-budgeted packing problems gives a convenient way of incorporating such constraints when these constraints arise from monotone, symmetric norms. In fact, more generally, one can incorporate budget constraints arising from increasing, symmetric, convex functions.7 Note that we crucially rely here on the generality (specifically, the closure properties) of monotone, symmetric norms (which allows us to work with the maximum of the scaled individual resource constraints8) and the versatility afforded by the setting of norm-budgeted packing problems where we allow a budget constraint specified by a norm belonging to this rich class of norms.
Covering and packing problems can be viewed as “flipped” versions of each other; in the covering counterpart of a norm-budgeted packing problem, we need to serve all entities and minimize the norm of the size-vector induced by a solution. As discussed under “Technical challenges and overview” below, the techniques developed for minimum-norm (covering) optimization problems are not strong enough to yield “true” approximation guarantees for norm-budgeted packing problems, where we do not violate the norm budget. However, interestingly, and somewhat surprisingly, for certain norm-budgeted packing problems, we obtain stronger guarantees than what is known for the covering counterpart of the problem. For instance, for norm-budgeted matching, wherein the norm-budget constraint applies to the size-weighted characteristic vector, we obtain a \((3+\varepsilon)\)-approximation (Theorem 1), but for the covering version, where all nodes have to be matched, even on bipartite graphs, nothing better than an \(O(\log n)\)-approximation is known and the natural LP-relaxation has large integrality gap [6]. A similar situation arises with norm-budgeted \(k\)-facility location (\(\mathsf{NormBudg}k\mathsf{FL}\)), wherein we need to open \(k\) facilities and select clients to be assigned to facilities, and there is a budget constraint on the norm of the resulting facility-cost vector. We obtain an \(O(1)\)-approximation for \(\mathsf{NormBudg}k\mathsf{FL}\)(Theorem [normflthm]). In stark contrast, for the corresponding covering problem, where all clients have to be assigned and we seek to minimize the norm of the facility-cost vector,9 no \(O(1)\)-approximation algorithm is known even for the special case where \(f\) is the \(\ell_\infty\) norm, which is known as the minimum-load \(k\)-facility location problem [17].
Our work opens up the area of norm-budgeted packing problems as a promising avenue for further research. Our array of results shows that, notwithstanding the difficulties posed by a hard norm budget constraint, one can develop strong approximation guarantees for these problems. Various interesting research directions arise from our work. We mention a few of these below. One immediate direction is to consider the norm-budgeted packing versions of other combinatorial-optimization problems, including the generalized load balancing [4] and generalizing clustering [7] problems that were proposed in the covering setting. In the covering setting, no \(O(1)\)-approximation is possible or known: generalized load balancing is set-cover hard, and generalized clustering contains minimum-load \(k\)-facility location as a special case, which has proved to be a bottleneck. However, as noted earlier, these difficulties for the covering problem need not necessarily translate to the norm-budgeted packing problem. It would be quite interesting if one could obtain \(O(1)\)-approximation guarantees for the norm-budgeted packing counterparts of generalized load balancing and generalized clustering.
Second, it would be very interesting to consider the submodular generalizations of these norm-budgeted packing problems, wherein there is a monotone, submodular function that specifies the reward of a set of items. This is a vast generalization of the current setup, and it would be quite noteworthy if one could obtain guarantees for these submodular-reward problems that qualitatively match the guarantees obtained for their regular (i.e., additive-reward) counterparts. In Section 7, we obtain some partial results in this direction: we obtain constant-factor approximation guarantees for submodular norm-budgeted knapsack (via a very different technique from what is used for \(\mathsf{NormBudgKnap}\)) and submodular norm-budgeted \(\mathsf{Max}\mathsf{GAP}\) on related machines. We leave further exploration of this class of problems for future work.
Finally, another exciting direction is to consider norm-budgeted packing problems in more general environments, such as stochastic settings (as was done in [9] for minimum-norm optimization), and online settings (analogous to the work of [2], [10], [11]).
One of the main challenges that arises when working with the generality of an arbitrary monotone, symmetric norm \(f\) is that the norm \(f\) may couple the coordinates of the size vector in complex ways. This makes it difficult to infer bounds on the norm \(f\) from bounds on its individual coordinates. (In contrast, with \(\ell_\infty\) there is no coupling; with \(\ell_1\), the coupling manifests as a simple sum over all coordinates; with \(\ell_p\) norms, one can often move to the \(\ell_p^p\) objective, which is separable over the coordinates; see “\(\ell_p\) norms” in Section 2.2.)
Two main insights have emerged from the work on minimum-norm covering optimization to overcome this difficulty: (1) it suffices to reason about \(\mathsf{Top}_{\ell}\) norms, for logarithmically many \(\ell\)-values (say all powers of \((1+\varepsilon)\)); and (2) For a \(\mathsf{Top}_{\ell}\) norm, one can move to a suitable coordinate-wise separable proxy function by guessing certain coordinates of the vector to which the norm is applied. Together, these two insights enable one to treat the minimum-norm covering problem as a collection of logarithmically many min-sum constraints, and this is the perspective that has largely led to the various positive results for minimum-norm covering problems [1], [3], [4].
When looking to apply these same insights to norm-budgeted packing problems, where the norm appears in the constraint, we run into an immediate stumbling block. Essentially, all of this machinery leads to an inherent \((1+\varepsilon)\)-factor violation in the norm. In particular, the only known way of reasoning about a general monotone, symmetric norm is via controlling the \(\mathsf{Top}_{\ell}\) norms, but (D1) controlling \(\mathsf{Top}_{\ell}\)-norms only for \(\ell\)-values that are powers of \((1+\varepsilon)\) is too coarse to yield a tight bound on the norm. Furthermore, (D2) for problems like \(\mathsf{NormBudgMaxGAP}\), where coordinates of the size vector \(\ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})\) are obtained by aggregating the \(w_e\)’s for elements \(e\in T\), we can only guess the (logarithmically-many) coordinates of \(\ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})\) within a \((1+\varepsilon)\)-factor, and this is again too coarse to yield a tight bound on the norm (as seen from Lemma 1 (a)). (We remark that for the very special case when \(f\) is a \(\mathsf{Top}_{\ell}\)-norm, difficulty (D1) does not arise, and one can overcome difficulty (D2) in a simple way; see Section 8. For example, when \(\ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})\) is the size-weighted characteristic vector, we can guess the \(\ell\)-th largest entry of \(\ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})\) exactly.)
The upshot is that for a general monotone, symmetric norm, the techniques developed for minimum-norm covering problems only seem suitable for obtaining bicriteria solutions, where we violate the norm budget by (at least) a \((1+\varepsilon)\)-factor. (In Appendix 11, we sketch how such bicriteria solutions can be obtained.) Moreover, unlike the setting with \(\ell_1\) norms, the gap between bicriteria and unicriteria solutions may be quite large, even when every single element “fits within the budget”; Theorem 3 demonstrates this for \(\mathsf{NormBudgKnap}\). This also implies that the natural convex-programming relaxation that incorporates the norm-budget constraint has a large integrality gap (see Theorem 3). Thus, the chief challenge in obtaining a true approximation algorithm for a norm-budgeted packing problem lies in ensuring that the norm-budget constraint is not violated, and we need to come up with novel ideas to address this challenge.
We come up with two main ideas to handle the norm budget constraint. For a vector \(v\geq 0\), we use \(v^{\:\!\downarrow}\) to denote \(v\) with its coordinates sorted in non-increasing order. Let \(O^*\) denote some fixed optimal solution, and \(\mathit{OPT}:=\mathsf{rwd}(O^*)\) be the optimal value. For the norm-budgeted versions of knapsack, matching, and maximum-weight independent set (\(\mathsf{MWIS}\)), where \(\ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})\) is the size-weighted characteristic vector of a solution \(T\in\mathcal{S}\) (recall that this means that \(\ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})_e=w_e\) if \(e\in T\), and \(0\) otherwise), we proceed from first principles to find a solution \(T\) such that \(\ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})^{{\:\!\downarrow}}\leq \ifmmode \settoheight{\xvec@height}{{{w}}({O^*})} \settodepth{\xvec@depth}{{{w}}({O^*})} \settowidth{\xvec@width}{{{w}}({O^*})} \else \settoheight{\xvec@height}{{{w}}({O^*})} \settodepth{\xvec@depth}{{{w}}({O^*})} \settowidth{\xvec@width}{{{w}}({O^*})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({O^*})^{{\:\!\downarrow}}\). This is based on an enumeration step, where we group elements of similar reward, and guess, up to a certain bounded error, the number of elements \(\widetilde{N}_j\) that \(O^*\) includes from each reward bucket \(\mathsf{Bkt}_j\). We argue that we can obtain these \(\widetilde{N}_j\) estimates in polynomial time, and given these guesses, for \(\mathsf{NormBudgKnap}\), we proceed by simply choosing the \(\widetilde{N}_j\) smallest-size items from each reward bucket \(\mathsf{Bkt}_j\). This yields the PTAS for \(\mathsf{NormBudgKnap}\)(Section 3). For \(\mathsf{NormBudgMWIS}\)(and \(\mathsf{NormBudgMatch}\)), we need to employ a more sophisticated greedy strategy, where we choose a suitable number of small-size elements from each prefix set \((\mathsf{Bkt}_0\cup\ldots\cup\mathsf{Bkt}_j)\) (Section 4). Interestingly, our guarantees for \(\mathsf{NormBudgKnap}\), \(\mathsf{NormBudgMWIS}\), and \(\mathsf{NormBudgMatch}\) utilize only that \(f\) is monotone and symmetric, and so these guarantees hold when the budget constraint is prescribed by any monotone, symmetric function (which need not be convex or homogeneous); see Remark [genfun].
For the norm-budgeted versions of \(\mathsf{GAP}\), separable assignment problem (\(\mathsf{SAP}\)), and \(k\mathsf{FL}\), where the coordinates of the size-vector \(\ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})\) are obtained by aggregating individual \(w_e\) values, we come up with a general reduction (Section 5) that allows us to reduce our task to that of obtaining a bicriteria approximation for the problem, provided that we can also solve a “one-job-per-machine” variant of the problem where we are additionally constrained to assign at most one job per machine (see Theorems 8 and 9). This reduction is extremely useful because the flexibility of working with bicriteria solutions allows one to effectively utilize the machinery developed for tackling minimum-norm covering problems. In Section [sepfl], we develop a configuration-LP rounding approach to obtain a bicriteria approximation for \(\mathsf{NormBudgSepFL}\), which contains \(\mathsf{NormBudgSAP}\), \(\mathsf{NormBudg}k\mathsf{FL}\)(all defined in Section 2.1), and \(\mathsf{NormBudgMaxGAP}\), as special cases. The one-job-per-machine problem becomes a special case of \(\mathsf{NormBudgMWIS}\) on a suitably-defined independence system. Combining these ingredients via our reduction yields our \(O(1)\)-approximation for \(\mathsf{NormBudgMaxGAP}\) and \(\mathsf{NormBudg}k\mathsf{FL}\). For \(\mathsf{NormBudgSAP}\) and \(\mathsf{NormBudgSepFL}\), where the input specifies an independence system \(\mathcal{M}_i\) for every machine/facility \(i\), given a \(\beta\)-approximation algorithm for solving (standard) \(\mathsf{MWIS}\) on \(\mathcal{M}_i\), or a bicriteria \((\rho,\gamma)\)-approximation algorithm for budgeted\(\mathsf{MWIS}\) on \(\mathcal{M}_i\), we obtain approximation factors of \(O(\beta)\) or \(O(\gamma\rho)\) for the norm-budgeted problem.
We point out that the above reduction does not by itself alleviate the difficulty of obtaining a true approximation guarantee for a norm-budgeted packing problem. Rather, the reduction illuminates the insight that, if a bicriteria approximation can be obtained without much difficulty (for instance, by utilizing the machinery for minimum-norm covering problems), then the crux of obtaining a true approximation guarantee boils down to obtaining a true approximation guarantee for the one-job-per-machine variant of the problem. In a certain sense, this alludes to the more fundamental nature of \(\mathsf{NormBudgKnap}\), \(\mathsf{NormBudgMatch}\), and \(\mathsf{NormBudgMWIS}\) problems.
For submodular norm-budgeted knapsack (\(\mathsf{SubmodNBKnap}\)), we proceed in a fundamentally-different manner from (regular) \(\mathsf{NormBudgKnap}\). For \(\mathsf{NormBudgKnap}\), as outlined above, we use a reward-bucketing approach. In essence, with reward-bucketing, we set things up so that any solution choosing the correct number of items from each reward bucket yields good reward, and a particular choice—picking the smallest-size items—ensures feasibility. With a submodular reward function, it is unclear how to define reward buckets, since the reward function is not separable across items; moreover, picking the smallest-size items is not a strategy that yields good objective value for a cardinality-constrained submodular-maximization problem.
Our approach is based, loosely speaking, on an alternate size-bucketing approach, where the size buckets are defined using an optimal solution. However, unlike reward-bucketing, we cannot quite identify these size buckets, and items in a size-bucket need not have similar size! Despite these challenges, we argue that, given a target reward-sequence of incremental rewards to obtain from these size buckets, one can build up a solution by including a suitable set of items from each size bucket. In contrast with reward-bucketing, the size-bucketing approach is tailored so that any choice of picking a certain number of items from each size bucket yields feasibility, and in order to obtain good reward, one solves a cardinality-constrained submodular-maximization problem. The choice of the target incremental-reward sequence is rather tricky, and is somewhat correlated with the execution of the algorithm.
For submodular norm-budgeted \(\mathsf{Max}\mathsf{GAP}\)(\(\mathsf{SubmodNBMaxGAP}\)) on related machines (Section 7.2), we observe that the reduction used for \(\mathsf{NormBudgMaxGAP}\) still works with submodular rewards. Consequently, as before, we need to: (a) obtain a bicriteria guarantee for the problem; and (b) solve the one-job-per-machine variant of the problem. The latter essentially boils down to solving \(\mathsf{SubmodNBKnap}\): for identical machines, the one-job-per-machine problem is precisely \(\mathsf{SubmodNBKnap}\); for related machines, we do not have such a crisp correspondence but one can nevertheless argue that the guarantee of our algorithm for \(\mathsf{SubmodNBKnap}\) carries over to this problem. So we focus on task (a), for which we devise an algorithm that repeatedly calls an algorithm for knapsack-constrained submodular maximization.
The reduction-based approach used to tackle \(\mathsf{NormBudgMaxGAP}\)(on unrelated machines) is too coarse to yield a PTAS for related machines, and we utilize a very different approach to obtain the PTAS. This is quite problem-specific and is the most technically-involved portion of the paper. This section can be read independently of Sections 4–8. Similar to \(\mathsf{NormBudgKnap}\), we first identify a set of jobs, \(A\), assigned by a near-optimal solution \(\widetilde{\sigma}:A\mapsto[m]\).
For identical machines (Section 9.1), we start by guessing the “lonely” jobs in \(A\): these are jobs \(j\) for which no other job is assigned by \(\widetilde{\sigma}\) to the machine \(\widetilde{\sigma}(j)\); one can argue that they form a prefix of \(A\) when we consider jobs in \(A\) in non-increasing order of size. One useful insight is that the loads on the remaining machines \(I\) (i.e., machines not holding lonely jobs) are roughly balanced under \(\widetilde{\sigma}\). Given this, we can categorize jobs as “large” or “small”, where large jobs have the property that only \(O(\frac{1}{\varepsilon}\bigr)\) such jobs are assigned to any given machine by \(\widetilde{\sigma}\). Hence, using a job-configuration enumeration approach, we can find an assignment of these large jobs to the remaining machines that is consistent with \(\widetilde{\sigma}\). Finally, to assign the small jobs, conceptually, we solve a convex program to find a fractional assignment of these jobs. This convex program is structured enough that we can give a closed-form expression for the optimal solution (see Lemma 21). We round this fractional assignment using \(\mathsf{GAP}\) rounding. The resulting assignment need not be feasible, but removing at most one job per machine would make it feasible. These removed jobs may however carry large reward, so instead of dropping them, we temporarily create some extra machines to hold these removed jobs. One can argue that the number of extra machines is \(O(\varepsilon)|I|\); hence, retaining the \(|I|\) largest-reward machines yields a feasible solution without sacrificing the reward by much.
The PTAS for related machines (Section 9.2) is considerably more complicated. At a high level, we are able to eventually group machines into \(O\bigl(\frac{\log m}{\varepsilon}\bigr)\) groups so that, roughly speaking, we can treat each group as an identical-machines instance, and extend, to an extent, the approach used in the PTAS for identical machines to solve these instances. One of the novel ideas here is that this grouping is not based on machine speeds, as is often the case when working with related machines (e.g., speed smoothing [18]), and also what is used for the special case of non-uniform \(\mathsf{MKP}\) [14]. Instead, the grouping is based on the total work assigned to a machine, where work (as opposed to load) of a machine denotes the total processing time of jobs assigned to the machine. Indeed, the speeds of machines in the same group can vary considerably. One benefit of considering the work-vector is that this is much more structured compared to the load vector: in particular, one can assume that the work assigned to a machine is non-decreasing in its speed. So given a work-vector for a set of machines, we know how to assign (the jobs corresponding to) its coordinates to machines. Given this, one can now ignore speeds, and treat each group as an collection of identical machines, which yields a way forward by leveraging and building upon suitable ideas from the PTAS for identical machines.
We limit ourselves to a discussion of work that is more closely related to monotone, symmetric norms, or their generalizations. As noted earlier, Chakrabarty and Swamy [1] initiated the study of minimum-norm optimization problems, as a far-reaching generalization of some earlier work on \(k\)-clustering that considered \(\mathsf{Top}_{\ell}\) norms and ordered norms [19], [20]. They devised constant-factor approximation algorithms for the minimum-norm generalizations of load balancing and \(k\)-clustering. This led to much follow-up work on minimum-norm optimization problems that considered other combinatorial-optimization problems [6], more-general ways of aggregating costs using monotone, symmetric norms [4], [5], [7], [8], and norm-based objectives in stochastic settings [3], [9] and online settings [2], [10], [11]. The latter work on online problems also applies to objectives that are more general than monotone, symmetric norms.
All of this work focuses on minimum-norm covering problems, where the norm appears in the objective. However, Kesselheim et al. [11] consider, as a means of solving an online covering problem with a norm-based objective, the “flipped” online packing problem where the norm in the objective of the covering problem yields a norm budget constraint in the packing problem, and the objective in the packing problem is, roughly speaking, to maximize the number of covering constraints that are satisfied. Their results violate the norm budget constraint, which is unavoidable in the online setting. Our results can be seen as complementary to and orthogonal to, their results: we consider the offline setting, and are able to obtain stronger constant-factor approximation guarantees and without violating the norm budget constraint in the offline setting. Neogi et al. [12] consider a mechanism-design problem with multiple \(\mathsf{Top}_{\ell}\) budget constraints. The underlying algorithmic problem is to maximize a set-based reward function \(v(T)\) subject to the size-weighted characteristic vector of \(T\) satisfying \(k\) given \(\mathsf{Top}_{\ell}\) budget constraints, and they obtain an \(O(k)\)-approximation for this when \(v\) is subadditive.10 Since multiple \(\mathsf{Top}_{\ell}\) budget constraints can be folded into one monotone, symmetric norm, our work yields the following much-improved guarantees for their problem: a PTAS for their \(v\) is additive, and an \(O(1)\)-approximation when \(v\) is submodular.
For an integer \(k\), we use \([k]\) to denote \(\{1,\ldots,k\}\), and \(\llbracket{k}\rrbracket\) to denote \(\{0,1,\ldots,k\}\). Recall that for a vector \(v\geq 0\), we use \(v^{\:\!\downarrow}\) to denote \(v\) with its coordinates sorted in non-increasing order. For a subset \(S\) of coordinates, we use \(v(S)\) to denote \(\sum_{j\in S}v_j\). For a singleton set \(\{e\}\), slightly abusing notation, we use the more-compact expression, \(f(w_e)\) to denote \(f\bigl( \ifmmode \settoheight{\xvec@height}{{{w}}({\{e\}})} \settodepth{\xvec@depth}{{{w}}({\{e\}})} \settowidth{\xvec@width}{{{w}}({\{e\}})} \else \settoheight{\xvec@height}{{{w}}({\{e\}})} \settodepth{\xvec@depth}{{{w}}({\{e\}})} \settowidth{\xvec@width}{{{w}}({\{e\}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({\{e\}})\bigr)\).
All our algorithms only need a feasibility oracle for the norm \(f\), which, given a candidate vector \(v\) (e.g., \(\ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})\)) and scalar \(\lambda\), determines if \(f(v)\leq\lambda\) or not.11
In Section 1.1, we defined the \(\mathsf{NormBudgKnap}\) and \(\mathsf{NormBudgMaxGAP}\) problems. In addition to these problems, we consider various other norm-budgeted packing problems, which we now define. Specifying a norm-budgeted packing problem entails specifying the candidate-solution set \(\mathcal{S}\) (i.e., the independence system) and the size-vector \(\ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})\) induced by a candidate solution \(T\in\mathcal{S}\) (which also determines the dimension of the norm \(f\)). But it will sometimes be more natural and intuitive to describe the problem first in its native context and then show how it can be cast in the above framework. Fig. [probcomp] depicts some relationships between the various problems considered in this paper.
Norm-budgeted matching (\(\mathsf{NormBudgMatch}\)). The ground set here is the edge-set of an undirected graph \(G=(V,E)\), and \(\mathcal{S}\) is the collection of all matchings in \(G\). For a matching \(T\), \(\ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})\in\mathbb{R}^E\) is the size-weighted characteristic vector of \(T\).
Observe that when the graph \(G\) itself is a matching, \(\mathsf{NormBudgMatch}\) reduces to the norm-budgeted knapsack problem. When \(f\) is the \(\ell_1\) norm, \(\mathsf{NormBudgMatch}\) has been studied as the budgeted matching problem, which admits a PTAS [23], [24].
Norm-budgeted maximum-weight independent set (\(\mathsf{NormBudgMWIS}\)). Here \(\ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})\), for \(T\in\mathcal{S}\), is the size-weighted characteristic vector of \(T\). Clearly, \(\mathsf{NormBudgMatch}\) and \(\mathsf{NormBudgKnap}\) are special cases of \(\mathsf{NormBudgMWIS}\). When \(f\) is the \(\ell_1\) norm and the independence system is a matroid, we obtain the budgeted matroid independent set problem, which admits a PTAS [23], [24] but not an FPTAS [21]. \(\mathsf{NormBudgMWIS}\) on a \(k\)-set system generalizes \(k\)-matroid intersection, for which an \(\Omega(k)\)-factor hardness of approximation was recently shown [22].
Norm-budgeted separable assignment problem (\(\mathsf{NormBudgSAP}\)). This is a generalization of norm-budgeted \(\mathsf{GAP}\), wherein the input also specifies an independence system \(\mathcal{M}_i=(J,\mathcal{S}_i)\) for each machine \(i\), and the output assignment must satisfy the additional constraint that the set of jobs scheduled on each machine \(i\) must be an independent set of \(\mathcal{M}_i\); as before, the size-vector of an assignment is the resulting machine-load vector. (\(\mathsf{NormBudgMaxGAP}\) is the special case where each \(\mathcal{M}_i\) is the free matroid, i.e., every subset of jobs is independent.)
As with \(\mathsf{NormBudgMaxGAP}\), one can cast this in our general setup by considering the complete bipartite graph \(G=(J\cup[m],E)\) (where the rewards and sizes of edges are the rewards and sizes of the corresponding (job, machine) pairs). The collection of candidate solutions is now \[\mathcal{S}=\Bigl\{T\subseteq E:\;|T\cap\delta_G(j)|\leq 1\quad \forall j\in J, \qquad \{j\in J: ij\in T\}\in\mathcal{S}_i\quad \forall i\in[m]\Bigr\},\] and (as with \(\mathsf{NormBudgMaxGAP}\)) we have \(\ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})\in\mathbb{R}^m=\bigl(\sum_{e\in T\cap\delta_G(i)}p_e\bigr)_{i\in[m]}\) for \(T\in\mathcal{S}\).
\(\mathsf{NormBudgSAP}\) is a substantial generalization of the separable-assignment-problem (\(\mathsf{SAP}\)) considered by [13]. The problem studied by [13] does not involve job sizes or a norm budget constraint. Note that while job sizes and a bound on the load of a machine \(i\) can be incorporated via the independence system \(\mathcal{M}_i\), the norm-budget constraint couples the various machines making the problem highly non-separable. Hence, \(\mathsf{NormBudgSAP}\) does not fall into the framework of [13], and is a strict generalization of \(\mathsf{SAP}\).
The special case of \(\mathsf{NormBudgSAP}\) where each \(\mathcal{M}_i\) encodes that at most one job can be scheduled on machine \(i\) corresponds to norm-budgeted matching on a bipartite graph whose vertex bipartition consists of job nodes and machine nodes. As we will show in Section 5, the approximability of the general \(\mathsf{NormBudgSAP}\) and \(\mathsf{NormBudgMaxGAP}\) problems is closely related to the approximability of this one-job-per-machine variant.
Norm-budgeted \(k\)-facility location (\(\mathsf{NormBudg}k\mathsf{FL}\)). In this problem, we are given a set of facilities \(\mathcal{F}\), and a set of clients \(\mathcal{C}\). Assigning a client \(j\) to facility \(i\), incurs an assignment cost \(c_{ij}\), and earns reward \(\mathsf{rwd}_{ij}\). For this problem, we always use \(i\) to index facilities, and \(j\) to index clients. The input also specifies an integer \(k\geq 0\), a monotone, symmetric norm \(f:\mathbb{R}^k\mapsto\mathbb{R}_{+}\), and budget \(B\). A solution specifies a set \(F\subseteq\mathcal{F}\) of (at most) \(k\) facilities to open, and an assignment \(\sigma:S\mapsto F\) of some subset \(S\subseteq\mathcal{C}\) of clients to these facilities. Such an assignment induces a facility-load vector in \(\mathbb{R}^k\) indexed by the facilities in \(F\), where the load on facility \(i\) is the total assignment cost \(\sum_{j\in S:\sigma(j)=i}c_{ij}\) of clients assigned to \(i\), and earns reward \(\sum_{j\in S}\mathsf{rwd}_{\sigma(j)j}\). The goal is to find a maximum-reward solution subject to the norm-budget constraint \(f(\text{facility-load vector})\leq B\). Note that while facility-location problems often assume metric assignment costs, we do not make this assumption here.
As with \(\mathsf{NormBudgSAP}\), we also consider a more-general problem, norm-budgeted separable \(k\)-facility location (\(\mathsf{NormBudgSepFL}\)), wherein we are additionally given an independence system \(\mathcal{M}_i=(\mathcal{C},\mathcal{S}_i)\) for each facility \(i\in\mathcal{F}\), and the output assignment must also satisfy that the set of clients assigned to each open facility \(i\) is independent in \(\mathcal{M}_i\). For example, \(\mathcal{M}_i\) can encode a capacity constraint that at most \(u_i\) clients may be assigned to facility \(i\), and so \(\mathsf{NormBudgSepFL}\) can be used to model, among other things, capacitated \(\mathsf{NormBudg}k\mathsf{FL}\).
Observe that if we take \(k=|\mathcal{F}|\) in \(\mathsf{NormBudgSepFL}\), then we recover \(\mathsf{NormBudgSAP}\) as a special case. Similar to \(\mathsf{NormBudgSAP}\), we can cast \(\mathsf{NormBudgSepFL}\) in our general setup by considering the ground set to be the edge-set of the complete bipartite graph \(G=(\mathcal{C}\cup\mathcal{F}, E)\). The reward and size of an edge are the reward and assignment cost of the corresponding \(i,j\) pair respectively (where \(i\in\mathcal{F}, j\in\mathcal{C}\)). The solution-set is \[\mathcal{S}=\Bigl\{T\subseteq E:\, |T\cap\delta_G(j)|\leq 1 \;\,\forall j\in\mathcal{C}, \quad \{j\in\mathcal{C}: ij\in T\}\in\mathcal{S}_i\;\,\forall i\in\mathcal{F}, \quad \bigl|\{i\in\mathcal{F}: T\cap\delta_G(i)\neq\emptyset\}\bigr|\leq k\Bigr\}.\] One can easily verify that \((E,\mathcal{S})\) is an independence system. For a solution \(T\in\mathcal{S}\), letting \(F=\{i\in\mathcal{F}: T\cap\delta_G(i)\neq\emptyset\}\), we have \(|F|\leq k\), and we define \(\ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})=\bigl(\sum_{ij\in T\cap\delta_G(i)}c_{ij}\bigr)_{i\in F}\), with the understanding that if \(|F|<k\), we pad zeros to obtain a vector in \(\mathbb{R}^k\).
As noted earlier, our algorithms for the norm-budgeted versions of \(\mathsf{GAP}\), \(\mathsf{SAP}\), and \(k\mathsf{FL}\) (where the size-vector aggregates individual \(w_e\) values) are based on a reduction, that, in part, requires one to obtain bicriteria approximation for the problem. In doing so, we utilize some machinery developed for handling minimum-norm covering problems. We will use the following notation and concepts from [3] (stated also in [1], albeit slightly differently).
Definition 1 ([3]). Let \(\delta>0\). Let \(N\geq 1\) be an integer. Define \(\mathsf{POS}_{N,\delta}\subseteq[N]\) iteratively as follows: include the index \(1\) in \(\mathsf{POS}_{N,\delta}\); as long as the largest index \(\ell\in\mathsf{POS}_{N,\delta}\) is such that \(\bigl\lceil(1+\delta)\ell\bigr\rceil\leq N\), include \(\bigl\lceil(1+\delta)\ell\bigr\rceil\) (which is larger than \(\ell\)) in \(\mathsf{POS}_{N,\delta}\) (and repeat). We have \(|\mathsf{POS}_{N,\delta}|\leq O\bigl(\frac{\log N}{\delta}\bigr)\).
For \(i\in[N]\), let \(\mathsf{next}_{N,\delta}(i)\) be the smallest index in \(\mathsf{POS}_{N,\delta}\) strictly larger than \(i\); if no such index exists, define \(\mathsf{next}_{N,\delta}(i):=N+1\) for notational convenience. Similarly, let \(\mathsf{prev}_{N,\delta}(i)\) be the largest index in \(\mathsf{POS}_{N,\delta}\) strictly smaller than \(i\); set \(\mathsf{prev}_{N,\delta}(1):=0\). It is immediate from the definition of \(\mathsf{POS}_{N,\delta}\) that \(\mathsf{next}_{N,\delta}(\ell)-1\leq(1+\delta)\ell\) for all \(\ell\in\mathsf{POS}_{N,\delta}\); it follows also that \(\mathsf{next}_{N,\delta}(i)-1\leq(1+\delta)i\) for all \(i\in[N]\).
For a non-increasing vector \(v\in\mathbb{R}_{+}^{\mathsf{POS}_{N,\delta}}\), define its expansion \(v^\mathsf{exp}\in\mathbb{R}_{+}^N\) as follows: \(v^\mathsf{exp}_i=v_i\) for \(i\in\mathsf{POS}_{N,\delta}\) and \(v^\mathsf{exp}_i=v_{\mathsf{prev}_{N,\delta}(i)}\) for \(i\in[N]\setminus\mathsf{POS}_{N,\delta}\). For a vector \(u\in\mathbb{R}^N\) and \(\theta\in\mathbb{R}\), define \(Q^{>\theta}(u):=\bigl|\{i\in[N]: u_i>\theta\}\bigr|\). The following lemma (proved in Appendix 10) shows that two vectors sharing certain similar statistics have similar norm values. Part (a) appears as Lemma 2.8 (b) in [3], and part (b) follows by mimicking the proof in [3] for Lemma 2.8 (c).
Lemma 1. Let \(\varepsilon,\gamma>0\) and \(0<\delta\leq 1\). Let \(u\in\mathbb{R}_{+}^N\), and \(v\in\mathbb{R}_{+}^{\mathsf{POS}_{N,\delta}}\) be a non-increasing vector. Let \(h:\mathbb{R}^N\mapsto\mathbb{R}_{+}\) be a monotone, symmetric norm.
(a) If \(v_\ell\leq(1+\varepsilon)u^{{\:\!\downarrow}}_\ell+\gamma\) for all \(\ell\in\mathsf{POS}_{N,\delta}\), then \(h(v^\mathsf{exp})\leq(1+\delta)(1+\varepsilon)h(u)+N\gamma\cdot h(1,0,\ldots,0)\).
(b) Let \(\alpha\in\mathbb{R}^N\) be such that \(\alpha^{{\:\!\downarrow}}_1\leq v_1\) and \(Q^{>v_\ell}(\alpha)\leq(1+\delta)(\ell-1)\) for all \(\ell\in\mathsf{POS}_{N,\delta}\). Then \(h(\alpha)\leq(1+3\delta)h(v^{\mathsf{exp}})\).
Although our focus is on handling general monotone, symmetric norms, we briefly discuss here the setting of \(\ell_p\) norms, which are perhaps the most prominent examples of such norms. For problems such as norm-budgeted {knapsack, matching, max-weight independent set}, where the size-vector \(\ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})\) induced by a solution \(T\) is the size-weighted characteristic vector \((w_e\mathbb{1}_{e\in T})_{e\in[n]}\) (where \(\mathbb{1}_{e\in T}\) is \(1\) if \(e\in T\) and \(0\) otherwise), one can simply move to the \(\ell_p^p\) objective and cast the budget constraint as \(\bigl\| \ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})\bigr\|_p^p:=\sum_{e\in T}w_e^p\leq B^p\). Thus, this reduces to an \(\ell_1\)-budget constraint (with item sizes \(w_e^p\)), and guarantees for the latter problem immediately translate to the norm-budgeted problem. So with an \(\ell_p\) norm, we obtain an FPTAS for \(\mathsf{NormBudgKnap}\), and PTASes for \(\mathsf{NormBudgMatch}\), \(\mathsf{NormBudgMWIS}\) with a matroid, and \(\mathsf{NormBudgMWIS}\) when the independence system is the intersection of two matroids. However, for norm-budgeted {\(\mathsf{Max}\mathsf{GAP}\), \(\mathsf{SAP}\), \(k\mathsf{FL}\), \(\mathsf{SepFL}\)}, where the coordinates of \(\ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})\) are obtained by aggregating individual \(w_e\) values, the \(\ell_p\)-norm setting does not seem to make the problem substantially simpler.
We may assume that \(\{e\}\in\mathcal{S}\) and \(f(w_e)\leq B\) for all elements \(e\), as otherwise \(e\) cannot belong to any feasible solution, and we can simply delete \(e\) and consider the independence system \(\bigl([n]-\{e\},\mathcal{S}':=\{T\in\mathcal{S}: e\notin T\}\bigr)\). Throughout, we use \(O^*\) to denote some fixed optimal solution, and \(\mathit{OPT}:=\mathsf{rwd}(O^*)\) to denote the optimal value. Let \(\mathsf{r_{max}}\) be the maximum reward of an element included in \(O^*\). We may assume that \(\mathsf{r_{max}}=\max_{e\in[n]}\mathsf{rwd}_e\), since we can simply “guess” a maximum-reward element in \(O^*\), and delete all higher-reward items from the instance. By standard scaling and rounding ideas, incurring a \((1+\varepsilon)\)-factor loss in approximation, we can move to an instance where all rewards are integers bounded by \(\frac{n}{\varepsilon}\), so, unless otherwise stated, we will assume that this holds in the sequel for all the problems considered.
Theorem 1. Consider a norm-budgeted packing problem involving a ground set \([n]\) and element-rewards \(\{\mathsf{rwd}_e\geq 0\}_{e\in [n]}\), satisfying the above assumptions. Let \(\mathsf{r_{max}}:=\max_{e\in[n]}\mathsf{rwd}_e\). Let \(\varepsilon>0\). Consider the same instance with element-rewards given by \(\mathsf{rwd}'_e:=\bigl\lceil\frac{n\cdot\mathsf{rwd}_e}{\varepsilon\cdot\mathsf{r_{max}}}\bigr\rceil\) for all \(e\in[n]\). Let \(\mathit{OPT}'\) denote the optimal value for the new instance. We have:
\(\mathit{OPT}\leq\frac{\varepsilon\cdot\mathsf{r_{max}}}{n}\cdot\mathit{OPT}'\leq(1+\varepsilon)\mathit{OPT}\);
If \(T\subseteq[n]\) satisfies \(\mathsf{rwd}'(T)\geq\frac{\mathit{OPT}'}{\rho}\), for some \(\rho\geq 1\), we also have \(\mathsf{rwd}(T)\geq\bigl(\frac{1}{\rho}-\varepsilon\bigr)\mathit{OPT}\).
Recall that an instance of norm-budgeted knapsack (\(\mathsf{NormBudgKnap}\)) is specified by an item-set \([n]\), non-negative rewards \(\{\mathsf{rwd}_i\}_{i\in[n]}\) and sizes \(\{w_i\}_{i\in[n]}\), a monotone, symmetric norm \(f:\mathbb{R}^n\mapsto\mathbb{R}_+\), and a knapsack budget \(B\).
The goal is find \(T\subseteq[n]\) that maximizes \(\mathsf{rwd}(T):=\sum_{i\in T}\mathsf{rwd}_i\) subject to the norm budget constraint \(f\bigl( \ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})\bigr)\leq B\), where \(\ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})_i\) is \(w_i\) if \(i\in T\), and is \(0\) otherwise. We use items and elements interchangeably in this section. We devise a polynomial-time approximation scheme (PTAS) for \(\mathsf{NormBudgKnap}\).
Theorem 2. There is a PTAS for \(\mathsf{NormBudgKnap}\), which obtains reward at least \((1-\varepsilon)^2\mathit{OPT}\) in \(\bigl(\frac{n}{\varepsilon}\bigr)^{O(1/\varepsilon^2)}\) time, for any \(\varepsilon>0\).
Before delving into the proof of Theorem 2, we give some examples illustrating the challenges that arise in working with norm-budgeted knapsack, and why \(\mathsf{NormBudgKnap}\) is significantly harder to tackle than the standard knapsack problem (where \(f\) is the \(\ell_1\) norm). We demonstrate that certain properties or approaches that apply to standard knapsack fail badly for \(\mathsf{NormBudgKnap}\), showing a sharp contrast between the two problems. Theorem 3 shows that increasing the budget even very slightly can cause a drastic increase in the optimum value, even when every individual item has a small size relative to the budget. This also implies that the natural convex-programming relaxation for \(\mathsf{NormBudgKnap}\) has a large integrality gap. (We remark that for the quite special case of ordered norms, the dynamic-programming based FPTAS for standard knapsack can be extended to yield an FPTAS for \(\mathsf{NormBudgKnap}\); see Appendix 15.)
Theorem 3.
For any constants \(M,\varepsilon>0\), there is a \(\mathsf{NormBudgKnap}\) instance with \(f(w_i)\leq\varepsilonB\) for all items \(i\), such that increasing the budget to \((1+\varepsilon)B\) increases the optimum by a factor of at least \(M\). This holds even when \(f\) is a \(\mathsf{Top}_{\ell}\) norm.
The following convex-programming relaxation for \(\mathsf{NormBudgKnap}\) has unbounded integrality gap. \[\max \;\sum_{i\in[n]}\mathsf{rwd}_ix_i \quad\;\;\text{\textrm s.t.} \quad\;\; f(w_1 x_1,w_2x_2,\ldots,w_nx_n)\leq B, \quad\;\; 0\leq x_i\leq 1 \quad \forall i\in[n]. ({{B}})} \label{knapcp}\qquad{(1)}\]
Proof. Note that part (b) follows from part (a), because letting \(\mathit{OPT}_{\text{\ref{knapcp}}}\) denote the optimal value of ?? , we can see that \(\mathit{OPT}_{\textrm{KCP}({{(1+\varepsilon)B}})}\leq (1+\varepsilon)\mathit{OPT}_{\text{\ref{knapcp}}}\), as scaling down an optimal solution to (\(\textrm{KCP}({{(1+\varepsilon)B}})\)) by a \((1+\varepsilon)\)-factor yields a feasible solution to ?? . But part (a) shows that the optimal value of the problem with budget \((1+\varepsilon)B\) can be arbitrarily large compared to the optimal value of the problem with budget \(B\).
For part (a), let \(\ell\) be such that \(\ell\geq 1+\frac{1}{\varepsilon}\), so \((1+\varepsilon)(\ell-1)\geq\ell\), and \(n\) be such that \(n\geq M(\ell-1)\). The simplest instance demonstrating this is to take \(n\) items, each with unit reward and size, \(f\) as the \(\mathsf{Top}_{\ell}\) norm. Let \(\mathit{OPT}(B)\) denote the optimum value with budget \(B\). Taking \(B=\ell-1\), we clearly have \(\mathit{OPT}(B)=\ell-1\); but since \((1+\varepsilon)B\geq\ell\), and any set of at most \(\ell\) items have total size at most \(\ell\), we have that \(\mathit{OPT}\bigl((1+\varepsilon)B\bigr)=n\).
When all items have the same size, the problem can be solved in polytime (as the norm budget constraint reduces to a cardinality constraint), but perturbing the above instance avoids this over-simplification. For instance, for some \(1\leq k<n\), for \(i\in[k]\), we can set the size and reward item \(i\) to be some number \(x_i\in[1,2]\), and take \(\ell\) such that \((1+\varepsilon)(\ell-1)\geq\ell+k\); this yields the same outcome. ◻
We begin by establishing some notation and terminology. We use items and elements interchangeably. Recall that \(O^*\subseteq[n]\) denotes some fixed optimal solution and \(\mathit{OPT}=\mathsf{rwd}(O^*)\).
Recall also that \(\mathsf{r_{max}}\) denotes the maximum-reward of an item in \(O^*\), and we may assume that \(\mathsf{r_{max}}=\max_{i\in[n]}\mathsf{rwd}_i\), and all rewards are integers bounded by \(\bigl\lceil\frac{n}{\varepsilon}\bigr\rceil\) (due to Theorem 1).
The idea is to bucket items having similar reward, and guess the number of items that \(O^*\) includes from each bucket. Some notation will be handy here. For an integer \(j\geq 0\), define \(\tau_j:=\frac{\mathsf{r_{max}}}{(1+\varepsilon)^j}\), and let \(\mathsf{Bkt}_j:=\bigl\{i\in[n]:\frac{\tau_j}{1+\varepsilon}<\mathsf{rwd}_i\leq\tau_j\bigr\}\) denote all items with reward roughly \(\tau_j\); we call this a reward bucket. Note that there are \({n_{\mathsf{bkt}}}\leq O\bigl(\frac{1}{\varepsilon}\log\frac{n}{\varepsilon}\bigr)\) such reward buckets that together cover all items with non-zero reward.
Now, if we know that \(|O^*\cap\mathsf{Bkt}_j|\in[\ell,(1+\varepsilon)\ell)\), then if we pick the \(\ell\) smallest-size items from this bucket, we are assured that the size-vector of our item-set is coordinate-wise at most \(\ifmmode \settoheight{\xvec@height}{{{w}}({O^*\cap\mathsf{Bkt}_j})} \settodepth{\xvec@depth}{{{w}}({O^*\cap\mathsf{Bkt}_j})} \settowidth{\xvec@width}{{{w}}({O^*\cap\mathsf{Bkt}_j})} \else \settoheight{\xvec@height}{{{w}}({O^*\cap\mathsf{Bkt}_j})} \settodepth{\xvec@depth}{{{w}}({O^*\cap\mathsf{Bkt}_j})} \settowidth{\xvec@width}{{{w}}({O^*\cap\mathsf{Bkt}_j})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({O^*\cap\mathsf{Bkt}_j})\). So if we do this for all buckets, then we ensure that we satisfy the budget constraint. Moreover, since all items in \(\mathsf{Bkt}_j\) have roughly the same reward, and we pick at least \(|O^*\cap\mathsf{Bkt}_j|/(1+\varepsilon)\) items from this bucket, it is not hard to see that the reward that we obtain from the items we pick from \(\mathsf{Bkt}_j\) is at least \(\mathsf{rwd}(O^*\cap\mathsf{Bkt}_j)/(1+\varepsilon)^2\), and this holds for all \(j\). So we obtain a feasible solution of reward at least \(\mathit{OPT}/(1+\varepsilon)^2\). Now, as stated, implementing the above plan would need \(O\bigl({n_{\mathsf{bkt}}}^{(\log n)/\varepsilon}\bigr)=n^{O(\log\log(n/\varepsilon)/\varepsilon)}\) time, since there are \(O\bigl(\frac{\log n}{\varepsilon}\bigr)\) choices of powers of \((1+\varepsilon)\) for \(|O^*\cap\mathsf{Bkt}_j|\) for each reward bucket.
To refine the above approach and obtain polynomial running time, we obtain the \(|O^*\cap\mathsf{Bkt}_j|\) estimates indirectly, by guessing the total reward collected by \(O^*\) from a reward-bucket, and then translating this to an (more noisy) estimate of \(|O^*\cap\mathsf{Bkt}_j|\). This is similar to the approach used by [14] for the multiple knapsack problem.
To elaborate, by considering all values of the form \(\mathsf{r_{max}}(1+\varepsilon)^\ell\), where \(\ell\in\mathbb{Z}_+\), in the range \([\mathsf{r_{max}},n\mathsf{r_{max}}]\), we may assume that we have an estimate \(\widetilde{\mathsf{opt}}\) such that \(\widetilde{\mathsf{opt}}\leq\mathit{OPT}\leq(1+\varepsilon)\widetilde{\mathsf{opt}}\). Let \(\Delta=\frac{\varepsilon\cdot\widetilde{\mathsf{opt}}}{{n_{\mathsf{bkt}}}}\), and let \(\widetilde{R}_j:=\bigl\lfloor\frac{\mathsf{rwd}(O^*\cap\mathsf{Bkt}_j)}{\Delta}\bigr\rfloor\) for all \(j\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket\). (Note that \(\widetilde{R}_j=0\) if \(\mathsf{rwd}(O^*\cap\mathsf{Bkt}_j)<\Delta\).)
A key observation is that \(\sum_{j=0}^{n_{\mathsf{bkt}}}\widetilde{R}_j\leq\frac{\mathsf{rwd}(O^*)}{\Delta}\leq\bigl(1+\frac{1}{\varepsilon}\bigr){n_{\mathsf{bkt}}}\), since \(\mathsf{rwd}(O^*)\leq (1+\varepsilon)\widetilde{\mathsf{opt}}\). Since the number of sequences of \({n_{\mathsf{bkt}}}+1\) nonnegative integers that sum up to at most \(\bigl(1+\frac{1}{\varepsilon}\bigr){n_{\mathsf{bkt}}}\) is at most \(2^{O(\frac{{n_{\mathsf{bkt}}}}{\varepsilon})}=\bigl(\frac{n}{\varepsilon}\bigr)^{O(\frac{1}{\varepsilon^2})}\) (Claim 4), that is, polynomially bounded, by enumerating over all such sequences, we may assume that we know \(\widetilde{R}_j\) for all \(j\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket\).
Since the rewards of all items in \(\mathsf{Bkt}_j\) is roughly \(\tau_j\), we can set \(\widetilde{N}_j:=\widetilde{R}_j\cdot\frac{\Delta}{\tau_j}\) (which need not be an integer), for every \(j\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket\). The bounds on \(\mathsf{rwd}(O^*\cap\mathsf{Bkt}_j)\) translate to the bounds \(\widetilde{N}_j\leq|O^*\cap\mathsf{Bkt}_j|<(1+\varepsilon)\bigl(\widetilde{N}_j+\frac{\Delta}{\tau_j}\bigr)\).
Given the \(\{\widetilde{N}_j\}_{j\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket}\) estimates, the algorithm is now fairly immediate. For each \(j\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket\), let \(S_j\) be the set of \(\bigl\lceil\widetilde{N}_j\bigr\rceil\) smallest-size items from \(\mathsf{Bkt}_j\). We return \(A:=\bigcup_{j\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket}S_j\).
The following standard claim justifies our earlier statement about the polynomial number of candidate \(\{\widetilde{R}_j\}_{j\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket}\) sequences. We include the proof in Appendix [append-knapsack], for completeness.
Claim 4. There are at most \((2e)^{\max\{M,k\}}\) sequences of \(k\) nonnegative integers that sum to at most \(M\). The same bound applies to the number of non-increasing sequences of \(k\) integers chosen from \(\llbracket{M}\rrbracket\).
Finishing up the proof of Theorem 2. By Claim 4, we may assume that \(\widetilde{R}_j\cdot\Delta\leq\mathsf{rwd}(O^*\cap\mathsf{Bkt}_j)<(\widetilde{R}_j+1)\Delta\), and hence \(|O^*\cap\mathsf{Bkt}_j|\geq\widetilde{N}_j\), for all \(j\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket\). Given this, we argue that, for every \(j\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket\), we have (a) \(\ifmmode \settoheight{\xvec@height}{{{w}}({S_j})} \settodepth{\xvec@depth}{{{w}}({S_j})} \settowidth{\xvec@width}{{{w}}({S_j})} \else \settoheight{\xvec@height}{{{w}}({S_j})} \settodepth{\xvec@depth}{{{w}}({S_j})} \settowidth{\xvec@width}{{{w}}({S_j})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({S_j})^{{\:\!\downarrow}}\leq \ifmmode \settoheight{\xvec@height}{{{w}}({O^*\cap\mathsf{Bkt}_j})} \settodepth{\xvec@depth}{{{w}}({O^*\cap\mathsf{Bkt}_j})} \settowidth{\xvec@width}{{{w}}({O^*\cap\mathsf{Bkt}_j})} \else \settoheight{\xvec@height}{{{w}}({O^*\cap\mathsf{Bkt}_j})} \settodepth{\xvec@depth}{{{w}}({O^*\cap\mathsf{Bkt}_j})} \settowidth{\xvec@width}{{{w}}({O^*\cap\mathsf{Bkt}_j})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({O^*\cap\mathsf{Bkt}_j})^{{\:\!\downarrow}}\); and (b) \(\mathsf{rwd}(O^*\cap\mathsf{Bkt}_j)<(1+\varepsilon)\mathsf{rwd}(S_j)+\Delta\). From (a), we obtain that \(\ifmmode \settoheight{\xvec@height}{{{w}}({A})} \settodepth{\xvec@depth}{{{w}}({A})} \settowidth{\xvec@width}{{{w}}({A})} \else \settoheight{\xvec@height}{{{w}}({A})} \settodepth{\xvec@depth}{{{w}}({A})} \settowidth{\xvec@width}{{{w}}({A})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({A})^{{\:\!\downarrow}}\leq \ifmmode \settoheight{\xvec@height}{{{w}}({O^*})} \settodepth{\xvec@depth}{{{w}}({O^*})} \settowidth{\xvec@width}{{{w}}({O^*})} \else \settoheight{\xvec@height}{{{w}}({O^*})} \settodepth{\xvec@depth}{{{w}}({O^*})} \settowidth{\xvec@width}{{{w}}({O^*})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({O^*})^{{\:\!\downarrow}}\) so \(A\) is a feasible \(\mathsf{NormBudgKnap}\) solution. From (b), we obtain that \(\mathsf{rwd}(A)=\sum_{j\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket}\mathsf{rwd}(S_j) >\frac{\mathit{OPT}-\varepsilon\cdot\widetilde{\mathsf{opt}}}{1+\varepsilon}\geq\frac{1-\varepsilon}{1+\varepsilon}\cdot\mathit{OPT}\geq(1-\varepsilon)^2\mathit{OPT}\).
To prove claims (a) and (b), consider an index \(j\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket\). Both claims are fairly immediate, given the bounds on \(|O^*\cap\mathsf{Bkt}_j|\) and \(\mathsf{rwd}(O^*\cap\mathsf{Bkt}_j)\). Since \(S_j\) consists of the \(\bigl\lceil\widetilde{N}_j\bigr\rceil\) smallest-size items from \(\mathsf{Bkt}_j\) and \(|O^*\cap\mathsf{Bkt}_j|\) is an integer that is at least \(\widetilde{N}_j\), claim (a) follows. We have \(\mathsf{rwd}(S_j)\geq\frac{\widetilde{N}_j\tau_j}{1+\varepsilon}=\widetilde{R}_j\cdot\frac{\Delta}{1+\varepsilon}\) since all items in \(\mathsf{Bkt}_j\) have reward at least \(\frac{\tau_j}{1+\varepsilon}\). So \(\mathsf{rwd}(O^*\cap\mathsf{Bkt}_j)<(1+\varepsilon)\mathsf{rwd}(S_j)+\Delta\), and (b) follows.
We need to enumerate all possible \(\{\widetilde{R}_j\}_{j\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket}\) sequences and \(\widetilde{\mathsf{opt}}\) values, which takes \(\bigl(\frac{n}{\varepsilon}\bigr)^{O(1/\varepsilon)}\cdot O\bigl(\frac{\ln n}{\varepsilon}\bigr)\) time. The analysis above shows that for the right guess, we obtain reward at least \((1-\varepsilon)^2\mathit{OPT}\), so we simply return the maximum-reward feasible solution found across all the guesses; detecting feasibility of a candidate solution can be done using a feasibility oracle for the norm. ◻
Note that we only utilize that \(f\) is monotone and symmetric—in concluding that \(\ifmmode \settoheight{\xvec@height}{{{w}}({A})} \settodepth{\xvec@depth}{{{w}}({A})} \settowidth{\xvec@width}{{{w}}({A})} \else \settoheight{\xvec@height}{{{w}}({A})} \settodepth{\xvec@depth}{{{w}}({A})} \settowidth{\xvec@width}{{{w}}({A})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({A})^{{\:\!\downarrow}}\leq \ifmmode \settoheight{\xvec@height}{{{w}}({O^*})} \settodepth{\xvec@depth}{{{w}}({O^*})} \settowidth{\xvec@width}{{{w}}({O^*})} \else \settoheight{\xvec@height}{{{w}}({O^*})} \settodepth{\xvec@depth}{{{w}}({O^*})} \settowidth{\xvec@width}{{{w}}({O^*})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({O^*})^{{\:\!\downarrow}}\) implies \(f( \ifmmode \settoheight{\xvec@height}{{{w}}({A})} \settodepth{\xvec@depth}{{{w}}({A})} \settowidth{\xvec@width}{{{w}}({A})} \else \settoheight{\xvec@height}{{{w}}({A})} \settodepth{\xvec@depth}{{{w}}({A})} \settowidth{\xvec@width}{{{w}}({A})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({A}))\leq f( \ifmmode \settoheight{\xvec@height}{{{w}}({O^*})} \settodepth{\xvec@depth}{{{w}}({O^*})} \settowidth{\xvec@width}{{{w}}({O^*})} \else \settoheight{\xvec@height}{{{w}}({O^*})} \settodepth{\xvec@depth}{{{w}}({O^*})} \settowidth{\xvec@width}{{{w}}({O^*})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({O^*}))\)—and nowhere use the fact that \(f\) is convex and homogeneous. Thus, our guarantee continues to hold more generally, when the budget constrained is prescribed by a monotone, symmetric function (which need not be convex or homogeneous).
Recall that in the norm-budgeted maximum-weight independent set (\(\mathsf{NormBudgMWIS}\)) problem, we are given an independence system \(\mathcal{M}=([n],\mathcal{S})\), that is, \(\mathcal{S}\subseteq 2^{[n]}\) is non-empty and is closed under taking subsets: \(\emptyset\in\mathcal{S}\) and \(A\in\mathcal{S}, B\subseteq A\implies B\in\mathcal{S}\). Elements in \([n]\) have non-nonnegative rewards \(\{\mathsf{rwd}_e\}_{e\in[n]}\) and sizes \(\{w_e\}_{e\in[n]}\), and we have a monotone, symmetric norm \(f:\mathbb{R}^n\mapsto\mathbb{R}_+\) and budget \(B\). The goal is to find a maximum-reward set \(T\in\mathcal{S}\) satisfying \(f( \ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T}))\leq B\), where \(\ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})_e\) is \(w_e\) if \(e\in T\) and \(0\) otherwise.
We need some terminology to state our result for a general independence system. Sets in \(\mathcal{S}\) are often called independent sets. As is standard, we assume that \(\mathcal{M}\) is specified via an independence oracle that determines whether a given input set is independent. The rank function \(r:2^n\mapsto\mathbb{Z}_+\) of \(\mathcal{M}\), is defined as \(r(A):=\max\{|B|: B\subseteq A, B\in\mathcal{S}\}\), i.e., \(r(A)\) is the maximum size of an independent set contained in \(A\). We say that \(\mathcal{M}\) is a \(k\)-set system, where \(k\geq 1\), if for every set \(A\subseteq[n]\), every maximal independent set contained in \(A\) has size at least \(r(A)/k\). When \(k=1\), we obtain the class of matroids. The following are two well-known examples of \(k\)-set systems.12
Matchings and \(b\)-matchings.. The collection of matchings of a graph \(G=(V,E)\) forms a \(2\)-set system. More generally, given node-degree bounds \(b:V\mapsto\mathbb{Z}_+\), a \(b\)-matching is a set \(F\subseteq E\) such that \(|\delta(v)\cap F|\leq b_v\) for all \(v\in V\). The collection of \(b\)-matchings of a graph also forms a \(2\)-set system.
Intersection of matroids. The collection of common independent sets of \(k\) matroids, forms a \(k\)-set system.
We design an \(O(k)\)-approximation algorithm for \(\mathsf{NormBudgMWIS}\) when \(\mathcal{M}\) is a \(k\)-set system, by suitably extending the insights leading to the PTAS for \(\mathsf{NormBudgKnap}\). Our approximation guarantee is actually more refined, and depends on a certain structural parameter of an independence system. To motivate and define this parameter, we first discuss why the approach used for \(\mathsf{NormBudgKnap}\) does not quite work as is, and sketch the changes needed to handle \(\mathsf{NormBudgMWIS}\).
Recall that the idea underlying our algorithm for \(\mathsf{NormBudgKnap}\) was to (eventually) obtain estimates \(\{\widetilde{N}_j\}_{j\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket}\) for \(|O^*\cap\mathsf{Bkt}_j|\), where \(\mathsf{Bkt}_j\) is a reward bucket consisting of all items with rewards roughly \(\tau_j\), and \({n_{\mathsf{bkt}}}=O\bigl(\log\frac{n}{\varepsilon}\bigr)\) is the number of reward buckets. These estimates satisfied the bounds \(\widetilde{N}_j\leq|O^*\cap\mathsf{Bkt}_j|\leq(1+\varepsilon)\bigl(\widetilde{N}_j+\frac{\Delta}{\tau_j}\bigr)\) for all \(j\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket\), for a suitable value \(\Delta\). (Recall that \(O^*\in\mathcal{S}\) is an optimal solution.)
We then chose a set \(S_j\) of \(\widetilde{N}_j\) items from each reward-bucket \(\mathsf{Bkt}_j\). The above bounds on \(\widetilde{N}_j\) ensure that \(\mathsf{rwd}(S_j)\) is close to \(\mathsf{rwd}(O^*\cap\mathsf{Bkt}_j)\); also, importantly, we could choose \(S_j\) so that \(\ifmmode \settoheight{\xvec@height}{{{w}}({S_j})} \settodepth{\xvec@depth}{{{w}}({S_j})} \settowidth{\xvec@width}{{{w}}({S_j})} \else \settoheight{\xvec@height}{{{w}}({S_j})} \settodepth{\xvec@depth}{{{w}}({S_j})} \settowidth{\xvec@width}{{{w}}({S_j})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({S_j})^{{\:\!\downarrow}}\leq \ifmmode \settoheight{\xvec@height}{{{w}}({O^*\cap\mathsf{Bkt}_j})} \settodepth{\xvec@depth}{{{w}}({O^*\cap\mathsf{Bkt}_j})} \settowidth{\xvec@width}{{{w}}({O^*\cap\mathsf{Bkt}_j})} \else \settoheight{\xvec@height}{{{w}}({O^*\cap\mathsf{Bkt}_j})} \settodepth{\xvec@depth}{{{w}}({O^*\cap\mathsf{Bkt}_j})} \settowidth{\xvec@width}{{{w}}({O^*\cap\mathsf{Bkt}_j})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({O^*\cap\mathsf{Bkt}_j})^{{\:\!\downarrow}}\). The latter ensures that the union of the \(S_j\)-sets is feasible, and the former ensures that this obtains reward close to \(\mathit{OPT}\).
Once we move to an independence system, even a matroid, one cannot necessarily pick \(\widetilde{N}_j\) items from \(\mathsf{Bkt}_j\) (even though \(O^*\) does so) because the elements picked from earlier buckets may block us from doing so. That is, if \(A_{j-1}\subseteq\mathsf{Bkt}_0\cup\ldots\cup\mathsf{Bkt}_{j-1}\) denotes the previously-picked elements (i.e., elements picked from earlier buckets), then it need not be that one can extend \(A_{j-1}\) to an independent set by picking \(\widetilde{N}_j\) elements from \(\mathsf{Bkt}_j\). A better option is to consider the prefix-set \(Q_j:=\mathsf{Bkt}_0\cup\ldots\mathsf{Bkt}_j\); now, if \(|A_{j-1}|\leq\sum_{q=1}^{j-1}\widetilde{N}_q\) since \(|O^*\cap Q_j|\geq\sum_{q=1}^j\widetilde{N}_q\), by the exchange property of matroids, one is assured that one can extend \(A_{j-1}\) to an independent set \(A_j\subseteq Q_j\) by adding s set \(S_j\) of \(\widetilde{N}_j\) elements from \(Q_j\). In terms of reward, this is good enough, as one still obtains that \(\mathsf{rwd}(S_j)\) is roughly \(\widetilde{N}_j\tau_j\). But in order to argue feasibility of the final solution \(\bigcup_{j=0}^{{n_{\mathsf{bkt}}}}S_j\), we would like to “charge” the sizes of elements in \(S_j\) to those of elements in some set \(L_j\subseteq O^*\cap Q_j\), where the \(L_j\)’s are disjoint for different indices \(j\). If we pick \(S_j\) of size \(\widetilde{N}_j\) by running the greedy algorithm on \(Q_j-A_{j-1}\), we do obtain that there is some set \(L_j\subseteq O^*\cap Q_j\) such that \(\ifmmode \settoheight{\xvec@height}{{{w}}({S_j})} \settodepth{\xvec@depth}{{{w}}({S_j})} \settowidth{\xvec@width}{{{w}}({S_j})} \else \settoheight{\xvec@height}{{{w}}({S_j})} \settodepth{\xvec@depth}{{{w}}({S_j})} \settowidth{\xvec@width}{{{w}}({S_j})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({S_j})^{{\:\!\downarrow}}\leq \ifmmode \settoheight{\xvec@height}{{{w}}({L_j})} \settodepth{\xvec@depth}{{{w}}({L_j})} \settowidth{\xvec@width}{{{w}}({L_j})} \else \settoheight{\xvec@height}{{{w}}({L_j})} \settodepth{\xvec@depth}{{{w}}({L_j})} \settowidth{\xvec@width}{{{w}}({L_j})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({L_j})^{{\:\!\downarrow}}\), but we cannot ensure that the \(L_j\)s are disjoint. Disjointness requires that we can find a suitable charging set in \(O^*\cap Q_j-(L_0\cup\ldots L_{j-1})\). But this is problematic since \(O^*-(L_0\cup\ldots L_{j-1})\) need not be a larger independent set than \(A_{j-1}=S_0\cup\ldots\cup S_{j-1}\), so there need not be \(\widetilde{N}_j\) items from \(O^*\cap Q_j-(L_0\cup\ldots L_{j-1})\) that can be used to extend \(A_{j-1}\) to an independent set. These considerations indicate that we need a compromise: for an index \(j\), instead of choosing \(\widetilde{N}_j\) items from \(Q_j-A_{j_1}\), we choose fewer items, say \(\widetilde{N}_j/2\) items (for a matroid), to add to our solution. Now, if we have picked charging sets \(L_0,\ldots,L_{j-1}\subseteq O^*\cap Q_j\) with \(|L_q|=|S_q|=\widetilde{N}_q/2\) for all \(q=0,\ldots,j-1\), we still have \(|O^*\cap Q_j-(L_0\cup\ldots L_{j-1})|-|A_{j-1}|\geq\widetilde{N}_j\). Thus, we can extend \(A_{j-1}\) by picking \(\widetilde{N}_j/2\) items from \(O^*\cap Q_j-(L_0\cup\ldots L_{j-1})\), and charge the sizes of these items to a suitable charging set in \(O^*\cap Q_j-(L_0\cup\ldots L_{j-1})\) of size \(\widetilde{N}_j/2\).
For a general independence system \(\mathcal{M}\), we introduce a parameter (defined below) that allows us to quantify the largest fraction of \(\widetilde{N}_j\) items that one can pick for index \(j\) so that the above extension argument works out.
Let \(\mathcal{M}=([n],\mathcal{S})\) be an independence system with rank function \(r:2^n\mapsto\mathbb{Z}_+\). The greedy parameter of \(\mathcal{M}\), denoted \(\mathsf{gr}(M)\) is the smallest \(\beta\geq 1\) such that the following holds. For any sets \(Z\subseteq Y\subseteq[n]\) with \(Z\in\mathcal{S}\), any \(\ell\in[0,r(Y)]\), and any cost vector \(c\in\mathbb{R}_{+}^n\), there exists a set \(S\subseteq Y-Z\) such that:
\(Z\cup S\in\mathcal{S}\);
\(|Z\cup S|\geq\frac{\ell}{\beta}\); and
\(\ifmmode \settoheight{\xvec@height}{{c}({S})} \settodepth{\xvec@depth}{{c}({S})} \settowidth{\xvec@width}{{c}({S})} \else \settoheight{\xvec@height}{{c}({S})} \settodepth{\xvec@depth}{{c}({S})} \settowidth{\xvec@width}{{c}({S})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {c}({S})^{{\:\!\downarrow}}\leq \ifmmode \settoheight{\xvec@height}{{c}({B})} \settodepth{\xvec@depth}{{c}({B})} \settowidth{\xvec@width}{{c}({B})} \else \settoheight{\xvec@height}{{c}({B})} \settodepth{\xvec@depth}{{c}({B})} \settowidth{\xvec@width}{{c}({B})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {c}({B})^{{\:\!\downarrow}}\) for every independent set \(B\subseteq Y-Z\) with \(|B|\geq \ell-|Z|\).
We say that an upper bound \(\mathsf{gr}(\mathcal{M})\leq\beta\) is efficiently certifiable if there is a polytime algorithm that, for any input \((Y,Z,\ell,c)\), produces an independent set \(S\subseteq Y-Z\) with the above properties.
To tie this in with the earlier discussion, suppose we take \(Y=Q_j\), \(Z=A_{j-1}\), \(\ell=\sum_{q=0}^j\widetilde{N}_q\), and \(c=w\). Then \(\mathsf{gr}(\mathcal{M})\leq\beta\) ensures that we can extend \(A_{j-1}\) to \(A_j\subseteq Q_j\) with \(|A_j|\geq\ell/\beta\) (due to [gsize]), and [gcost] ensures that even after we have charged the sizes of items in \(A_{j-1}\) to some subset \(C\subseteq O^*\cap Q_j\) of size \(|A_{j-1}|\), we we can still charge the sizes of the items added to a suitable charging set from \(O^*\cap Q_j-C\).
We show that if \(\mathsf{gr}(\mathcal{M})\leq\beta\) is an efficiently certifiable bound, then one can devise an \(O(\beta)\)-approximation algorithm for \(\mathsf{NormBudgMWIS}\) on \(\mathcal{M}\) (Theorem 6). Complementing this, we show that \(\mathsf{gr}(\mathcal{M})\leq k+1\) is an efficiently-certifiable bound for \(k\)-set systems.
Theorem 5. Let \(\mathcal{M}=([n],\mathcal{S})\) be a \(k\)-set system. Then \(\mathsf{gr}(M)\leq k+1\) is an efficiently-certifiable bound.
Theorem 6. Let \(\mathsf{gr}(\mathcal{M})\leq\beta\) be an efficiently-certifiable bound for an independence system \(\mathcal{M}\). One can devise a \((1+\varepsilon)\beta\)-approximation algorithm for \(\mathsf{NormBudgMWIS}\) on \(\mathcal{M}\) with \(\bigl(\frac{n}{\varepsilon}\bigr)^{O(1/\varepsilon^2)}\) running time. Thus, we obtain a \((1+\varepsilon)(k+1)\)-approximation algorithm for \(\mathsf{NormBudgMWIS}\) when \(\mathcal{M}\) is a \(k\)-set system.
Observe that the above guarantee for \(\mathsf{NormBudgMWIS}\) strictly generalizes the PTAS for \(\mathsf{NormBudgKnap}\), since \(\mathsf{NormBudgKnap}\) is \(\mathsf{NormBudgMWIS}\) on the free matroid (where every subset is independent), and it is not hard to see that \(\mathsf{gr}(\mathcal{M})\leq 1\) is an efficiently-certifiable bound for a free matroid \(\mathcal{M}\).
Since \(b\)-matchings form a \(2\)-set system, we obtain the following corollary.
Corollary 1. There is a \((3+\varepsilon)\)-approximation algorithm for norm-budgeted \(b\)-matching.
The efficiently-certifiable bound in Theorem [grparambounds] is obtained via a greedy algorithm, which is why we call \(\mathsf{gr}(\mathcal{M})\) the greedy-parameter of \(\mathcal{M}\).
To avoid detracting the reader, we defer the proof of Theorem [grparambounds] to the end of the section, and delve now into the proof of Theorem 6.
We focus on the main statement that if \(\mathsf{gr}(\mathcal{M})\leq\beta\) is efficiently certifiable, then we obtain a \((1+\varepsilon)\beta\)-approximation for \(\mathsf{NormBudgMWIS}\) on \(\mathcal{M}\). The guarantee for a \(k\)-set system then follows from Theorem [grparambounds].
As always, let \(O^*\in\mathcal{S}\) be an optimal solution, \(\mathit{OPT}=\mathsf{rwd}(O^*)\), and \(\mathsf{r_{max}}=\max_{e\in[n]}\mathsf{rwd}_e\leq\frac{n}{\varepsilon}\) (due to Theorem 1) be the maximum-reward of an element in \(O^*\).
As in the proof of Theorem 2, for \(j\geq 0\), define \(\tau_j:=\frac{\mathsf{r_{max}}}{(1+\varepsilon)^j}\), and \(\mathsf{Bkt}_j:=\bigl\{e\in[n]:\frac{\tau_j}{1+\varepsilon}<\mathsf{rwd}_e\leq\tau_j\bigr\}\). Let \({n_{\mathsf{bkt}}}=O\bigl(\frac{\log(n/\varepsilon)}{\varepsilon}\bigr)\) be the number of reward buckets that cover all items with non-zero reward. Let \(Q_j:=\mathsf{Bkt}_0\cup\ldots\cup\mathsf{Bkt}_j\) for all \(j\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket\).
As in norm-budgeted knapsack, we may assume that we have an estimate \(\widetilde{\mathsf{opt}}\leq\mathit{OPT}\leq(1+\varepsilon)\widetilde{\mathsf{opt}}\), and know \(\widetilde{R}_j:=\bigl\lfloor\frac{\mathsf{rwd}(O^*\cap\mathsf{Bkt}_j)}{\Delta}\bigr\rfloor\) for all \(j\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket\), where \(\Delta=\frac{\varepsilon\cdot\widetilde{\mathsf{opt}}}{{n_{\mathsf{bkt}}}}\). So taking \(\widetilde{N}_j:=\widetilde{R}_j\cdot\frac{\Delta}{\tau_j}\) for all \(j\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket\), we obtain that \(|O^*\cap\mathsf{Bkt}_j|\geq\widetilde{N}_j\) for all \(j\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket\). Define \(\widetilde{\mathsf{PN}}_j:=\sum_{q=0}^j\widetilde{N}_q\), which is a lower bound on \(|O^*\cap Q_j|\), for all \(j\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket\).
Let \(\mathcal{A}^{\mathsf{gr}}\) be the algorithm underlying the efficiently-certifiable bound \(\mathsf{gr}(\mathcal{M})\leq\beta\). Define \(A_{-1}:=\emptyset\). For each \(j\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket\) (considered in increasing order), we do the following. We invoke \(\mathcal{A}^{\mathsf{gr}}\) on the input \((Y,Z,\ell,c)\), where \(Y=Q_j\), \(Z=A_{j-1}\), \(\ell=\widetilde{\mathsf{PN}}_j\), and \(c_e=w_e\) for all \(e\in[n]\). Since \(O^*\cap Q_j\in\mathcal{S}\) and \(|O^*\cap Q_j|\geq\ell\), we have \(r(Y)\geq\ell\). So the tuple \((Y,Z,\ell,c)\) is a valid input to \(\mathcal{A}^{\mathsf{gr}}\), and \(\mathcal{A}^{\mathsf{gr}}\) will return some set \(S_j\subseteq Q_j-A_{j-1}\) such that \(A_{j-1}\cup S_j\in\mathcal{S}\) and \(|A_{j-1}\cup S_j|\geq\widetilde{\mathsf{PN}}_j/\beta\). We set \(A_j\leftarrow A_{j-1}\cup S_j\). We return the set \(A_{{n_{\mathsf{bkt}}}}\).
The theorem follows from Lemma 2, which shows feasibility, and Lemmas 3 and 4, which lower bound the reward obtained. The following simple claim will be useful.
Claim 7. Let \(R,T\subseteq[n]\) be such that \(\ifmmode \settoheight{\xvec@height}{{{w}}({R})} \settodepth{\xvec@depth}{{{w}}({R})} \settowidth{\xvec@width}{{{w}}({R})} \else \settoheight{\xvec@height}{{{w}}({R})} \settodepth{\xvec@depth}{{{w}}({R})} \settowidth{\xvec@width}{{{w}}({R})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({R})^{{\:\!\downarrow}}\leq \ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})^{{\:\!\downarrow}}\). There is a one-to-one mapping \(\sigma:R-T\mapsto T-R\) such that \(w_i\leqw_{\sigma(i)}\) for all \(i\in R-T\), and so \(\ifmmode \settoheight{\xvec@height}{{{w}}({R-T})} \settodepth{\xvec@depth}{{{w}}({R-T})} \settowidth{\xvec@width}{{{w}}({R-T})} \else \settoheight{\xvec@height}{{{w}}({R-T})} \settodepth{\xvec@depth}{{{w}}({R-T})} \settowidth{\xvec@width}{{{w}}({R-T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({R-T})^{{\:\!\downarrow}}\leq \ifmmode \settoheight{\xvec@height}{{{w}}({T-R})} \settodepth{\xvec@depth}{{{w}}({T-R})} \settowidth{\xvec@width}{{{w}}({T-R})} \else \settoheight{\xvec@height}{{{w}}({T-R})} \settodepth{\xvec@depth}{{{w}}({T-R})} \settowidth{\xvec@width}{{{w}}({T-R})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T-R})^{{\:\!\downarrow}}\).
Proof. Since \(\ifmmode \settoheight{\xvec@height}{{{w}}({R})} \settodepth{\xvec@depth}{{{w}}({R})} \settowidth{\xvec@width}{{{w}}({R})} \else \settoheight{\xvec@height}{{{w}}({R})} \settodepth{\xvec@depth}{{{w}}({R})} \settowidth{\xvec@width}{{{w}}({R})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({R})^{{\:\!\downarrow}}\leq \ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})^{{\:\!\downarrow}}\), there is a one-to-one function \(\pi:R\mapsto T\) be a permutation such that \(w_i\leqw_{\pi(i)}\) for all \(i\in R\). Consider the following directed bipartite graph \(G\) with vertex bipartition \(\{r_i:i\in R\}\cup\{t_i:i\in T\}\). We have edges \((r_i,t_{\pi(i)})\) for all \(i\in R\), and edges \((t_i,r_i)\) for all \(i\in R\cap T\). Note that by construction for every edge \((u,v)\) corresponding to some items \(i,j\in\mathbb{R}\cup T\), we have \(w_i\leqw_j\). Every node in \(G\) has in-degree and out-degree at most \(1\), so the edges of \(G\) can be partitioned into vertex-disjoint paths and cycles. Due to vertex-disjointness, each path in this decomposition must be maximal; in particular, it’s start node must have zero in-degree, and its end-node must have zero out-degree and hence must be a \(t_j\)-node. For every \(i\in R-T\), \(r_i\) has out-degree \(1\) and zero in-degree, so it is the start-node of one of these paths; if \(t_j\) is the end-node of this path, then since \(t_j\) has zero out-degree, we have \(j\in T-R\). Also, by construction, we have \(w_i\leqw_j\). So we can define \(\sigma(i)=j\); doing this for all \(i\in R-T\) yields the desired one-to-one mapping. ◻
Lemma 2. \(A_{{n_{\mathsf{bkt}}}}\) is a feasible \(\mathsf{NormBudgMWIS}\) solution.
Proof. Let \(O^*_j:=O^*\cap Q_j\) for \(j\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket\). We prove that \(\ifmmode \settoheight{\xvec@height}{{{w}}({A_j})} \settodepth{\xvec@depth}{{{w}}({A_j})} \settowidth{\xvec@width}{{{w}}({A_j})} \else \settoheight{\xvec@height}{{{w}}({A_j})} \settodepth{\xvec@depth}{{{w}}({A_j})} \settowidth{\xvec@width}{{{w}}({A_j})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({A_j})^{{\:\!\downarrow}}\leq \ifmmode \settoheight{\xvec@height}{{{w}}({O^*_j})} \settodepth{\xvec@depth}{{{w}}({O^*_j})} \settowidth{\xvec@width}{{{w}}({O^*_j})} \else \settoheight{\xvec@height}{{{w}}({O^*_j})} \settodepth{\xvec@depth}{{{w}}({O^*_j})} \settowidth{\xvec@width}{{{w}}({O^*_j})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({O^*_j})^{{\:\!\downarrow}}\) for all \(j\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket\), by induction on \(j\). Taking \(j={n_{\mathsf{bkt}}}\), this shows that \(A_{{n_{\mathsf{bkt}}}}\) is a feasible \(\mathsf{NormBudgMWIS}\) solution.
Recall that in every iteration \(j=0,1,\ldots,{n_{\mathsf{bkt}}}\), we invoke \(\mathcal{A}^{\mathsf{gr}}\) on the input \((Y,Z,\ell,c)=(Q_j,A_{j-1},\widetilde{\mathsf{PN}}_j,w)\) to obtain set \(S_j\subseteq Y-Z\), and by [gcost], we have \(\ifmmode \settoheight{\xvec@height}{{{w}}({S_j})} \settodepth{\xvec@depth}{{{w}}({S_j})} \settowidth{\xvec@width}{{{w}}({S_j})} \else \settoheight{\xvec@height}{{{w}}({S_j})} \settodepth{\xvec@depth}{{{w}}({S_j})} \settowidth{\xvec@width}{{{w}}({S_j})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({S_j})^{{\:\!\downarrow}}\leq \ifmmode \settoheight{\xvec@height}{{{w}}({B})} \settodepth{\xvec@depth}{{{w}}({B})} \settowidth{\xvec@width}{{{w}}({B})} \else \settoheight{\xvec@height}{{{w}}({B})} \settodepth{\xvec@depth}{{{w}}({B})} \settowidth{\xvec@width}{{{w}}({B})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({B})^{{\:\!\downarrow}}\) for all \(B\subseteq Y-Z\), \(B\in\mathcal{S}\) with \(|B|\geq\ell-|Z|\).
The base case \(j=0\) holds since \(|O^*_0|\geq\widetilde{\mathsf{PN}}_0\), and \(\ifmmode \settoheight{\xvec@height}{{{w}}({S_0})} \settodepth{\xvec@depth}{{{w}}({S_0})} \settowidth{\xvec@width}{{{w}}({S_0})} \else \settoheight{\xvec@height}{{{w}}({S_0})} \settodepth{\xvec@depth}{{{w}}({S_0})} \settowidth{\xvec@width}{{{w}}({S_0})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({S_0})^{{\:\!\downarrow}}\leq \ifmmode \settoheight{\xvec@height}{{{w}}({O^*_0})} \settodepth{\xvec@depth}{{{w}}({O^*_0})} \settowidth{\xvec@width}{{{w}}({O^*_0})} \else \settoheight{\xvec@height}{{{w}}({O^*_0})} \settodepth{\xvec@depth}{{{w}}({O^*_0})} \settowidth{\xvec@width}{{{w}}({O^*_0})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({O^*_0})^{{\:\!\downarrow}}\). Now let \(j\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket\), \(j\neq 0\). Let \((Y,Z,\ell,c)=(Q_j,A_{j-1},\widetilde{\mathsf{PN}}_j,w)\), and \(T=O^*_j\). By the induction hypothesis, we have \(\ifmmode \settoheight{\xvec@height}{{{w}}({Z})} \settodepth{\xvec@depth}{{{w}}({Z})} \settowidth{\xvec@width}{{{w}}({Z})} \else \settoheight{\xvec@height}{{{w}}({Z})} \settodepth{\xvec@depth}{{{w}}({Z})} \settowidth{\xvec@width}{{{w}}({Z})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({Z})^{{\:\!\downarrow}}\leq \ifmmode \settoheight{\xvec@height}{{{w}}({O^*_{j-1}})} \settodepth{\xvec@depth}{{{w}}({O^*_{j-1}})} \settowidth{\xvec@width}{{{w}}({O^*_{j-1}})} \else \settoheight{\xvec@height}{{{w}}({O^*_{j-1}})} \settodepth{\xvec@depth}{{{w}}({O^*_{j-1}})} \settowidth{\xvec@width}{{{w}}({O^*_{j-1}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({O^*_{j-1}})^{{\:\!\downarrow}}\), and so \(\ifmmode \settoheight{\xvec@height}{{{w}}({Z})} \settodepth{\xvec@depth}{{{w}}({Z})} \settowidth{\xvec@width}{{{w}}({Z})} \else \settoheight{\xvec@height}{{{w}}({Z})} \settodepth{\xvec@depth}{{{w}}({Z})} \settowidth{\xvec@width}{{{w}}({Z})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({Z})^{{\:\!\downarrow}}\leq \ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})^{{\:\!\downarrow}}\). By Claim 7, there is a one-to-one mapping \(\sigma:Z-T\mapsto T-Z\) such that \(w_i\leqw_{\sigma(i)}\) for all \(i\in Z-T\). Now let \(L=(Z\cap T)\cup\{\sigma(i): i\in Z-T\}\). Clearly, we have \(L\subseteq T\), \(|L|=|Z|\), and \(\ifmmode \settoheight{\xvec@height}{{{w}}({Z})} \settodepth{\xvec@depth}{{{w}}({Z})} \settowidth{\xvec@width}{{{w}}({Z})} \else \settoheight{\xvec@height}{{{w}}({Z})} \settodepth{\xvec@depth}{{{w}}({Z})} \settowidth{\xvec@width}{{{w}}({Z})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({Z})^{{\:\!\downarrow}}\leq \ifmmode \settoheight{\xvec@height}{{{w}}({L})} \settodepth{\xvec@depth}{{{w}}({L})} \settowidth{\xvec@width}{{{w}}({L})} \else \settoheight{\xvec@height}{{{w}}({L})} \settodepth{\xvec@depth}{{{w}}({L})} \settowidth{\xvec@width}{{{w}}({L})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({L})^{{\:\!\downarrow}}\). Also, (i) \(T-L\subseteq T-Z\subseteq Y-Z\), (ii) \(T-L\in\mathcal{S}\), and (iii) \(|T-L|=|T|-|Z|\geq\widetilde{\mathsf{PN}}_j-|Z|\). So by [gcost], the set \(S_j\) obtained in iteration \(j\) satisfies \(\ifmmode \settoheight{\xvec@height}{{{w}}({S_j})} \settodepth{\xvec@depth}{{{w}}({S_j})} \settowidth{\xvec@width}{{{w}}({S_j})} \else \settoheight{\xvec@height}{{{w}}({S_j})} \settodepth{\xvec@depth}{{{w}}({S_j})} \settowidth{\xvec@width}{{{w}}({S_j})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({S_j})^{{\:\!\downarrow}}\leq \ifmmode \settoheight{\xvec@height}{{{w}}({T-L})} \settodepth{\xvec@depth}{{{w}}({T-L})} \settowidth{\xvec@width}{{{w}}({T-L})} \else \settoheight{\xvec@height}{{{w}}({T-L})} \settodepth{\xvec@depth}{{{w}}({T-L})} \settowidth{\xvec@width}{{{w}}({T-L})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T-L})^{{\:\!\downarrow}}\). Coupled with \(\ifmmode \settoheight{\xvec@height}{{{w}}({Z})} \settodepth{\xvec@depth}{{{w}}({Z})} \settowidth{\xvec@width}{{{w}}({Z})} \else \settoheight{\xvec@height}{{{w}}({Z})} \settodepth{\xvec@depth}{{{w}}({Z})} \settowidth{\xvec@width}{{{w}}({Z})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({Z})^{{\:\!\downarrow}}\leq \ifmmode \settoheight{\xvec@height}{{{w}}({L})} \settodepth{\xvec@depth}{{{w}}({L})} \settowidth{\xvec@width}{{{w}}({L})} \else \settoheight{\xvec@height}{{{w}}({L})} \settodepth{\xvec@depth}{{{w}}({L})} \settowidth{\xvec@width}{{{w}}({L})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({L})^{{\:\!\downarrow}}\), this shows that \(\ifmmode \settoheight{\xvec@height}{{{w}}({Z\cup S_j})} \settodepth{\xvec@depth}{{{w}}({Z\cup S_j})} \settowidth{\xvec@width}{{{w}}({Z\cup S_j})} \else \settoheight{\xvec@height}{{{w}}({Z\cup S_j})} \settodepth{\xvec@depth}{{{w}}({Z\cup S_j})} \settowidth{\xvec@width}{{{w}}({Z\cup S_j})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({Z\cup S_j})^{{\:\!\downarrow}}\leq \ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})^{{\:\!\downarrow}}\). This proves the induction step, and hence the lemma. ◻
To bound \(\mathsf{rwd}(A_{{n_{\mathsf{bkt}}}})\), we argue that there is a fractional assignment \(x\in\mathbb{R}_{+}^{A_{{n_{\mathsf{bkt}}}}\times\llbracket{{n_{\mathsf{bkt}}}}\rrbracket}\) of elements in \(A_{{n_{\mathsf{bkt}}}}\) to buckets \(j\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket\) such that: (i) each element is assigned to an extent of at most \(1\), i.e., \(\sum_{j=0}^{n_{\mathsf{bkt}}}x_{e,j}\leq 1\) for every \(e\in A_{{n_{\mathsf{bkt}}}}\); and (ii) each \(j\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket\) is assigned at least \(\widetilde{N}_j/\beta\) elements, and this assignment is supported on a subset of \(A_j\), i.e., \[\sum_{e\in A_{{n_{\mathsf{bkt}}}}}x_{e,j}\geq\frac{\widetilde{N}_j}{\beta} \quad \forall j\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket, \qquad x_{e,j}=0\;\;\text{if e\notin A_j} \quad \forall e\in A_{{n_{\mathsf{bkt}}}}, j\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket.\] We first show that such a fractional assignment implies the desired guarantee on \(\mathsf{rwd}(A_{{n_{\mathsf{bkt}}}})\).
Lemma 3. If we have a fractional assignment \(x\) satisfying (i) and (ii), then \(\mathsf{rwd}(A_{{n_{\mathsf{bkt}}}})\geq\frac{(1-\varepsilon)^2}{\beta}\cdot\mathit{OPT}\).
Proof. Define \(\mathsf{rwd}(x):=\sum_{e\in A_{{n_{\mathsf{bkt}}}}}\sum_{j\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket}\mathsf{rwd}_e x_{e,j}\). Due to (i), we have \(\mathsf{rwd}(x)\leq \mathsf{rwd}(A_{{n_{\mathsf{bkt}}}})\). Due to (ii), we have that \(x_{e,j}>0\) implies that \(e\in A_j\), and so \(\mathsf{rwd}_e\geq\frac{\tau_j}{1+\varepsilon}\). This yields \[\mathsf{rwd}(x)\geq \frac{1}{1+\varepsilon}\cdot\sum_{j=0}^{{n_{\mathsf{bkt}}}}\tau_j\cdot\Bigl(\sum_{e\in A_{{n_{\mathsf{bkt}}}}}x_{e,j}\Bigr) \geq\frac{1}{\beta(1+\varepsilon)}\cdot\sum_{j=0}^{{n_{\mathsf{bkt}}}}\widetilde{N}_j\tau_j. \label{fracrewd}\tag{1}\] Also, for all \(j\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket\), we have \(\mathsf{rwd}(O^*\cap\mathsf{Bkt}_j)\leq(\widetilde{R}_j+1)\Delta=\widetilde{N}_j\tau_j+\Delta\). Adding these inequalities for all \(j\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket\), and combining this with \(\mathsf{rwd}(A_{{n_{\mathsf{bkt}}}})\geq\mathsf{rwd}(x)\) and 1 , we obtain that \(\mathit{OPT}\leq\beta(1+\varepsilon)\mathsf{rwd}(A_{{n_{\mathsf{bkt}}}})+\varepsilon\mathit{OPT}\). Rearranging, gives \(\mathsf{rwd}(A_{{n_{\mathsf{bkt}}}})\geq\frac{1-\varepsilon}{\beta(1+\varepsilon)}\cdot\mathit{OPT}\geq\frac{(1-\varepsilon)^2}{\beta}\cdot\mathit{OPT}\). ◻
Lemma 4. A fractional assignment \(x\in\mathbb{R}_{+}^{A_{{n_{\mathsf{bkt}}}}\times\llbracket{{n_{\mathsf{bkt}}}}\rrbracket}\) satisfying (i) and (ii) exists.
Proof. We argue by induction on \(j\) that there is a partial fractional assignment \(x\in\mathbb{R}_{+}^{A_{j}\times\llbracket{j}\rrbracket}\) of elements in \(A_j\) to buckets with indices in \(\llbracket{j}\rrbracket\) such that: (i’) \(\sum_{q=0}^j x_{e,q}\leq 1\) for every \(e\in A_j\); and (ii’) \[\sum_{e\in A_j}x_{e,q}=\frac{\widetilde{N}_q}{\beta}\quad \forall q\in\llbracket{j}\rrbracket, \qquad x_{e,q}=0\;\;\text{if e\notin A_q} \quad \forall e\in A_j, q\in\llbracket{j}\rrbracket.\]
For the base case, \(j=0\), we can easily ensure these properties since \(|A_0|\geq\widetilde{N}_0/\beta\). For the induction step, consider \(j>0\), and suppose we have an assignment \(x\in\mathbb{R}_{+}^{A_{j-1}\times\llbracket{j-1}\rrbracket}\) for index \(j-1\) satisfying (i’) and (ii’). Initialize \(x_{e,j}=0\) for all \(e\in A_{j-1}\), and \(x_{e,q}=0\) for all \(e\in A_j-A_{j-1}\), \(q\in\llbracket{j}\rrbracket\). Since \(|A_j|\geq\widetilde{\mathsf{PN}}_j/\beta\), we have \(\sum_{e\in A_j}\bigl(1-\sum_{q=0}^{j-1}x_{e,q}\bigr)=|A_j|-\bigl(\sum_{q=0}^{j-1}\widetilde{N}_q\bigr)/\beta\geq\widetilde{N}_j/\beta\), where the first equality is due to (i’). So we can find some \(y\in\mathbb{R}_{+}^{A_j}\) with \(y_{e}\leq 1-\sum_{q=0}^{j-1}x_{e,q}\) for all \(e\in A_j\) such that \(\sum_{e\in A_j}y_e=\widetilde{N}_j/\beta\). Setting \(x_{e,j}=y_e\) for all \(e\in A_j\) yields the desired partial fractional assignment for index \(j\). ◻
Proof of Theorem [grparambounds]. Consider any \(Y\subseteq[n]\), independent set \(Z\subseteq Y\), \(\ell\in[0,r(Y)]\), and cost vector \(c\in\mathbb{R}^n\). To obtain the efficiently-certifiable bound \(\mathsf{gr}(\mathcal{M})\leq k+1\), recall from Definition [grparam] that we need to efficiently compute \(S\subseteq Y-Z\) such that [gind] \(Z\cup S\in\mathcal{S}\), [gsize] \(|Z\cup S|\geq\frac{\ell}{k+1}\), and [gcost] \(\ifmmode \settoheight{\xvec@height}{{c}({S})} \settodepth{\xvec@depth}{{c}({S})} \settowidth{\xvec@width}{{c}({S})} \else \settoheight{\xvec@height}{{c}({S})} \settodepth{\xvec@depth}{{c}({S})} \settowidth{\xvec@width}{{c}({S})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {c}({S})^{{\:\!\downarrow}}\leq \ifmmode \settoheight{\xvec@height}{{c}({B})} \settodepth{\xvec@depth}{{c}({B})} \settowidth{\xvec@width}{{c}({B})} \else \settoheight{\xvec@height}{{c}({B})} \settodepth{\xvec@depth}{{c}({B})} \settowidth{\xvec@width}{{c}({B})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {c}({B})^{{\:\!\downarrow}}\) for every independent set \(B\subseteq Y-Z\) with \(|B|\geq\ell-|Z|\).
If \(|Z|\geq\ell/(k+1)\), we can simply take \(S=\emptyset\), so suppose this is not the case. We obtain \(S\) by running the greedy algorithm on \(Y-Z\), where we consider elements in non-decreasing order of cost. We start with \(S\leftarrow\emptyset\). We consider elements in \(Y\) in non-decreasing order of cost (breaking ties arbitrarily) and keep adding elements to \(S\) as long as this maintains \(Z\cup S\in\mathcal{S}\). We continue until \(|Z\cup S|\geq\ell/(k+1)\). We argue that this termination condition is reached, so the algorithm is well-defined and hence, \(S\) satisfies [gind] and [gsize].
Fix some \(B\subseteq Y-Z\), \(B\in\mathcal{S}\) with \(|B|\geq\ell-|Z|\).
We argue inductively that we can maintain a set \(B'\subseteq B\cup S\) such that: (i) \(\ifmmode \settoheight{\xvec@height}{{c}({S})} \settodepth{\xvec@depth}{{c}({S})} \settowidth{\xvec@width}{{c}({S})} \else \settoheight{\xvec@height}{{c}({S})} \settodepth{\xvec@depth}{{c}({S})} \settowidth{\xvec@width}{{c}({S})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {c}({S})^{{\:\!\downarrow}}\leq \ifmmode \settoheight{\xvec@height}{{c}({B-B'})} \settodepth{\xvec@depth}{{c}({B-B'})} \settowidth{\xvec@width}{{c}({B-B'})} \else \settoheight{\xvec@height}{{c}({B-B'})} \settodepth{\xvec@depth}{{c}({B-B'})} \settowidth{\xvec@width}{{c}({B-B'})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {c}({B-B'})^{{\:\!\downarrow}}\); and (ii) \(Z\cup S\cup\{e\}\in\mathcal{S}\) for some \(e\in B'-S\) as long as \(|Z\cup S|<\frac{\ell}{k+1}\). Property (ii) shows that the algorithm is well-defined and so [gind], [gsize] hold; property (i) shows that [gcost] holds.
We will also ensure: (*) \(|B-B'|=|S|\). At the start of the first iteration, when \(S=\emptyset\), we take \(B'=B\). Clearly, this satisfies (i) and (*). Property (ii) holds because \(|Z\cup S|=|Z|<\frac{\ell}{k+1}\) implies that \(|Z|<k(\ell-|Z|)\leq k|B'|\leq kr(B'\cup Z)\), and so since \(\mathcal{M}\) is a \(k\)-set system, \(Z\) cannot be a maximal independent set contained in \(B'\cup Z\); therefore, there is some \(e\in (B'\cup Z)-Z=B'-Z\) such that \(Z\cup\{e\}\in\mathcal{S}\).
Suppose inductively that (i), (ii), (*) hold at the beginning of some iteration for which \(|Z\cup S|<\frac{\ell}{k+1}\). Let \(S_1\) denote \(S\) at the start of the iteration. So there exists \(e\in B'-S_1\) such that \(Z\cup S_1\cup\{e\}\in\mathcal{S}\). (Note that \(e\notin Z\).) So in this iteration, greedy adds some \(f\in Y-(S_1\cup Z)\) to \(S_1\) with \(c_f\leq c_e\) to obtain the \(S\)-set at the end of the iteration. Take \(B''=B'-\{e\}\). Since \(\ifmmode \settoheight{\xvec@height}{{c}({S_1})} \settodepth{\xvec@depth}{{c}({S_1})} \settowidth{\xvec@width}{{c}({S_1})} \else \settoheight{\xvec@height}{{c}({S_1})} \settodepth{\xvec@depth}{{c}({S_1})} \settowidth{\xvec@width}{{c}({S_1})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {c}({S_1})^{{\:\!\downarrow}}\leq \ifmmode \settoheight{\xvec@height}{{c}({B-B'})} \settodepth{\xvec@depth}{{c}({B-B'})} \settowidth{\xvec@width}{{c}({B-B'})} \else \settoheight{\xvec@height}{{c}({B-B'})} \settodepth{\xvec@depth}{{c}({B-B'})} \settowidth{\xvec@width}{{c}({B-B'})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {c}({B-B'})^{{\:\!\downarrow}}\) and \(c_f\leq c_e\), we obtain that \(\ifmmode \settoheight{\xvec@height}{{c}({S})} \settodepth{\xvec@depth}{{c}({S})} \settowidth{\xvec@width}{{c}({S})} \else \settoheight{\xvec@height}{{c}({S})} \settodepth{\xvec@depth}{{c}({S})} \settowidth{\xvec@width}{{c}({S})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {c}({S})^{{\:\!\downarrow}}\leq \ifmmode \settoheight{\xvec@height}{{c}({B-B''})} \settodepth{\xvec@depth}{{c}({B-B''})} \settowidth{\xvec@width}{{c}({B-B''})} \else \settoheight{\xvec@height}{{c}({B-B''})} \settodepth{\xvec@depth}{{c}({B-B''})} \settowidth{\xvec@width}{{c}({B-B''})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {c}({B-B''})^{{\:\!\downarrow}}\). Hence, (i) and (*) hold (with \(B'=B''\)) at the end of the iteration. If \(|Z\cup S|<\frac{\ell}{k+1}\), then \(r(B''\cup Z\cup S)\geq |B''|=|B|-|S|\geq\ell-|Z|-|S|>k(|Z\cup S|)\). So since \(\mathcal{M}\) is a \(k\)-set system, it cannot be that \(Z\cup S\) is a maximal independent set contained in \(B''\cup Z\cup S\); that is, there exists some \(e\in (B''\cup Z\cup S)-(Z\cup S)=B''-S\) such that \(Z\cup S\cup\{e\}\in\mathcal{S}\). This shows that (ii) holds at the end of the iteration. Thus, we obtain the efficiently-certifiable bound \(\mathsf{gr}(\mathcal{M})\leq k+1\). ◻
In this section, we describe a very useful general reduction applicable to \(\mathsf{NormBudgSAP}\) and \(\mathsf{NormBudgSepFL}\)(and hence \(\mathsf{NormBudgMaxGAP}\), \(\mathsf{NormBudg}k\mathsf{FL}\)), that will allow us to reduce the task of developing an approximation algorithm for these problems to that of obtaining a bicriteria approximation guarantee for the problem, where we may violate the norm budget by a bounded factor, and an approximation guarantee for a norm-budgeted bipartite matching problem. Since we have an \(O(1)\)-approximation algorithm for \(\mathsf{NormBudgMatch}\), this will imply that to obtain an \(O(1)\)-factor for any of these problems (i.e., norm-budgeted {\(\mathsf{Max}\mathsf{GAP}\), \(\mathsf{SAP}\), \(k\mathsf{FL}\), \(\mathsf{SepFL}\)}), it suffices to obtain a bicriteria \((\rho,\gamma)\)-approximation with \(\rho,\gamma=O(1)\), for the problem, i.e., return a solution with reward at least \(\mathit{OPT}/\rho\), which may violate the budget by at most a \(\gamma\)-factor. (Complementing this, in Section [sepfl], we show how to obtain such bicriteria guarantees.)
This reduction turns out to be extremely useful, because allowing for bicriteria guarantees considerably frees our hand and, in particular, enables one to leverage the machinery developed for tackling minimum-norm optimization problems [1], [3], such as estimating suitable features of the size-vector of an optimal solution (e.g., the \(\ell\)-th largest components), coming up with a solution with roughly similar features.
Although \(\mathsf{NormBudgSepFL}\) contains \(\mathsf{NormBudgSAP}\) as a special case, we state our reduction separately for \(\mathsf{NormBudgSepFL}\) and \(\mathsf{NormBudgSAP}\) because the norm-budgeted matching problem that we need to solve is slightly different in these two settings
Theorem 8. Given a bicriteria \((\rho,\gamma)\) approximation algorithm \(\mathcal{A}^{\mathsf{SAP}}\) for \(\mathsf{NormBudgSAP}\), and an \(\alpha\)-approximation algorithm \(\mathcal{A}^{\mathsf{Match}}\) for \(\mathsf{NormBudgMatch}\) on bipartite graphs, one can obtain a \(\beta\)-approximation algorithm for \(\mathsf{NormBudgSAP}\), where \(\beta=\min\bigl\{\gamma(\rho+\alpha),\,\bigl\lceil\gamma\bigr\rceil(\rho+\alpha)-\alpha\bigr\}\).
For \(\mathsf{NormBudgSepFL}\), we need to solve a variant of norm-budgeted matching where we seek a matching of size at most \(k\) (satisfying the norm-budget constraint); we call this \(\mathsf{NormBudg}k\mathsf{Match}\). Note that \(\mathsf{NormBudg}k\mathsf{Match}\) on a bipartite graph can be cast as \(\mathsf{NormBudgMWIS}\) on a \(2\)-set system \(\mathcal{M}\), because the independence system encoding the degree bounds for vertices on one side of the bipartite graph and the cardinality constraint of \(k\) is still a matroid. So just as with \(\mathsf{NormBudgMatch}\)(Corollary 1), there is a \((3+\varepsilon)\)-approximation algorithm for \(\mathsf{NormBudg}k\mathsf{Match}\).
Theorem 9. Given a bicriteria \((\rho,\gamma)\) approximation algorithm \(\mathcal{A}^{\mathsf{SepFL}}\) for \(\mathsf{NormBudgSepFL}\), and an \(\alpha\)-approximation algorithm \(\mathcal{A}^{k\mathsf{Match}}\) for \(\mathsf{NormBudg}k\mathsf{Match}\) on bipartite graphs, one can obtain a \(\beta\)-approximation algorithm for \(\mathsf{NormBudgSepFL}\), where \(\beta=\min\bigl\{\gamma(\rho+\alpha),\,\bigl\lceil\gamma\bigr\rceil(\rho+\alpha)-\alpha\bigr\}\).
The proofs of Theorems 8 and 9 utilize the following simple claim. (Recall that for a vector \(v\), and a subset \(S\) of coordinates, \(v(S)\) denotes \(\sum_{j\in S}v_j\).)
Claim 10. Let \(a\in\mathbb{R}_+^N\), \(L=a([N])\), and \(k\geq 1\) be an integer. We can obtain \((2k-1)\) sets \(T_1,\ldots,T_{2k-1}\) whose union is \([N]\) such that: (a) \(a(T_{2\ell-1})\leq L/k\) for all \(\ell\in[k]\), (b) \(|T_{2\ell}|\leq 1\) for all \(\ell\in[k-1]\), and (c) \((T_1\cup\ldots\cup T_\ell)=[j]\), for some \(j\in[N]\), for all \(\ell\in[2k-1]\).
Proof. Let \(I=[N]\). For \(\ell=1,\ldots,k-1\), we repeat the following: let \(T'_\ell\) be a minimal prefix of \(I\) such that \(a(T'_\ell)>L/k\), and let \(j\) be the last index in \(T'_\ell\). We set \(T_{2\ell-1}=T'_\ell-\{j\}\), and \(T_{2\ell}=\{j\}\), and update \(I\leftarrow I-T'_\ell\). Finally, we set \(T_{2k-1}\) to be the index-set \(I\) at the end of the above loop. Clearly, by minimality of \(T'_\ell\), we obtain \(a(T_{2\ell-1})\leq L/k\) for all \(\ell\in[k-1]\). We also have \(a(T_{2k-1})=a([N]-(T'_1\cup\ldots\cup T'_{k-1}))<L-(k-1)\cdot L/k=L/k\). Finally, (c) holds because, for all \(\ell\in[2k-1]\), by construction, we have that \((T_1\cup\ldots\cup T_\ell)\) is some prefix of \(I\). ◻
Proof of Theorem 8. Let \(\mathcal{I}=\bigl(J,m,\{p_{ij},\mathsf{rwd}_{ij}\}_{i\in[m],j\in J},f:\mathbb{R}^m\mapsto\mathbb{R}_+,B,\{\mathcal{M}_i=(J,\mathcal{S}_i)\}_{i\in[m]}\bigr)\) be a \(\mathsf{NormBudgSAP}\) instance. (Recall that we use \(i\) to index machines, and \(j\) to index jobs.) The algorithm leading to the stated guarantee is simple. Let \(\mathcal{I}'\) be the \(\mathsf{NormBudgSAP}\) instance specified by the same data as \(\mathcal{I}\), except that the norm budget is reduced to \(B/\gamma\), and let \(\sigma_1:S_1\mapsto[m]\) be the solution returned by the \((\rho,\gamma)\)-approximation algorithm \(\mathcal{A}^{\mathsf{SAP}}\) on input \(\mathcal{I}'\). Note that \(f( \ifmmode \settoheight{\xvec@height}{{{\mathsf{load}}}({\sigma_1})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({\sigma_1})} \settowidth{\xvec@width}{{{\mathsf{load}}}({\sigma_1})} \else \settoheight{\xvec@height}{{{\mathsf{load}}}({\sigma_1})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({\sigma_1})} \settowidth{\xvec@width}{{{\mathsf{load}}}({\sigma_1})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{load}}}({\sigma_1}))\leq\gamma\cdot B/\gamma\leq B\), so \(\sigma_1\) is a feasible solution to the original \(\mathsf{NormBudgSAP}\) instance. Let \(\mathcal{I}''\) be the norm-budgeted matching instance specified by the bipartite graph \(G=\bigl(V=J\cup[m],\,E=\bigl\{ij:\{j\}\in\mathcal{S}_i\bigr\}\bigr)\), where the size and reward of an edge \(ij\) are given by \(p_{ij}\) and \(\mathsf{rwd}_{ij}\) respectively, the same norm \(f\),13 and the same budget \(B\). Consider the solution returned by the \(\alpha\)-approximation algorithm \(\mathcal{A}^{\mathsf{Match}}\) for \(\mathcal{I}''\), viewed as an assignment \(\sigma_2:S_2\mapsto[m]\) (so \(\sigma_2\) assigns at most one job per machine). Note that \(\sigma_2\) is a feasible solution to \(\mathcal{I}\). We return the better of the two solutions, \(\sigma_1\), \(\sigma_2\).
To analyze this, we lower bound \(\mathit{OPT}\) in terms of \(\mathit{OPT}_{\mathcal{I}'}\) and \(\mathit{OPT}_{\mathcal{I}''}\), which are the optimal values for the \(\mathsf{NormBudgSAP}\)-instance \(\mathcal{I}'\) and the \(\mathsf{NormBudgMatch}\)-instance \(\mathcal{I}''\). Let \(\sigma^*:O^*\mapsto[m]\) be an optimal solution to \(\mathcal{I}\), and let \({ \ifmmode \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \else \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{load}^*}= \ifmmode \settoheight{\xvec@height}{{{\mathsf{load}}}({\sigma^*})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({\sigma^*})} \settowidth{\xvec@width}{{{\mathsf{load}}}({\sigma^*})} \else \settoheight{\xvec@height}{{{\mathsf{load}}}({\sigma^*})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({\sigma^*})} \settowidth{\xvec@width}{{{\mathsf{load}}}({\sigma^*})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{load}}}({\sigma^*})\) be the load-vector induced by \(\sigma^*\). Let \(O^*_i:=\{j\in O^*: \sigma^*(j)=i\}\) be the jobs assigned to machine \(i\) under \(\sigma^*\).
First, suppose that \(\gamma\) is an integer. Using Claim 10, we can divide each \(O^*_i\)-set into \(2\gamma-1\) sets, \({O^*_i}^{(1)},\ldots,{O^*_i}^{(2\gamma-1)}\) (some of which could be possibly empty), such that, for \(\ell=1,3,\ldots,2\gamma-1\), we have \(\sum_{j\in{O^*_i}^{(\ell)}}p_{ij}\leq{ \ifmmode \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \else \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{load}^*}_i/\gamma\), and the sets \({O^*_i}^{(\ell)}\) for \(\ell=2,4,\ldots,2\gamma-2\) consist of at most one job. Note that since each \(\mathcal{M}_i\) is an independence system, we have that \({O^*_i}^{(\ell)}\in\mathcal{S}_i\), for every \(i\in[m]\) and \(\ell=1,\ldots,2\gamma-1\).
For \(\ell=1,\ldots,2\gamma-1\), consider the assignment \(\sigma^{(\ell)}\) that assigns jobs in \({O^*_i}^{(\ell)}\) to each machine \(i\in[m]\). For \(\ell=1,3,\ldots,2\gamma-1\), by construction, the resulting load-vector is coordinate-wise at most \({ \ifmmode \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \else \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{load}^*}/\gamma\). Therefore, \(f\bigl( \ifmmode \settoheight{\xvec@height}{{{\mathsf{load}}}({\sigma^{(\ell)}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({\sigma^{(\ell)}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({\sigma^{(\ell)}})} \else \settoheight{\xvec@height}{{{\mathsf{load}}}({\sigma^{(\ell)}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({\sigma^{(\ell)}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({\sigma^{(\ell)}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{load}}}({\sigma^{(\ell)}})\bigr)\leq B/\gamma\),14 and \(\sigma^{(\ell)}\) is a feasible solution to the \(\mathsf{NormBudgSAP}\)-instance \(\mathcal{I}'\).
For \(\ell=2,4,\ldots,2\gamma-2\), \(\sigma^{(\ell)}\) is a feasible solution to the \(\mathsf{NormBudgMatch}\)-instance \(\mathcal{I}''\).
Since \(O^*=\bigcup_{i\in[m],\ell\in[2\gamma'-1]}{O^*_i}^{(\ell)}\), it follows that \(\mathit{OPT}\leq\gamma\mathit{OPT}_{\mathcal{I}'}+(\gamma-1)\mathit{OPT}_{\mathcal{I}''}\). So returning the better of \(\sigma_1\) and \(\sigma_2\), yields reward \[\begin{align} \max\Bigl\{\mathsf{rwd}(S_1),\mathsf{rwd}(S_2)\Bigr\} & \geq \frac{\gamma\rho}{\gamma\rho+(\gamma-1)\alpha}\cdot\mathsf{rwd}(S_1)+ \frac{(\gamma-1)\alpha}{\gamma\rho+(\gamma-1)\alpha}\cdot\mathsf{rwd}(S_2) \\ & \geq\frac{1}{\gamma\rho+(\gamma-1)\alpha}\cdot \Bigl(\gamma\cdot\mathit{OPT}_{\mathcal{I}'}+(\gamma-1)\mathit{OPT}_{\mathcal{I}''}\Bigr) \\ & \geq\frac{\mathit{OPT}}{\gamma\rho+(\gamma-1)\alpha}\geq\frac{\mathit{OPT}}{\beta}. \end{align}\] The second inequality follows due to the approximation guarantees of algorithms \(\mathcal{A}^{\mathsf{SAP}}\) and \(\mathcal{A}^{\mathsf{Match}}\).
Now suppose \(\gamma\) is not an integer. Since \(\mathcal{A}^{\mathsf{SAP}}\) is also a \((\rho,\bigl\lceil\gamma\bigr\rceil)\)-approximation algorithm for \(\mathsf{NormBudgSAP}\), the above analysis shows that we obtain a solution of reward at least \(\mathit{OPT}/\bigl(\bigl\lceil\gamma\bigr\rceil\rho+(\bigl\lceil\gamma\bigr\rceil-1)\alpha\bigr)\).
For the other guarantee, suppose \(\gamma\) is a rational number \(a/b\), where \(a>b\geq 1\), and \(a,b\in\mathbb{Z}\). For \(i\in[m]\), let \(A_i\) be the ordered multiset consisting of \(b\) copies of \(O^*_i\), in sequence. Clearly, \(\sum_{j\in A_i}p_{ij}=b\cdot{{ \ifmmode \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \else \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{load}^*}}_i\) and \(\mathsf{rwd}(A_i)=b\cdot\mathsf{rwd}(O^*_i)\); also, note that any subsequence \(T\subseteq A_i\) with \(\sum_{j\in T_i}p_{ij}\leq{{ \ifmmode \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \else \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{load}^*}}_i\) consists of all distinct jobs, i.e., \(T\) is a set of jobs. We now apply Claim 10 to the multiset \(A_i\) taking \(k=a\), for all \(i\in[m]\). This yields sets \(B_i^{(\ell)}\) for all \(i\in[m]\), \(\ell\in[2a-1]\), where for every \(i\in[m]\), we have: (1) \(\sum_{j\in B_i^{(\ell)}}p_{ij}\leq\frac{b}{a}\cdot{{ \ifmmode \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \else \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{load}^*}}_i=\frac{{{ \ifmmode \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \else \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{load}^*}}_i}{\gamma}\) for \(\ell=1,3,\ldots,2a-1\), and (2) \(|B_i^{(\ell)}|\leq 1\) for \(\ell=2,4,\ldots,2a-2\). By part (c) of Claim 10, each \(B_i^{(\ell)}\) is a subsequence of \(A_i\), so from (1) and our earlier observation, it follows that every \(B_i^{(\ell)}\)-set consists of distinct jobs.
As before, let \(\sigma^{(\ell)}\) be the assignment that assigns jobs in \(B_i^{(\ell)}\) to each machine \(i\in[m]\). Then, due to (1), for all \(\ell=1,3,\ldots,2a-1\), \(\sigma^{(\ell)}\) is a feasible solution to the \(\mathsf{NormBudgSAP}\)-instance \(\mathcal{I}'\). Also, for \(\ell=2,4,\ldots,2a-2\), \(\sigma^{(\ell)}\) is a feasible solution to the \(\mathsf{NormBudgMatch}\)-instance \(\mathcal{I}''\). Since \(A_i=\bigcup_{\ell\in[2a-1]}B_i^{(\ell)}\) for all \(i\in[m]\), we have \(b\cdot\mathit{OPT}=\sum_{i\in[m],\ell\in[2a-1]}\mathsf{rwd}(B_i^{(\ell)})\leq a\cdot\mathit{OPT}_{\mathcal{I}'}+(a-1)\mathit{OPT}_{\mathcal{I}''}\). Recall that we return the better of the two assignments \(\sigma_1:S_1\mapsto[m]\) and \(\sigma_2:S_2\mapsto[m]\). This yields reward \[\begin{align} \max\Bigl\{\mathsf{rwd}(S_1),\mathsf{rwd}(S_2)\Bigr\} & \geq \frac{\rho}{\rho+\alpha}\cdot\mathsf{rwd}(S_1)+ \frac{\alpha}{\rho+\alpha}\cdot\mathsf{rwd}(S_2) \\ & \geq\frac{1}{\rho+\alpha}\cdot \Bigl(\mathit{OPT}_{\mathcal{I}'}+\mathit{OPT}_{\mathcal{I}''}\Bigr) \geq\frac{b}{a}\cdot\frac{\mathit{OPT}}{\rho+\alpha}=\frac{\mathit{OPT}}{\gamma(\rho+\alpha)}. \end{align}\] The same guarantee holds for irrational \(\gamma\), by taking a limit of rationals approaching \(\gamma\) from above, since \(\gamma(\rho+\alpha)\) is a continuous function of \(\gamma\). So for any \(\gamma\geq 1\), we obtain reward least \(\mathit{OPT}/\bigl(\gamma(\rho+\alpha)\bigr)\). Combining the two bounds, we obtain reward at least \(\mathit{OPT}/\beta\). ◻
Proof of Theorem 9. The proof is essentially identical to that of Theorem 8. The only change is in the definition of the norm-budgeted matching problem \(\mathcal{I}''\), where now we need to additionally enforce that a solution is a matching of size at most \(k\), so that this maps to a feasible solution to the original \(\mathsf{NormBudgSepFL}\) instance. Thus, \(\mathcal{I}''\) is now a \(\mathsf{NormBudg}k\mathsf{Match}\)-instance. ◻
We now consider the most general problem, norm-budgeted separable \(k\)-facility location (\(\mathsf{NormBudgSepFL}\)), which contains \(\mathsf{NormBudg}k\mathsf{FL}\), \(\mathsf{NormBudgSAP}\), and \(\mathsf{NormBudgMaxGAP}\) as special cases. Recall that the input to \(\mathsf{NormBudgSepFL}\) consists of a facility-set \(\mathcal{F}\) and client-set \(\mathcal{C}\). Assigning client \(j\) to facility \(i\) incurs assignment cots \(c_{ij}\), and yields reward \(\mathsf{rwd}_{ij}\). Throughout this section, we use \(i\) to index facilities, and \(j\) to index clients. Each facility \(i\) comes with an independence system \(\mathcal{M}_i=(\mathcal{C},\mathcal{S}_i)\). We also have a monotone, symmetric norm \(f:\mathbb{R}^k\mapsto\mathbb{R}_{+}\) and a budget \(B\). A solution opens a set \(F\subseteq\mathcal{F}\) of facilities with \(|F|\leq k\), and specifies an assignment \(\sigma:S\mapsto F\) of some subset \(S\subseteq\mathcal{C}\) of clients to facilities in \(F\) such that \(\{j:\sigma(j)=i\}\in\mathcal{S}_i\) for every \(i\in F\). This induces the facility-load vector \(\ifmmode \settoheight{\xvec@height}{{{\mathsf{f}\mathsf{load}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{f}\mathsf{load}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{f}\mathsf{load}}}({{\sigma}})} \else \settoheight{\xvec@height}{{{\mathsf{f}\mathsf{load}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{f}\mathsf{load}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{f}\mathsf{load}}}({{\sigma}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{f}\mathsf{load}}}({{\sigma}}):=\bigl(\sum_{j:\sigma(j)=i}c_{ij}\bigr)_{i\in F}\). The goal is to find a maximum-reward solution \((F,\sigma)\) satisfying \(f( \ifmmode \settoheight{\xvec@height}{{{\mathsf{f}\mathsf{load}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{f}\mathsf{load}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{f}\mathsf{load}}}({{\sigma}})} \else \settoheight{\xvec@height}{{{\mathsf{f}\mathsf{load}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{f}\mathsf{load}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{f}\mathsf{load}}}({{\sigma}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{f}\mathsf{load}}}({{\sigma}}))\leq B\).
The main result of this section is that given an algorithm for a subproblem involving a single facility, we can obtain an approximation algorithm for \(\mathsf{NormBudgSepFL}\).
Definition 2. We say that \(\mathcal{A}\) is a \(\beta\)-approximation algorithm for the single-facility max-reward problem* (\(\mathsf{1FRP}\)) if it is a \(\beta\)-approximation algorithm for the \(\mathsf{MWIS}\) problem on \(\mathcal{M}_i\), for every facility \(i\in\mathcal{F}\); that is, for any \(i\in\mathcal{F}\) and any rewards \(v\in\mathbb{R}_{+}^\mathcal{C}\), \(\mathcal{A}\) returns \(A\in\mathcal{S}_i\) such that \(v(A)\geq\bigl(\max_{S\in\mathcal{S}_i}v(S)\bigr)/\beta\).*
We say that \(\mathcal{A}\) is a \((\rho,\gamma)\)-approximation algorithm for budgeted\(\mathsf{1FRP}\)* if for any \(i\in\mathcal{F}\), any \(v\in\mathbb{R}_{+}^\mathcal{C}\), and any weight-vector \(\mathsf{wt}\in\mathbb{R}_{+}^\mathcal{C}\) and budget \(t\in\mathbb{R}_{+}\), \(\mathcal{A}\) returns a set \(A\in\mathcal{S}_i\) such that \(v(A)\geq\frac{1}{\rho}\cdot\bigl(\max\,\{v(S):\;S\in\mathcal{S}_i,\;\mathsf{wt}(S)\leq t\}\bigr)\), and \(\mathsf{wt}(A)\leq\gammat\).*
Lemma 5. Given a \(\beta\)-approximation algorithm for \(\mathsf{1FRP}\), one can obtain a \((\beta+1,1+\varepsilon)\)-approximation algorithm for budgeted\(\mathsf{1FRP}\) with running time \(\bigl(\frac{|\mathcal{C}|}{\varepsilon}\bigr)^{O(1/\varepsilon)}\), for any \(\varepsilon>0\).
We show that given an approximation algorithm for \(\mathsf{1FRP}\), or budgeted\(\mathsf{1FRP}\), one can obtain a corresponding guarantee for \(\mathsf{NormBudgSepFL}\). The guarantee for \(\mathsf{NormBudgSepFL}\) actually depends on the approximability of budgeted \(\mathsf{1FRP}\). Lemma 5 (proved in Appendix 12) shows that an approximation algorithm for \(\mathsf{1FRP}\) can be used to obtain a bicriteria approximation for budgeted\(\mathsf{1FRP}\), but in various settings, better guarantees are possible for budgeted\(\mathsf{1FRP}\) by tackling this problem directly. We therefore state the guarantee we obtain for \(\mathsf{NormBudgSepFL}\) in terms of the approximation guarantees of both \(\mathsf{1FRP}\) and budgeted\(\mathsf{1FRP}\).
Theorem 11. We can obtain the following guarantees for \(\mathsf{NormBudgSepFL}\).
A \(\gamma(1+\varepsilon)\bigl(\frac{e}{e-1}\cdot\rho+3\bigr)\)-approximation algorithm with running time \(\bigl(\frac{|\mathcal{C}|+|\mathcal{F}|}{\varepsilon}\bigr)^{O(1/\varepsilon^2)}\), for any \(\varepsilon>0\), given a \((\rho,\gamma)\)-approximation algorithm for budgeted\(\mathsf{1FRP}\). For the running time, we treat each call to the algorithm for budgeted\(\mathsf{1FRP}\) as an elementary operation.
An \(O(\beta)\)-approximation algorithm, given a \(\beta\)-approximation algorithm for \(\mathsf{1FRP}\).
Part (b) above follows from part (a) due to Lemma 5. (The approximation factor in part (b) is more precisely \((1+\varepsilon)\bigl(\frac{e}{e-1}\cdot(\beta+1)+3\bigr)\), in time \(\bigl(\frac{|\mathcal{C}|+|\mathcal{F}|}{\varepsilon}\bigr)^{O(1/\varepsilon^2)}\).)
As noted in Section 2.1, when \(k=|\mathcal{F}|\), \(\mathsf{NormBudgSepFL}\) reduces to \(\mathsf{NormBudgSAP}\), since we can simply open all facilities and we only need to determine which clients to assign to which facilities. An orthogonal special case of \(\mathsf{NormBudgSepFL}\) is \(\mathsf{NormBudg}k\mathsf{FL}\), wherein there are no constraints on the set of clients that may be assigned to an open facility, i.e., \(\mathcal{M}_i\) is the free matroid with \(\mathcal{S}_i=2^{\mathcal{C}}\) for all \(i\in\mathcal{F}\). Also, \(\mathsf{NormBudgMaxGAP}\) is a special case of both \(\mathsf{NormBudgSAP}\) and \(\mathsf{NormBudg}k\mathsf{FL}\)(\(k=|\mathcal{F}|\) and \(\mathcal{M}_i\) is a free matroid for all \(i\in\mathcal{F}\)). Clearly, when \(\mathcal{M}_i\) is the free matroid for all \(i\in\mathcal{F}\), budgeted\(\mathsf{1FRP}\) is simply the (standard) knapsack problem, and we have an FPTAS for budgeted\(\mathsf{1FRP}\)(i.e., a \((1+\varepsilon,1)\)-approximation). Thus, Theorem 11 leads to the following results for \(\mathsf{NormBudgSAP}\), \(\mathsf{NormBudgMaxGAP}\), and \(\mathsf{NormBudg}k\mathsf{FL}\).
Theorem 12 (Corollary of Theorem 11).
For \(\mathsf{NormBudgSAP}\), we obtain the same guarantees as in parts (a) and (b) of Theorem 11.
We can obtain a \((4.582+\varepsilon)\)-approximation algorithm for \(\mathsf{NormBudg}k\mathsf{FL}\) and \(\mathsf{NormBudgMaxGAP}\).
Theorem [normsapthm] is a direct consequence of \(\mathsf{NormBudgSAP}\) being a special case of \(\mathsf{NormBudgSepFL}\).
Theorem [normschedthm] follows from Theorem 11(a) by taking \(\rho=1+\varepsilon\), \(\gamma=1\).
Armed with the reduction given by Theorem 9, to obtain Theorem 11, we can focus on developing a bicriteria approximation algorithm for \(\mathsf{NormBudgSepFL}\). We obtain the following bicriteria guarantee, which is the main technical result of this section.
Theorem 13. Given a \((\rho,\gamma)\)-approximation algorithm for budgeted\(\mathsf{1FRP}\), we can obtain a bicriteria \(\bigl(\frac{e}{e-1}\cdot\rho(1+\varepsilon),\gamma(1+\varepsilon)\bigr)\)-approximation algorithm for \(\mathsf{NormBudgSepFL}\) with running time \(\bigl(\frac{|\mathcal{F}|+|\mathcal{C}|}{\varepsilon}\bigr)^{O(1/\varepsilon^2)}\), for any \(\varepsilon>0\).
Theorem 11(a) immediately follows from Theorem 13 and Theorem 9, by noting also that there is a \((3+\varepsilon)\)-approximation for \(\mathsf{NormBudg}k\mathsf{Match}\).
Before delving into the proof of Theorem 13, it is worth noting that we can obtain better guarantees for \(\mathsf{NormBudgMaxGAP}\) on identical machines by observing that the \(\mathsf{NormBudgMaxGAP}\) and the \(\mathsf{NormBudgMatch}\) problems that we need to solve in the reduction of Theorem 8 involve the same set of jobs, machines, \(p_{ij}\)’s, \(\mathsf{rwd}_{ij}\)’s, and norm \(f\) as in the original \(\mathsf{NormBudgMaxGAP}\) instance. Thus, if we consider the setting of identical machines, we only need a bicriteria approximation for \(\mathsf{NormBudgMaxGAP}\) on identical machines, and the \(\mathsf{NormBudgMatch}\) problem that we need to solve is simply norm-budgeted knapsack. The latter admits a PTAS. Also, one can obtain a \((1+\varepsilon,1+\varepsilon)\)-approximation algorithm for \(\mathsf{NormBudgMaxGAP}\) on identical machines by: (a) using the approach for \(\mathsf{NormBudgKnap}\) to identify set \(A\) of jobs with \(\mathsf{rwd}(A)\geq(1-\varepsilon)^2\mathit{OPT}\) that admits an assignment satisfying the norm-budget constraint; and (b) using the PTAS for minimum-norm load-balancing on identical machines from [3] to find an assignment for \(A\) that violates the norm-budget constraint by a \((1+\varepsilon)\)-factor. Combining these ingredients yields the following result.
Theorem 14. One can obtain a bicriteria \((1+\varepsilon,1+\varepsilon)\)-approximation algorithm, and hence, a \((2+\varepsilon)\)-approximation algorithm, for \(\mathsf{NormBudgMaxGAP}\) on identical machines.
We defer the proof of Theorem 14 to Appendix 13. In Table ¿tbl:restable?, we mention a stronger result, namely, a PTAS for \(\mathsf{NormBudgMaxGAP}\) on identical machines (and also related machines). This utilizes a very different, more-sophisticated, problem-specific enumeration-based approach and is much-more involved. Hence, we discuss this separately in Section 9, and instead focus here on general techniques and results that apply more broadly to norm-budgeted packing problems. The reader who is interested in this PTAS can skip directly to Section 9.
The rest of this section is devoted to the proof of Theorem 13. Let \((F^*,\,\sigma^*:C^*\mapsto F^*)\) be an optimal solution to the \(\mathsf{NormBudgSepFL}\) instance, and let \({ \ifmmode \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}^*} \else \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{f}\mathsf{load}^*}= \ifmmode \settoheight{\xvec@height}{{{\mathsf{f}\mathsf{load}}}({{\sigma^*}})} \settodepth{\xvec@depth}{{{\mathsf{f}\mathsf{load}}}({{\sigma^*}})} \settowidth{\xvec@width}{{{\mathsf{f}\mathsf{load}}}({{\sigma^*}})} \else \settoheight{\xvec@height}{{{\mathsf{f}\mathsf{load}}}({{\sigma^*}})} \settodepth{\xvec@depth}{{{\mathsf{f}\mathsf{load}}}({{\sigma^*}})} \settowidth{\xvec@width}{{{\mathsf{f}\mathsf{load}}}({{\sigma^*}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{f}\mathsf{load}}}({{\sigma^*}})\) be the facility-load vector induced by \(\sigma^*\). We utilize an idea that has become standard in the study of minimum-norm optimization problems, namely, working with guesses of certain coordinates of the load vector \({ \ifmmode \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}^*} \else \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{f}\mathsf{load}^*}\). Let \(\delta=\min\{\varepsilon, 1\}\), and \(\mathsf{POS}=\mathsf{POS}_{k,\delta}\) (see Definition 1).
We drop the subscripts \(k,\delta\) from \(\mathsf{next}\) and \(\mathsf{prev}\). Recall that \(\mathsf{next}(i)\) is the smallest index in \(\mathsf{POS}\) strictly larger than \(i\), or \(k+1\) if there is no such index; \(\mathsf{prev}(i)\) is the largest index in \(\mathsf{POS}\) strictly smaller than \(i\); and \(\mathsf{prev}(1):=0\). Recall also that for a non-increasing vector \(v\in\mathbb{R}_{+}^\mathsf{POS}\), we define \(v^\mathsf{exp}\in\mathbb{R}_{+}^k\) as follows: \(v^\mathsf{exp}_i=v_i\) for \(i\in\mathsf{POS}\) and \(v^\mathsf{exp}_i=v_{\mathsf{prev}(i)}\) for \(i\in[k]\setminus\mathsf{POS}\).
We may assume that \(f\) is normalized so that \(f(1,0,\ldots,0)=1\). Then, \({ \ifmmode \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}^*} \else \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{f}\mathsf{load}^*}^{{\:\!\downarrow}}_1\leq f({ \ifmmode \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}^*} \else \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{f}\mathsf{load}^*})\leq B\). We can identify the following polynomial-size set \[\mathcal{T}:=\Bigl\{v\in\mathbb{R}^{\mathsf{POS}}:\;v\text{ is non-increasing}, \qquad v_\ell=\frac{B}{(1+\varepsilon)^r},\;r\in\mathbb{Z}_+,\;\;v_\ell\geq\frac{\kappa}{1+\varepsilon} \quad \forall\ell\in\mathsf{POS}\Bigr\},\] where \(\kappa=\varepsilonB/k\), which contains a non-increasing vector \(\vec{t}\in\mathbb{R}_{+}^\mathsf{POS}\) such that \({ \ifmmode \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}^*} \else \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{f}\mathsf{load}^*}^{{\:\!\downarrow}}_\ell\leq t_\ell\leq(1+\varepsilon){ \ifmmode \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}^*} \else \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{f}\mathsf{load}^*}^{{\:\!\downarrow}}_\ell+\kappa\) for all \(\ell\in\mathsf{POS}\). Note that \(|\mathcal{T}|=O\bigl((\frac{k}{\delta})^{1/\delta}\bigr)\). (Recall that \(\delta=\min\{\varepsilon,1\}\).) We formulate an LP-relaxation keeping in mind that we have such a vector \(\vec{t}\). Set \(t_{k+1}:=0\) for notational convenience.
We consider a configuration-style LP for \(\mathsf{NormBudgSepFL}\), where a configuration corresponds to the set of clients assigned to an open facility. We think of a solution as also assigning each open facility \(i\) to an index \(\ell\in\mathsf{POS}\), to denote that its total load lies in \((t_{\mathsf{next}(\ell)},t_\ell]\), and use \(y_{i,\ell}\) variables to encode this. Note that \({ \ifmmode \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}^*} \else \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{f}\mathsf{load}^*}\) satisfies that \(\bigl|\{i:{ \ifmmode \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}^*} \else \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{f}\mathsf{load}^*}_i>t_\ell\}\bigr|\leq \ell-1\) for all \(\ell\in\mathsf{POS}\). Given the semantics of the \(y_{i,\ell}\) variables, the number of facilities with load larger than \(t_\ell\) is \(\sum_i\sum_{\ell'\in\mathsf{POS}:\ell'\leq\mathsf{prev}(\ell)}y_{i,\ell'}\), and constraints 6 below enforce that this is at most \(\ell-1\), for every \(\ell\in\mathsf{POS}\). Note that this constraint is vacuous for \(\ell=1\).
In our rounding algorithm, it will be convenient to essentially work with only large indices in \(\mathsf{POS}\). To achieve this, we guess the values of the \(y_{i,\ell}\) variables for small \(\ell\) indices. Let \(\ell_0\) be the smallest index in \(\mathsf{POS}\) that is at least \(\frac{12}{\delta^2}\cdot\ln\frac{15}{\delta^3}\). Clearly, \(\ell_0=O\bigl(\frac{1}{\delta^2}\ln(\frac{1}{\delta})\bigr)\). We guess all the facilities that are assigned some index \(\ell\leq\ell_0\) under an optimal solution. This involves guessing some \(\ell_0\) facilities and the indices in \(\mathsf{POS}\cap[\ell_0]\) assigned to these facilities, which overall takes \(O\bigl(|\mathcal{F}|^{\ell_0}\bigr)\) time. (Note that if \(\ell_0\geq|\mathcal{F}|\), then we are guessing all the open facilities and the \(\mathsf{POS}\)-index assignments of these open facilities.) Let \(I\subseteq\mathcal{F}\times(\mathsf{POS}\cap[\ell_0])\) denote these guessed facilities and their \(\mathsf{POS}\)-index assignments. Note that this fixes \(y_{i,\ell}\in\{0,1\}\) for every \(i\in\mathcal{F}\) and every \(\ell\in\mathsf{POS}\cap[\ell_0]\), as specified by constraints 8 below.
For \(i\in\mathcal{F}\) and \(t\in\mathbb{R}_{+}\), let \(\mathcal{S}_{i,t}:=\{S\in\mathcal{S}_i: \sum_{j\in S}c_{ij}\leq t\}\). (Note that \((\mathcal{C},\mathcal{S}_{i,t})\) is also an independence system.) We use configuration variables \(x_{i,\ell,S}\) for all \(i\in\mathcal{F}\), \(\ell\in\mathsf{POS}\), and \(S\in\mathcal{S}_{i,t_\ell}\) to denote that \(S\) is the set of clients assigned to the open facility \(i\), and \(i\) is assigned to index \(\ell\). This yields the following LP. (Recall that \(i\) indexes facilities in \(\mathcal{F}\), and \(j\) indexes clients in \(\mathcal{C}\).)
\[\begin{align} {3} \max & \quad & \sum_i\sum_{\ell\in\mathsf{POS}}\sum_{S\in\mathcal{S}_{i,t_\ell}}\sum_{j\in S}\mathsf{rwd}_{ij}&x_{i,\ell,S} \text{-}\mathsf{LP}} \tag{2} \\ \text{s.t.} & \quad & \sum_{S\in\mathcal{S}_{i,t_\ell}} x_{i,\ell,S} & \leq y_{i,\ell} \qquad && \forall i,\,\forall\ell\in\mathsf{POS}\tag{3} \\ && \sum_i\sum_{\ell\in\mathsf{POS}}\sum_{S\in\mathcal{S}_{i,t_\ell}:j\in S}x_{i,\ell,S} & \leq 1 \qquad && \forall j \tag{4} \\ && \sum_{\ell\in\mathsf{POS}} y_{i,\ell} & \leq 1 \qquad && \forall i \tag{5} \\ && \sum_i\sum_{\ell'\in\mathsf{POS}: \ell'\leq\mathsf{prev}(\ell)}y_{i,\ell} & \leq \ell-1 \qquad && \forall \ell\in\mathsf{POS}\tag{6} \\ && \sum_i\sum_{\ell\in\mathsf{POS}} y_{i,\ell} & \leq k \tag{7} \\ && x,y \geq 0, \qquad y_{i,\ell} & =\begin{cases}1 & \text{if (i,\ell)\in I} \\ 0 & \text{otherwise}\end{cases} \qquad && \forall i,\ell\in\mathcal{F}\times(\mathsf{POS}\cap[\ell_0]) \tag{8} \end{align}\] Constraints 3 encode that a configuration can be chosen for an \((i,\ell)\) pair only if \(i\) is assigned to index \(\ell\), and constraints 4 ensure that a a client is assigned at most once. Constraints 5 encode that every facility is assigned to at most one index, and constraints 7 enforce that at most \(k\) facilities are opened.
Let \(\mathsf{LP}^*_{{\mathsf{NBSFL}\text{-}\mathsf{LP}}}\) denote the optimal value of 2 . Lemma 6 shows there is a suitable vector \(\vec{t}\in\mathcal{T}\) and suitable set \(I\) such that \(\mathsf{LP}^*_{{\mathsf{NBSFL}\text{-}\mathsf{LP}}}\) is an upper bound on \(\mathit{OPT}\) and \(f(t^{\mathsf{exp}})\) is close to \(B\), and Theorem 15 shows that 2 can be approximately solved.
Lemma 6. There exists a vector \(\vec{t}\in\mathcal{T}\) and a choice of \(I\) such that \(\mathsf{LP}^*_{{\mathsf{NBSFL}\text{-}\mathsf{LP}}}\geq\mathit{OPT}\) and \(f(t^\mathsf{exp})\leq (1+4\varepsilon)B\).
Theorem 15. Let \(\mathcal{A}\) be a \((\rho,\gamma)\)-approximation algorithm for budgeted\(\mathsf{1FRP}\). One can efficiently compute \((\overline{x},\overline{y})\) that is a feasible solution to \(\mathsf{NBSFL}\text{-}\mathsf{LP}\)’, which is 2 where we replace \(\mathcal{S}_{i,t_\ell}\) by \(\mathcal{S}_{i,\gammat_\ell}\) everywhere, and such that \((\overline{x},\overline{y})\) has objective value at least \(\mathsf{LP}^*_{{\mathsf{NBSFL}\text{-}\mathsf{LP}}}/\rho\). More precisely, we have:
\(\overline{x}_{i,\ell,S}>0\implies S\in\mathcal{S}_{i,\gammat_\ell}\) for all \(i\), all \(\ell\in\mathsf{POS}\);
\(\sum_{S\in\mathcal{S}_{i,\gammat_\ell}} \overline{x}_{i,\ell,S} \leq \overline{y}_{i,\ell}\) for all \(i,\,\ell\in\mathsf{POS}\);
\(\sum_i\sum_{\ell\in\mathsf{POS}}\sum_{S\in\mathcal{S}_{i,\gammat_\ell}:j\in S}\overline{x}_{i,\ell,S} \leq 1\) for all \(j\);
\(\sum_i\sum_{\ell\in\mathsf{POS}}\sum_{S\in\mathcal{S}_{i,\gammat_\ell}}\sum_{j\in S}\mathsf{rwd}_{ij}\overline{x}_{i,\ell,S}\geq\mathsf{LP}^*_{{\mathsf{NBSFL}\text{-}\mathsf{LP}}}/\rho\).
The proof of Lemma 6 is fairly routine. Theorem 15 follows from an application of the ellipsoid method, using the algorithm for budgeted\(\mathsf{1FRP}\) as an approximate separation oracle for the dual, an approach that has been used in other settings. We defer these proofs to the end of this section, to avoid detracting the reader.
In the sequel, we will assume that we have a vector \(\vec{t}\in\mathcal{T}\) and subset \(I\) for which Theorem 15 returns objective value at least \(\mathit{OPT}/\rho\), and such that \(f(t^{\mathsf{exp}})\leq (1+4\varepsilon)B\). This is justified because one can simply consider the vector \(\vec{t}\in\mathcal{T}\) satisfying \(f(t^{\mathsf{exp}})\leq(1+4\varepsilon)B\) and subset \(I\) for which the solution returned by Theorem 15 has maximum objective value.
Let \((\overline{x},\overline{y})\) be the solution returned by Theorem 15 (for the above choice of \(\vec{t}\) and \(I\)) using the \((\rho,\gamma)\)-approximation algorithm \(\mathcal{A}\). Let \(\mathsf{LPval}=\sum_i\sum_{\ell\in\mathsf{POS}}\sum_{S\in\mathcal{S}_{i,\gammat_\ell}}\sum_{j\in S}\mathsf{rwd}_{ij}\overline{x}_{i,\ell,S}\) be its objective value. We may assume that \(\sum_{S\in\mathcal{S}_{i,\gammat_\ell}}\overline{x}_{i,\ell,S}=\overline{y}_{i,\ell}\) for all \((i,\ell)\in\mathcal{F}\times\mathsf{POS}\), since we can always set \(\overline{x}_{i,\ell,\emptyset}\) appropriately to achieve this.
We use randomized rounding, in two independent stages. Independently, for each \((i,\ell)\), we choose exactly one set \(\widetilde{S}_{i,\ell}\in\mathcal{S}_{i,\gammat_\ell}\) by picking set \(S\) with probability \(\frac{\overline{x}_{i,\ell,S}}{\overline{y}_{i,\ell}}\). Next, for every facility \(i\) independently, we assign \(i\) to at most one index \(\ell\in\mathsf{POS}\) by picking index \(\ell\) with probability \(\overline{y}_{i,\ell}\). Let \(T\) be the (random) set of \((i,\ell)\) pairs so chosen. Let \(F=\{i\in\mathcal{F}: (i,\ell)\in T\text{ for some }\ell\in\mathsf{POS}\}\). (Note that for \(i\in F\) there is exactly one index \(\ell\) such that \((i,\ell)\in T\), and \(|T|=|F|\).) For \(i\in F\), we define \(\widetilde{S}_i=\widetilde{S}_{i,\ell}\), where \(\ell\) is the (unique) index such that \((i,\ell)\in T\).
Let \(\mathcal{G}\) be the good event that \(|T|\leq(1+\delta)k\), and for every \(\ell\in\mathsf{POS}\), we have \(\bigl|\{(i,\ell')\in T: \ell'\leq\mathsf{prev}(\ell)\}\bigr|\leq (1+\delta)(\ell-1)\). If \(\mathcal{G}\) does not occur, we return the empty solution where we do not open any facilities and do not assign any clients. Otherwise, for each client \(j\), we consider the facilities in \(F\) in non-increasing order of \(\mathsf{rwd}_{ij}\), and assign \(j\) to the first facility \(i\in F\) for which \(j\in\widetilde{S}_i\). Call this the client pre-assignment. We compute the reward of each facility in \(F\), which is the total reward of the clients pre-assigned to it, and open the \(k\) largest-reward facilities from \(F\). We retain the client pre-assignments to the opened facilities; the other clients are not assigned.
To keep notation simple, for every \(i,j\), define \(\overline{x}_{i,\ell,j}=\sum_{S\in\mathcal{S}_{i,\gammat_\ell}:j\in S}\overline{x}_{i,\ell,S}\) for all \(\ell\in\mathsf{POS}\), and \(\overline{x}_{ij}=\sum_{\ell\in\mathsf{POS}}\overline{x}_{i,\ell,j}\). So we have \(\sum_i\overline{x}_{ij}\leq 1\). Also, let \(\mathsf{LPval}_j:=\sum_i\mathsf{rwd}_{ij}\overline{x}_{ij}\) for a client \(j\). So we can write the objective value \(\mathsf{LPval}\) of \((\overline{x},\overline{y})\) as \(\sum_{i,j}\mathsf{rwd}_{ij}\overline{x}_{ij}=\sum_j\mathsf{LPval}_j\).
For \(\ell\in\mathsf{POS}':=\mathsf{POS}\cup\{k+1\}\), let \(\mathcal{B}_\ell\) be the bad event that \(\bigl|\{(i,\ell')\in T: \ell'\leq\mathsf{prev}(\ell)\}\bigr|>(1+\delta)(\ell-1)\). Note that \(\mathcal{B}_{k+1}\) is the event that \(|T|>(1+\delta)k\). Let \(\mathcal{B}=\mathcal{G}^c\), and note that \(\mathcal{B}=\bigvee_{\ell\in\mathsf{POS}'}\mathcal{B}_\ell\). Observe that \(\bigl|\{(i,\ell')\in T: \ell'\leq\mathsf{prev}(\ell)\}\bigr|\) is the sum of independent (but not identical) Bernoulli random variables, and we only need to consider indices \(\ell\in\mathsf{POS}\) with \(\ell>\ell_0\). Therefore, Chernoff bounds imply that \(\Pr[\mathcal{B}_\ell]=e^{-O(\ell)}\), and we argue that this holds even when we condition on some of the random choices leading to \(T\). So using the union bound, one can argue that \(\mathcal{B}\) happens with very low probability, under the same conditioning (see Lemma 7). Given this, we can argue that the expected reward obtained from each client \(j\) is \(\Omega(\mathsf{LPval}_j)\) (Lemma 9), and so the overall expected reward from the client pre-assignment is \(\Omega(\mathsf{LPval})=\Omega(\mathit{OPT}/\rho)\bigr)\). The final step where we open a subset of \(F\) and drop some clients can cause the total reward to decrease by at most a \(\frac{1}{1+\delta}\)-factor, since \(|F|\leq(1+\delta)k\) and we open the \(k\) largest-reward facilities in \(F\). Also, due to the choice of the vector \(\vec{t}\) and part [configval] of Theorem 15, one can argue that the facility-load vector of our solution has norm at most \(\bigl(1+O(\varepsilon)\bigr)\gamma\cdot B\) (Lemma 10).
Lemma 7. Consider any \((i',\ell')\) pair with \(\overline{y}_{i',\ell'}>0\). We have \(\Pr[\mathcal{B}\,|\,(i',\ell')\in T]\leq\delta\).
Proof. Let \(\Omega\) denote the event \((i',\ell')\in T\). Let \(Y_{i,\ell}\) be an indicator random variable that is \(1\) if \((i,\ell)\in T\), and \(0\) otherwise. Note that for \(\ell\leq\ell_0\), \(Y_{i,\ell}\) is actually a deterministic quantity, but we can still treat it as a random variable. By the union bound, we have \(\Pr[\mathcal{B}\,|\,\Omega]\leq\sum_{\ell\in\mathsf{POS}'}\Pr[\mathcal{B}_\ell\,|\,\Omega]\). Clearly, \(\Pr[\mathcal{B}_\ell]=0\) for all \(\ell\in\mathsf{POS}'\), \(\ell\leq\ell_0\), and so \(\Pr[\mathcal{B}_\ell\,|\,\Omega]=0\) for all such indices \(\ell\).
Consider \(\ell\in\mathsf{POS}'\), \(\ell>\ell_0\). Recall that \(\ell_0\geq\frac{12}{\delta^2}\cdot\ln\frac{15}{\delta^3}\). Define \(Z_i=\sum_{\ell''\in\mathsf{POS}:\ell''\leq\mathsf{prev}(\ell)}Y_{i,\ell''}\). Note that the \(Z_i\) variables are independent. We have \[\begin{align} \Pr[\mathcal{B}_\ell\,|\,\Omega]& =\frac{\Pr[\{Z(\mathcal{F})>(1+\delta)(\ell-1)\}\wedge\Omega]}{\Pr[\Omega]} \leq\frac{\Pr[\{Z(\mathcal{F}-\{i'\})\geq(1+\delta/2)\ell\}\wedge\Omega]}{\Pr[\Omega]} \\ & =\frac{\Pr[Z(\mathcal{F}-\{i'\})\geq\ell-1]\cdot\Pr[\Omega]}{\Pr[\Omega]}=\Pr[Z(\mathcal{F}-\{i'\})\geq\ell-1]. \end{align}\] The first inequality follows because \(Z_{i'}\leq 1\) and \((1+\delta)(\ell-1)-1\geq (1+\delta)\ell-3\geq(1+\delta/2)\ell\) since \(\ell\geq\ell_0\geq\frac{6}{\delta}\). The subsequent equality follows because \(Z(\mathcal{F}-\{i'\})\) depends only on the random choices made for the facilities in \(\mathcal{F}-\{i'\}\). We have \({\textstyle{\boldsymbol{\mathop{\mathrm{E}}}}_{{}}}\bigl[Z(\mathcal{F}-\{i'\})\bigr]\leq{\textstyle{\boldsymbol{\mathop{\mathrm{E}}}}_{{}}}\bigl[Z(\mathcal{F})\bigr]=\sum_{i\in\mathcal{F}}\sum_{\ell''\in\mathsf{POS}:\ell''\leq\mathsf{prev}(\ell)}\overline{y}_{i,\ell''}\leq\ell-1\). So using Chernoff bounds,15 we obtain that \(\Pr[Z(\mathcal{F}-\{i'\})\geq(1+\delta/2)\ell]\leq e^{-\frac{1}{3}\cdot(\delta/2)^2\cdot\ell}\).
Note that \(e^{-{\delta^2}/{12}}\leq 1-\bigl(1-e^{-1/12}\bigr)\delta^2\leq 1-0.07\delta^2\), since the function \(e^{-x/12}\) is convex and decreasing, and so \(e^{-x/12}\leq 1-\bigl(1-e^{-1/12}\bigr)x\) for all \(x\in[0,1]\). The above bound on \(\Pr[\mathcal{B}_\ell\,|\,\Omega]\) gives \[\Pr[\mathcal{B}\,|\,\Omega]\leq\sum_{\ell\in\mathsf{POS}':\ell>\ell_0}\Pr[\mathcal{B}_\ell\,|\,\Omega] \leq\sum_{\ell>\ell_0}e^{-\frac{\delta^2}{12}\cdot\ell} \leq\frac{e^{-\frac{\delta^2}{12}\cdot\ell_0}}{1-e^{-\delta^2/12}} \leq\frac{e^{-\ln(15/\delta^3)}}{0.07\delta^2}\leq\frac{\delta}{1.05}. \qedhere\] ◻
Lemma 8. Consider any facility \(i\) and client \(j\). Let \(A\subseteq\mathcal{F}\) be the set of facilities that come before \(i\) in \(j\)’s ordering of facilities (in non-increasing order of \(\mathsf{rwd}_{i'j}\)’s). We have \[\Pr[\text{j is pre-assigned to facility i}] \geq\overline{x}_{ij}\cdot\biggl(\prod_{i'\in A}(1-\overline{x}_{i'j})-\delta\biggr)\]
Proof. For any \(i'\in\mathcal{F}\) and \(\ell\in\mathsf{POS}\), let \(X_{i',\ell,j}\) be the random variable indicating if \(j\in\widetilde{S}_{i',\ell}\), and let \(X_{i'j}=\sum_{\ell\in\mathsf{POS}}X_{i',\ell,j}\). Let \(\widetilde{X}_{ij}\) be the random variable indicating if \(j\) is assigned to facility \(i\) in the solution returned. We have \(\Pr[\widetilde{X}_{ij}=1]=\sum_{\ell\in\mathsf{POS}}\Pr[(i,\ell)\in T]\cdot\Pr[\widetilde{X}_{ij}=1\,|\,(i,\ell)\in T]= \sum_{\ell\in\mathsf{POS}}\overline{y}_{i,\ell}\cdot\Pr[\widetilde{X}_{ij}=1\,|\,(i,\ell)\in T]\). We proceed to lower bound \(\Pr[\widetilde{X}_{ij}=1\,|\,(i,\ell)\in T]\) for \((i,\ell)\) such that \(\overline{y}_{i,\ell}>0\).
Client \(j\) is pre-assigned to \(i\), conditioned on \((i,\ell)\in T\), precisely if the following three things happen (conditioned on \((i,\ell)\in T\)).
We have \(X_{i,\ell,j}=1\);
The good event \(\mathcal{G}\) occurs;
For every \(i'\in A\) and every \(\ell'\in\mathsf{POS}\), we have \(X_{i',\ell',j}=0\) or \((i',\ell')\notin T\).
Let \(\Gamma_{i'}\) denote the event that for every \(\ell'\in\mathsf{POS}\), we have \(X_{i',\ell',j}=0\) or \((i',\ell')\notin T\). Then \(\Pr[\Gamma_{i'}]=1-\sum_{\ell'\in\mathsf{POS}}\overline{y}_{i',\ell'}\cdot\frac{\overline{x}_{i',\ell',j}}{\overline{y}_{i',\ell'}}=1-\overline{x}_{i'j}\). Also, note that all the \(\Gamma_{i'}\) events are independent, and they are independent of the event \(\{(i,\ell)\in T\}\), since the choices made for different facilities are completely independent. Recall that \(\mathcal{B}=\mathcal{G}^c\) and \(\mathcal{B}=\bigvee_{\ell'\in\mathsf{POS}'}\mathcal{B}_{\ell'}\). So we have \[\begin{align} {1} \Pr[\widetilde{X}_{ij}=1\,&|\,(i,\ell)\in T] = \Pr\Bigl[\{X_{i,\ell,j}=1\}\wedge(\bigwedge_{i'\in A}\Gamma_{i'})\wedge\mathcal{G}\,|\,(i,\ell)\in T\Bigr] \notag \\ & = \Pr\Bigl[\{X_{i,\ell,j}=1\}\wedge(\bigwedge_{i'\in A}\Gamma_{i'})\,|\,(i,\ell)\in T\Bigr]- \Pr\Bigl[\{X_{i,\ell,j}=1\}\wedge(\bigwedge_{i'\in A}\Gamma_{i'})\wedge\mathcal{B}\,|\,(i,\ell)\in T\Bigr] \notag \\ & \geq \Pr\bigl[X_{i,\ell,j}=1\,|\,(i,\ell)\in T\bigr]\cdot\prod_{i'\in A}\Pr[\Gamma_{i'}]- \Pr\bigl[\{X_{i,\ell,j}=1\}\wedge\mathcal{B}\,|\,(i,\ell)\in T\bigr] \notag \\ & = \Pr[X_{i,\ell,j}=1]\cdot \biggl(\prod_{i'\in A}\Pr[\Gamma_{i'}]-\Pr\bigl[\mathcal{B}\,|\,X_{i,\ell,j}=1,\,(i,\ell)\in T\bigr]\biggr). \label{clfacineq1} \end{align}\tag{9}\] The last equality is because \(X_{i,\ell,j}\) depends only on the set \(\widetilde{S}_{i,\ell}\) chosen for \((i,\ell)\). Note that \(\mathcal{B}\) only depends on the set \(T\), and not on the random choice of the client-sets chosen for different \((i',\ell')\) pairs. So we have \(\Pr\bigl[\mathcal{B}\,|\,X_{i,\ell,j}=1,\,(i,\ell)\in T\bigr]=\Pr\bigl[\mathcal{B}\,|\,(i,\ell)\in T\bigr]\leq\delta\) by Lemma 7. Also, \(\Pr[X_{i,\ell,j}=1]=\frac{\overline{x}_{i,\ell,j}}{\overline{y}_{i,\ell}}\) So using 9 , we have \[\Pr[\widetilde{X}_{ij}=1\,|\,(i,\ell)\in T]\geq\frac{\overline{x}_{i,\ell,j}}{\overline{y}_{i,\ell}}\cdot \biggl(\prod_{i'\in A}(1-\overline{x}_{i'j})-\delta\biggr).\] This yields that \(\Pr[\widetilde{X}_{ij}=1]\geq\overline{x}_{ij}\cdot\bigl(\prod_{i'\in A}(1-\overline{x}_{i'j})-\delta\bigr)\). ◻
Lemma 9. The expected reward obtained in the pre-assignment from any client \(j\) is at least \(\bigl(1-e^{-1}-\delta\bigr)\mathsf{LPval}_j\).
Proof. We will utilize the following well-known claim.
Claim 16 (Claim 4.3 in [26]). Let \(a_1\geq a_2\geq\ldots\geq a_q\geq a_{q+1}:=0\). Let \(z\in[0,1]^q\), and \(t\geq\sum_{i=1}^qz_i\). We have \(z_1a_1+(1-z_1)z_2a_2+\ldots+(1-z_1)(1-z_2)\cdots(1-z_{q-1})z_qa_q\geq (1-e^{-t})\cdot\frac{\sum_{i=1}^qa_iz_i}{t}\).
Fix a client \(j\). Let \(i_1,i_2,\ldots,i_{|\mathcal{F}|}\) be \(j\)’s ordering of facilities in non-increasing order of \(\mathsf{rwd}_{ij}\) values. Using Lemma 8, we obtain that \[\begin{align} {\textstyle{\boldsymbol{\mathop{\mathrm{E}}}}_{{}}}\bigl[\text{expected reward from j}\bigr] & \geq \sum_{q=1}^{|\mathcal{F}|}\mathsf{rwd}_{i_q j}\cdot\overline{x}_{i_q j}\cdot \biggl(\prod_{r=1}^{q-1}(1-\overline{x}_{i_r j})-\delta\biggr) \\ & \geq \bigl(1-e^{-1}\bigr)\cdot\sum_{q=1}^{|F|}\mathsf{rwd}_{i_q j}\cdot\overline{x}_{i_q j}- \delta\cdot\sum_{q=1}^{|F|}\mathsf{rwd}_{i_q j}\cdot\overline{x}_{i_q j} \geq\bigl(1-e^{-1}-\delta\bigr)\mathsf{LPval}_j \end{align}\] where the first inequality follows from Claim 16, since \(\sum_{i\in\mathcal{F}}\overline{x}_{ij}\leq 1\). ◻
Lemma 10. We have \(f(\text{facility-load vector of solution returned})\leq\bigl(1+O(\varepsilon)\bigr)\cdot\gammaB\) with probability \(1\).
Proof. Let \({ \ifmmode \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}} \else \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{f}\mathsf{load}}\) be the facility-load vector of the solution returned. If \(\mathcal{G}\) does not occur, then \({ \ifmmode \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}} \else \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{f}\mathsf{load}}=\vec{0}\), so suppose otherwise. Then, by design, we have \(\bigl|\{(i,\ell')\in T: \ell'\leq\mathsf{prev}(\ell)\}\bigr|\leq(1+\delta)(\ell-1)\) for every \(\ell\in\mathsf{POS}'=\mathsf{POS}\cup\{k+1\}\), and if \((i,\ell)\in T\), then the load of facility \(i\) is at most \(\gammat_\ell\). Thus, \({ \ifmmode \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}} \else \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{f}\mathsf{load}}\) has the property that there are at most \((1+\delta)(\ell-1)\) coordinates of value larger than \(\gammat_\ell\), for every \(\ell\in\mathsf{POS}\). By Lemma 1 (b), we therefore obtain that \(f({ \ifmmode \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}} \else \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{f}\mathsf{load}})\leq (1+3\delta)f(\gammat^{\mathsf{exp}})\). Since \(f(t^{\mathsf{exp}})\leq(1+4\varepsilon)B\) and \(\delta=\min\{\varepsilon, 1\}\), this yields \[f({ \ifmmode \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}} \else \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{f}\mathsf{load}})\leq\gamma(1+3\delta)f(t^{\mathsf{exp}}) \leq\gamma(1+3\delta)(1+4\varepsilon)B\leq (1+19\varepsilon)\cdot\gammaB. \qedhere\] ◻
Proof of Theorem 13. Recall that the objective value of the LP solution \((\overline{x},\overline{y})\) is at least \(\mathit{OPT}/\rho\). So Lemma 9 shows that the expected reward obtained from the pre-assignment at least \(\bigl(1-e^{-1}-\delta\bigr)\frac{\mathit{OPT}}{\rho}\). Since \(|F|\leq k(1+\delta)\) when the good event \(\mathcal{G}\) occurs, and we return the \(k\) facilities in \(F\) obtaining the largest reward under the pre-assignment, it follows that the expected reward of the final solution is always at least \(\frac{1}{1+\delta}\) times the expected reward of the pre-assignment. (This holds even when \(\mathcal{G}\) does not occur, as then no clients are pre-assigned.) So the expected reward of the final solution is at least \(\frac{1}{1+\delta}\cdot\bigl(1-e^{-1}-\delta\bigr)\cdot\frac{\mathit{OPT}}{\rho}\). Lemma 10 bounds the norm of the facility-load vector returned. ◻
Proof of Lemma 6. Suppose \(t_\ell\geq{ \ifmmode \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}^*} \else \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{f}\mathsf{load}^*}^{{\:\!\downarrow}}_\ell\) for all \(\ell\in\mathsf{POS}\); equivalently \(t^{\mathsf{exp}}\geq{ \ifmmode \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}^*} \else \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{f}\mathsf{load}^*}^{{\:\!\downarrow}}\). Consider the optimal solution \((F^*,\,\sigma^*:C^*\mapsto F^*)\). For every \((i,\ell)\) pair, we set \(y_{i,\ell}=1\) if \(i\in F^*\) and \({ \ifmmode \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}^*} \else \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{f}\mathsf{load}^*}_i\in(t_{\mathsf{next}(\ell)},t_\ell]\), and \(0\) otherwise. Also, let \(I\) be the \((i,\ell)\) pairs where \(y_{i,\ell}=1\) and \(\ell\leq\ell_0\). These \(y\)-values satisfy 5 , 7 , and 8 , and since \(t^{\mathsf{exp}}\geq{ \ifmmode \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}^*} \else \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{f}\mathsf{load}^*}^{{\:\!\downarrow}}\), we also satisfy 6 . For every \((i,\ell)\) for which \(y_{i,\ell}=1\), we set \(x_{i,\ell,S}=1\) if \(S\) is the set of clients assigned to \(i\); all other \(x\)-variables are set to \(0\). It is easy to see that by construction, this satisfies 3 , 4 . So \(\mathsf{LP}^*_{{\mathsf{NBSFL}\text{-}\mathsf{LP}}}\) is at least the objective value of this feasible solution, which is \(\mathit{OPT}\).
There exists \(\vec{t}\in\mathcal{T}\) such that \({ \ifmmode \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}^*} \else \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{f}\mathsf{load}^*}^{{\:\!\downarrow}}_\ell\leq t_\ell\leq(1+\varepsilon){ \ifmmode \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}^*} \else \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{f}\mathsf{load}^*}^{{\:\!\downarrow}}_\ell+\kappa\). For this vector \(\vec{t}\), we have \(\mathsf{LP}^*_{{\mathsf{NBSFL}\text{-}\mathsf{LP}}}\geq\mathit{OPT}\), as argued above. By Lemma 1 (a), we also have \(f(t^{\mathsf{exp}})\leq(1+\delta)(1+\varepsilon)f({ \ifmmode \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}^*} \else \settoheight{\xvec@height}{\mathsf{f}\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{f}\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{f}\mathsf{load}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{f}\mathsf{load}^*})+\varepsilonB\leq (1+4\varepsilon)B\), where we use the fact that \(\delta\leq\varepsilon\), \(\delta\leq 1\). ◻
Proof of Theorem 15. We argue that \(\mathcal{A}\) can be used to obtain a kind of approximate separation oracle for the dual, which, in conjunction with the ellipsoid method, yields the stated result. This idea has been used in other settings (see, e.g., [27], [28]). The dual (D) has a polynomial number of variables, exponentially many constraints corresponding to the \(x_{i,\ell,S}\) variables of the primal LP 2 , and a polynomial number of other constraints corresponding to the \(y_{i,\ell}\) variables. Let \(\mu_{i,\ell}\geq 0\), and \(\theta_j\) be the dual variables corresponding to constraints 3 and 4 respectively. The dual constraints corresponding to the \(x_{i,\ell,S}\) variables are: \[\mu_{i,\ell}+\sum_{j\in S}\theta_j\geq\sum_{j\in S}\mathsf{rwd}_{ij} \qquad \forall i\in\mathcal{F},\;\forall\ell\in\mathsf{POS},\;\forall S\in\mathcal{S}_{i,t_\ell}. \label{dlpconfig}\tag{10}\]
Defining \(v_{ij}=\max\{\mathsf{rwd}_{ij}-\theta_j,0\}\) for all \(j\in\mathcal{C}\), it is easy to see that constraints 10 are equivalent to \(\bigl(\max_{S\in\mathcal{S}_{i,t_\ell}}\sum_{j\in S}v_{ij}\bigr)\leq\mu_{i,\ell}\). So for any \(\mu,\theta\), we can use \(\mathcal{A}\) to determine if constraints 10 hold, or find \(i,\ell,A\in\mathcal{S}_{i,\gammat_\ell}\) such that \(\frac{\mu_{i,\ell}}{\rho}<\sum_{j\in A}\bigl(\mathsf{rwd}_{ij}-\theta_j\bigr)\). This is because, suppose we run \(\mathcal{A}\) with the input tuple \((i, t_\ell, \{v_{ij}\}_{j\in\mathcal{C}})\) and obtain a set \(A\in\mathcal{S}_{i,\gammat_\ell}\). If \(\sum_{j\in A}v_{ij}>\frac{\mu_{i,\ell}}{\rho}\), then we also have \(\sum_{j\in S}\bigl(\mathsf{rwd}_{ij}-\theta_j\bigr)>\frac{\mu_{i,\ell}}{\rho}\) for \(S=\{j\in A: v_{ij}\geq 0\}\) (which also lies in \(\mathcal{S}_{i,\gammat_\ell}\)). Otherwise, we know that \(\bigl(\max_{S\in\mathcal{S}_{i,t_\ell}}\sum_{j\in S}v_{ij}\bigr)\leq\mu_{i,\ell}\), i.e., constraints 10 hold for \(i,\ell\), and all \(S\in\mathcal{S}_{i,t_\ell}\).
We utilize this as follows. Let \(\phi\) denote the remaining dual variables, and \(\text{(*)}\) denote the dual constraints (including nonnegativity) constraints other than 10 . The objective function of (D) is of the form \(\sum_j\theta_j+h^T\phi\), where \(h\) is some fixed vector. Consider the dual LP with the following modified version of 10 : \[\frac{\mu_{i,\ell}}{\rho}+\sum_{j\in S}\theta_j\geq\sum_{j\in S}\mathsf{rwd}_{ij} \qquad \forall i\in\mathcal{F},\,\forall\ell\in\mathsf{POS},\,\forall S\in\mathcal{S}_{i,\gammat_\ell}. '} \label{dlpcp}\tag{11}\] The effect of this in the primal LP is that we now have variables \(x_{i,\ell,S}\) for every \(i\), \(\ell\in\mathsf{POS}\), and \(S\in\mathcal{S}_{i,\gammat_\ell}\), and constraint 3 changes to \(\frac{1}{\rho}\cdot\sum_{S\in\mathcal{S}_{i,\gammat_\ell}}x_{i,\ell,S}\leq y_{i,\ell}\) for every \(i\), \(\ell\in\mathsf{POS}\). Let (\(\mathsf{NBSFL}\text{-}\mathsf{LP}\)’) denote this modified primal LP.
Let \(\mathcal{K}(\nu):=\bigl\{(\mu,\theta,\phi): \text{(*)},\;\eqref{dlpconfig},\;\sum_j\theta_j+h^T\phi\leq\nu\bigr\}\) denote the set of dual feasible solutions achieving objective value at most \(\nu\). Thus, the optimal value of the dual, and hence 2 , is the smallest \(\nu\) such that \(\mathcal{K}(\nu)\neq\emptyset\). Also, let \(\mathcal{K}'(\nu):=\bigl\{(\mu,\theta,\phi): \text{(*)},\;\eqref{dlpcp},\;\sum_j\theta_j+h^T\phi\leq\nu\bigr\}\). Given \(\nu\), \((\mu,\theta,\phi)\), by our earlier discussion, we can use \(\mathcal{A}\) to either show that \((\mu,\theta,\phi)\in\mathcal{K}(\nu)\), or find a hyperplane separating \((\mu,\theta,\phi)\) from \(\mathcal{K}'(\nu)\).
Thus, for a fixed \(\nu\), by running the ellipsoid method, in polynomial time, we either certify that \(\mathcal{K}'(\nu)=\emptyset\), or find a point \((\mu,\theta,\phi)\in\mathcal{K}(\nu)\).
Now we can combine this with binary search to find \(\nu^*\) that is an upper bound on \(\mathsf{LP}^*_{{\mathsf{NBSFL}\text{-}\mathsf{LP}}}\), and a near-feasible solution to (\(\mathsf{NBSFL}\text{-}\mathsf{LP}\)’) achieving this objective value; scaling this solution will yield \((\overline{x},\overline{y})\) satisfying the stated properties.
It is easy to find an upper bound \(\mathsf{ub}\) such that \(\mathcal{K}(\mathsf{ub})\neq\emptyset\). For a given \(\epsilon>0\), we use binary search in the range \([0,\mathsf{ub}]\) to find \(\nu^*\) such that the ellipsoid method when run for \(\nu^*\) (with the above separation oracle) returns a point in \(\mathcal{K}(\nu^*)\), and when run for \(\nu^*-\epsilon\) certifies that \(\mathcal{K}'(\nu^*-\epsilon)=\emptyset\). Since \(\mathcal{K}(\nu^*)\neq\emptyset\), we have that \(\mathsf{LP}^*_{{\mathsf{NBSFL}\text{-}\mathsf{LP}}}\leq\nu^*\), and \(\mathcal{K}'(\nu^*-\epsilon)=\emptyset\) implies that the optimal value of (\(\mathsf{NBSFL}\text{-}\mathsf{LP}\)‘) is at least \(\nu^*-\epsilon\). For \(\nu^*-\epsilon\), the inequalities returned by the separation oracle during the execution of the ellipsoid method together with the inequality \(\sum_{j}\theta_j+h^T\phi\leq\nu^*-\epsilon\) yield a polynomial-size certificate for the emptiness of \(\mathcal{K}'(\nu^*-\epsilon)\). By duality (or Farkas’ lemma), this implies that if we restrict (\(\mathsf{NBSFL}\text{-}\mathsf{LP}\)‘) to only use the (polynomially many) \(x_{i,\ell,S}\) variables corresponding to the violated inequalities of type eq. ¿eq:dlpcp? returned during the execution of the ellipsoid method, we obtain a polynomial-size feasible solution \((\widehat x,\overline{y})\) to (\(\mathsf{NBSFL}\text{-}\mathsf{LP}\)’) of value at least \(\nu^*-\epsilon\). If we take \(\epsilon\) to be inverse exponential in the input size, this also implies that \((\widehat x,\overline{y})\) has objective value at least \(\nu^*\geq\mathsf{LP}^*_{{\mathsf{NBSFL}\text{-}\mathsf{LP}}}\). Finally, setting \(\overline{x}=\widehat x/\rho\), we obtain that \((\overline{x},\overline{y})\) has the desired properties. ◻
We now consider norm-budgeted packing problems where the reward function, instead of being an additive (or modular) function (induced by the item-rewards) is a monotone, submodular function \(\mathsf{rwd}:2^n\mapsto\mathbb{R}_+\), with \(\mathsf{rwd}(T)\) denoting the reward obtained from a set \(T\subseteq[n]\) of items. So in a generic submodular norm-budgeted packing problem, the goal (as before) is to maximize \(\mathsf{rwd}(T)\) subject to \(T\) being an independent in a given independence system \(([n],\mathcal{S})\), and the norm budget constraint \(f\bigl( \ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})\bigr)\leq B\). We assume that \(\mathsf{rwd}\) is specified via a value oracle.
We obtain results for the submodular generalizations of some of the norm-budgeted packing problems considered in the paper. We develop \(O(1)\) approximation guarantees for the submodular norm-budgeted knapsack (\(\mathsf{SubmodNBKnap}\)) problem (Section 7.1), using a fundamentally different approach than that used for (regular) \(\mathsf{NormBudgKnap}\) in Section 3, and submodular norm-budgeted \(\mathsf{Max}\mathsf{GAP}\) (\(\mathsf{SubmodNBMaxGAP}\)) on identical and related machines (Section 7.2). The latter uses our result for \(\mathsf{SubmodNBKnap}\)(essentially) as a black-box, capitalizing on the observation that the reduction in Theorem 8 still works with submodular rewards.
Recall that in the submodular norm-budgeted knapsack (\(\mathsf{SubmodNBKnap}\)) problem, we have a monotone, submodular reward-function \(\mathsf{rwd}:2^n\mapsto\mathbb{R}_+\) and the goal is to maximize \(\mathsf{rwd}(T)\) subject to \(f\bigl( \ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})\bigr)\leq B\), where \(\ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})\) is the size-weighted characteristic vector of \(T\). We develop an \(O(1)\)-approximation algorithm for \(\mathsf{SubmodNBKnap}\). The approximation factor we obtain is in fact \(\bigl(1+O(\varepsilon)\bigr)(\beta+1)\), where \(\beta\) is the approximation factor for maximizing a submodular function subject to a cardinality constraint (Theorem 19 in Section 7.1.1). It is known that \(\beta=\frac{e}{e-1}\), so this yields a \(\bigl(\frac{2e-1}{e-1}+O(\varepsilon)\bigr)\)-approximation for \(\mathsf{SubmodNBKnap}\).
Before describing our algorithm, we first discuss why our earlier approach leading to a PTAS for \(\mathsf{NormBudgKnap}\)(Section 3) is not amenable to handling \(\mathsf{SubmodNBKnap}\). In the PTAS for \(\mathsf{NormBudgKnap}\), we set up reward buckets, comprising items having roughly the same reward, so that any subset containing a certain number of items from each reward bucket yields good total reward, and in order to satisfy the norm budget constraint, we greedily pick the smallest-size items from each reward bucket.
With a submodular reward function, we run into some immediate problems with this approach. It is not at all clear what a reward bucket should be in this setting, since \(\mathsf{rwd}(T)\) is not separable across items and the contribution of an item to \(\mathsf{rwd}(T)\) depends on the other items. Moreover, suppose that one could even identify some \(\{\mathsf{Bkt}_j\}\) item buckets, target rewards \(\{\widetilde{\mathsf{rwd}}_j\}\) to obtain from these buckets, and guarantee that there is some set of \(\widetilde{N}_j\) items in each \(\mathsf{Bkt}_j\) bucket such that: (i) these yield the desired \(\widetilde{\mathsf{rwd}}_j\) reward from the bucket, and (ii) the resulting item-set (comprising items picked from the various buckets) is a feasible solution. The question still remains: how do we pick the \(\widetilde{N}_j\) items from each \(\mathsf{Bkt}_j\) bucket. Greedily picking the \(\widetilde{N}_j\) smallest-size items will ensure feasibility, but this will not usually yield the desired target reward: obtaining a target reward by picking a certain number of items corresponds to a cardinality-constrained submodular-function maximization problem, and approximation algorithms for this problem usually use greedy approaches based on reward, as opposed to size.
The upshot is that dealing with \(\mathsf{SubmodNBKnap}\) requires us to fundamentally rethink our approach. Instead of reward buckets, we will now work by creating, loosely speaking, certain size buckets by grouping items based on their size (though items in a size bucket will not necessarily have similar sizes). In the reward-bucketing approach, any solution built from the reward buckets was guaranteed to have good reward and a greedy choice ensured feasibility. In contrast, we will now set things up so that any solution that picks at most a certain number of items from each size bucket is guaranteed to be feasible, and we will solve a suitable submodular-function maximization problem to obtain good reward.
We now delve into details. For ease of exposition, we describe here a \(\bigl(1+O(\varepsilon)\bigr)(2\beta+3)\)-approximation algorithm, which will convey all the main ideas, and discuss the improvement to \(\bigl(1+O(\varepsilon)\bigr)(\beta+1)\)-approximation in Section 7.1.1. Let \(\mathsf{POS}=\mathsf{POS}_{n,1}\) (see Definition 1), so \(\mathsf{POS}\) consists of all powers of \(2\) up to (and potentially including) \(n\). Since \(\mathsf{POS}\) will be fixed throughout, we drop \(n, \delta\) from \(\mathsf{next}\) and \(\mathsf{prev}\). Define \(\mathsf{next}(0):=1\) and \(\mathsf{prev}(0):=0\) for notational convenience. Let the items be ordered so that \(w_1\geqw_2\geq\ldots\geqw_n\). Recall that \(O^*\subseteq[n]\) denotes some fixed optimal solution, and \(\mathit{OPT}=\mathsf{rwd}(O^*)\) is the optimal value. Let \(O^*=\{o_1,o_2,\ldots,o_{n_{\mathsf{opt}}}\}\), where \(o_1<o_2<\ldots<o_{n_{\mathsf{opt}}}\). Let \(\ell^{\mathsf{last}}\) be the largest index in \(\mathsf{POS}\cap[n_{\mathsf{opt}}]\). Let \(I^*=\{o_\ell: \ell\in\mathsf{POS}\cap[n_{\mathsf{opt}}]\}\), which denotes the \(\ell\)-th-largest-size items in \(O^*\), where \(\ell\) ranges over \(\mathsf{POS}\cap[n_{\mathsf{opt}}]\). Define \(o_0:=0\) and \(o_{\mathsf{next}(\ell^{\mathsf{last}})}:=n\) for notational convenience.16
Let \(\mathsf{POS}':=\{0\}\cup(\mathsf{POS}\cap[\ell^{\mathsf{last}}])\). For \(\ell\in\mathsf{POS}'\), define \(\mathsf{SBkt}^*_\ell:=\{o_\ell+1,\ldots,o_{\mathsf{next}(\ell)}\}\); we think of \(\mathsf{SBkt}^*_\ell\) as a size bucket. We emphasize however that (in contrast with reward buckets): (i) items in a size bucket need not have similar size; and (ii) we cannot actually identify these size buckets, since we do not know \(O^*\). Observe that these size buckets partition \([n]\) (but it could be that \(\mathsf{SBkt}^*_{\ell^{\mathsf{last}}}=\emptyset\), if \(\ell^{\mathsf{last}}=n\)). Also, by construction, for all \(\ell\in\mathsf{POS}'\), \(\ell<\ell^{\mathsf{last}}\), we have that \(O^*\) contains exactly \(\mathsf{next}(\ell)-\ell\) items from \(\mathsf{SBkt}^*_\ell\): we have \(O^*\cap\mathsf{SBkt}^*_\ell=\{o_{\ell+1},o_{\ell+2},\ldots,o_{\mathsf{next}(\ell)}\}\). For the last size bucket, we have that \(|O^*\cap\mathsf{SBkt}^*_{\ell^{\mathsf{last}}}|\leq\mathsf{next}(\ell^{\mathsf{last}})-\ell^{\mathsf{last}}\) (and note that if \(n_{\mathsf{opt}}\in\mathsf{POS}\) then \(O^*\cap\mathsf{SBkt}^*_{\ell^{\mathsf{last}}}=\emptyset\)).
Lemma 11 states one of our main insights, namely that any set \(A\subseteq[n]\) containing at most a certain number of items from each size bucket satisfies \(f\bigl( \ifmmode \settoheight{\xvec@height}{{{w}}({A})} \settodepth{\xvec@depth}{{{w}}({A})} \settowidth{\xvec@width}{{{w}}({A})} \else \settoheight{\xvec@height}{{{w}}({A})} \settodepth{\xvec@depth}{{{w}}({A})} \settowidth{\xvec@width}{{{w}}({A})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({A})\bigr)\leq B\).
Lemma 11. Let \(A\subseteq[n]\).
If \(\bigl|A\cap\mathsf{SBkt}^*_\ell\bigr|\leq\ell-\mathsf{prev}(\ell)\) for all \(\ell\in\mathsf{POS}'\), then \(f\bigl( \ifmmode \settoheight{\xvec@height}{{{w}}({A})} \settodepth{\xvec@depth}{{{w}}({A})} \settowidth{\xvec@width}{{{w}}({A})} \else \settoheight{\xvec@height}{{{w}}({A})} \settodepth{\xvec@depth}{{{w}}({A})} \settowidth{\xvec@width}{{{w}}({A})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({A})\bigr)\leq B\).
Let \(I=\{i_\ell: \ell\in\mathsf{POS}\cap[k]\}\) be an index-set, where \(k\leq\ell^{\mathsf{last}}\) and \(i_\ell\geq o_\ell\) for all \(\ell\in\mathsf{POS}\cap[k]\). Define \(i_0:=0\) and \(i_{\mathsf{next}(k)}:=n\). Suppose that \(\bigl|A\cap\{i_\ell+1,\ldots,i_{\mathsf{next}(\ell)}\}\bigr|\leq\ell-\mathsf{prev}(\ell)\) for all \(\ell\in\mathsf{POS}'\), \(\ell\leq k\). Then, \(f\bigl( \ifmmode \settoheight{\xvec@height}{{{w}}({A})} \settodepth{\xvec@depth}{{{w}}({A})} \settowidth{\xvec@width}{{{w}}({A})} \else \settoheight{\xvec@height}{{{w}}({A})} \settodepth{\xvec@depth}{{{w}}({A})} \settowidth{\xvec@width}{{{w}}({A})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({A})\bigr)\leq B\).
Proof. We will define a vector \(v\in\mathbb{R}^n\), and argue that \(f(v)\leq B\) and \(\ifmmode \settoheight{\xvec@height}{{{w}}({A})} \settodepth{\xvec@depth}{{{w}}({A})} \settowidth{\xvec@width}{{{w}}({A})} \else \settoheight{\xvec@height}{{{w}}({A})} \settodepth{\xvec@depth}{{{w}}({A})} \settowidth{\xvec@width}{{{w}}({A})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({A})^{{\:\!\downarrow}}\leq v\). Let \(v\in\mathbb{R}^n\) be the following vector: \[\text{ for all }\ell\in\mathsf{POS}\cap[\ell^{\mathsf{last}}],\,\text{ and all }j\in\{\mathsf{prev}(\ell)+1,\ldots,\ell\}, \;\;\text{set }v_j=w_{o_\ell}; \quad \text{v_j=0 for all other j}.\] We argue that \(v\leq \ifmmode \settoheight{\xvec@height}{{{w}}({O^*})} \settodepth{\xvec@depth}{{{w}}({O^*})} \settowidth{\xvec@width}{{{w}}({O^*})} \else \settoheight{\xvec@height}{{{w}}({O^*})} \settodepth{\xvec@depth}{{{w}}({O^*})} \settowidth{\xvec@width}{{{w}}({O^*})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({O^*})^{{\:\!\downarrow}}\), which implies that \(f(v)\leq f\bigl( \ifmmode \settoheight{\xvec@height}{{{w}}({O^*})} \settodepth{\xvec@depth}{{{w}}({O^*})} \settowidth{\xvec@width}{{{w}}({O^*})} \else \settoheight{\xvec@height}{{{w}}({O^*})} \settodepth{\xvec@depth}{{{w}}({O^*})} \settowidth{\xvec@width}{{{w}}({O^*})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({O^*})\bigr)\leq B\). Let \(u= \ifmmode \settoheight{\xvec@height}{{{w}}({O^*})} \settodepth{\xvec@depth}{{{w}}({O^*})} \settowidth{\xvec@width}{{{w}}({O^*})} \else \settoheight{\xvec@height}{{{w}}({O^*})} \settodepth{\xvec@depth}{{{w}}({O^*})} \settowidth{\xvec@width}{{{w}}({O^*})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({O^*})^{\:\!\downarrow}\). Consider any \(\ell\in\mathsf{POS}\cap [\ell^{\mathsf{last}}]\). We have \(v_j=w_{o_\ell}\) for all \(j\in\{\mathsf{prev}(\ell)+1,\ldots,\ell\}\). Now consider the vector \(u\). The number of items in \(O^*\) up to and including \(o_\ell\) is precisely \(\ell\), and so \(u_j\geqw_{o_\ell}\) for all \(j\leq\ell\). It follows that \((v_j)_{j\in\{\mathsf{prev}(\ell)+1,\ldots,\ell\}}\leq (u_j)_{j\in\{\mathsf{prev}(\ell)+1,\ldots,\ell\}}\). This holds for all \(\ell\in\mathsf{POS}\cap[\ell^{\mathsf{last}}]\), so together this covers all non-zero coordinates of \(v\), and we obtain that \(v\leq u\).
Next, we argue that \(\ifmmode \settoheight{\xvec@height}{{{w}}({A})} \settodepth{\xvec@depth}{{{w}}({A})} \settowidth{\xvec@width}{{{w}}({A})} \else \settoheight{\xvec@height}{{{w}}({A})} \settodepth{\xvec@depth}{{{w}}({A})} \settowidth{\xvec@width}{{{w}}({A})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({A})^{{\:\!\downarrow}}\leq v\). Let \(z= \ifmmode \settoheight{\xvec@height}{{{w}}({A})} \settodepth{\xvec@depth}{{{w}}({A})} \settowidth{\xvec@width}{{{w}}({A})} \else \settoheight{\xvec@height}{{{w}}({A})} \settodepth{\xvec@depth}{{{w}}({A})} \settowidth{\xvec@width}{{{w}}({A})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({A})^{\:\!\downarrow}\).
For part (a), consider any \(\ell\in\mathsf{POS}\cap[\ell^{\mathsf{last}}]\), and consider the coordinates \(j\in\{\mathsf{prev}(\ell)+1,\ldots,\ell\}\). We have \[\bigl|A\cap[o_\ell]\bigr|= \sum_{r\in\mathsf{POS}':r\leq\mathsf{prev}(\ell)}\bigl|A\cap\mathsf{SBkt}^*_r\bigr| \leq \sum_{r\in\mathsf{POS}':r\leq\mathsf{prev}(\ell)}\Bigl(r-\mathsf{prev}(r)\Bigr)=\mathsf{prev}(\ell).\] So for all \(j>\mathsf{prev}(\ell)\), we have \(z_j\leqw_{o_\ell}\). On the other hand, as argued above we have \(v_j=w_{o_\ell}\) for all \(j\in\{\mathsf{prev}(\ell)+1,\ldots,\ell\}\). So we obtain that \((z_j)_{j\in\{\mathsf{prev}(\ell)+1,\ldots,\ell\}}\leq (v_j)_{j\in\{\mathsf{prev}(\ell)+1,\ldots,\ell\}}\). This holds for all \(\ell\in\mathsf{POS}\cap[\ell^{\mathsf{last}}]\), so we obtain that \((z_j)_{j\in[\ell^{\mathsf{last}}]}\leq (v_j)_{j\in[\ell^{\mathsf{last}}]}\). Finally, note that \(|A|=\sum_{r\in\mathsf{POS}'}\bigl|A\cap\mathsf{SBkt}^*_r\bigr|\leq\sum_{r\in\mathsf{POS}'}\bigl(r-\mathsf{prev}(r)\bigr)=\ell^{\mathsf{last}}\), so \(z_j=0\) for all \(j>\ell^{\mathsf{last}}\). It follows that \(z\leq v\).
For part (b), consider any \(\ell\in\mathsf{POS}\cap[k]\). Similar to above, we have \[\bigl|A\cap[i_\ell]\bigr|= \sum_{r\in\mathsf{POS}':r\leq\mathsf{prev}(\ell)}\Bigl|A\cap\{i_r+1,\ldots,i_{\mathsf{next}(r)}\}\Bigr| \leq \sum_{r\in\mathsf{POS}':r\leq\mathsf{prev}(\ell)}\Bigl(r-\mathsf{prev}(r)\Bigr)=\mathsf{prev}(\ell).\] So \(z_j\leqw_{i_\ell}\) for all \(j>\mathsf{prev}(\ell)\). We also have as before \(v_j=w_{o_\ell}\) for all \(j\in\{\mathsf{prev}(\ell)+1,\ldots,\ell\}\), and \(w_{o_\ell}\geqw_{i_\ell}\), since \(i_\ell\geq o_\ell\). So \((z_j)_{j\in\{\mathsf{prev}(\ell)+1,\ldots,\ell\}}\leq (v_j)_{j\in\{\mathsf{prev}(\ell)+1,\ldots,\ell\}}\). This holds for all \(\ell\in\mathsf{POS}\cap[k]\), so we obtain that \((z_j)_{j\in[\ell^{\mathsf{last}}]}\leq (v_j)_{j\in[\ell^{\mathsf{last}}]}\). Finally, note that \(|A|=\sum_{r\in\mathsf{POS}':r\leq k}\bigl|A\cap\{i_r+1,\ldots,i_{\mathsf{next}(r)}\}\bigr|\leq\sum_{r\in\mathsf{POS}':r\leq k}\bigl(r-\mathsf{prev}(r)\bigr)=k\), so \(z_j=0\) for all \(j>k\). It follows that \(z\leq v\). ◻
For sets \(S,T\subseteq[n]\), let \(\mathsf{rwd}_S(T):=\mathsf{rwd}(T\cup S)-\mathsf{rwd}(S)\) denote the incremental reward that we obtain by adding the item-set \(T\) to \(S\). Part (a) of Lemma 11 suggests that we build a solution \(A\) satisfying the bounds mentioned therein. In particular, since \(\mathsf{rwd}\) is submodular, one can argue that if we build a solution by considering the \(\mathsf{SBkt}^*_\ell\) size buckets (in any order), and finding the \(\ell-\mathsf{prev}(\ell)\) items from \(\mathsf{SBkt}^*_\ell\) to add to our current solution that maximize the incremental reward obtained, then this yields good reward. Note that the subproblem we need to solve here is a cardinality-constrained submodular maximization problem. The issue with implementing this plan is that we do not know the \(\mathsf{SBkt}^*_\ell\) size buckets. Part (b) of Lemma 11 suggests a way out of this. We will instead build an index-set \(I\) and a solution \(A\) simultaneously satisfying the requirements of part (b) of Lemma 11. This will still guarantee feasibility, and we will show that this can be done so as to obtain \(\Omega(\mathit{OPT})\) reward.
It will be convenient to first observe that there is a near-optimal solution satisfying the cardinality bounds in Lemma 11 (a). This is due to the following simple, general result.
Lemma 12. Let \(([n],\mathcal{I})\) be a matroid with rank function \(r:2^{[n]}\mapsto\mathbb{Z}_{+}\), and \(\mathcal{P}=\bigl\{x\in\mathbb{R}_+^n: x(S)\leqr(S)\;\;\forall S\subseteq[n]\bigr\}\) be the corresponding matroid polytope. Let \(A\subseteq[n]\) and \(\rho\geq 1\) be such that \(\chi^A/\rho\in\mathcal{P}\). Let \(g:2^{[n]}\mapsto\mathbb{R}_{+}\) be a monotone, submodular function. Then, there exists a set \(B\subseteq A\) such that \(B\in\mathcal{I}\) and \(g(B)\geq g(A)/\rho\).
Lemma 12 follows from the fact that the multilinear extension of \(g\) drops by a factor of at most \(\rho\) when we scale \(\chi^A\) by \(\rho\), and one can round a point in a matroid polytope to an integer point without incurring any rounding loss in the value of the multilinear extension. To avoid detracting the reader, we defer the proof to the end of this section. We utilize the following corollary.
Corollary 2. There is a solution \(\widetilde{O}\subseteq[n]\) such that \(\bigl|\widetilde{O}\cap\mathsf{SBkt}^*_\ell\bigr|\leq\ell-\mathsf{prev}(\ell)\) for all \(\ell\in\mathsf{POS}'\) and \(\mathsf{rwd}(\widetilde{O})\geq\mathsf{rwd}\bigl(O^*-\{o_1\}\bigr)/2\).
Proof. We apply Lemma 12 to the partition matroid encoding the stated cardinality bounds and the set \(A=O^*-\{o_1\}\). We claim that we can take \(\rho=2\) in Lemma 12, which yields the claimed result. This follows because \(A\cap\mathsf{SBkt}^*_0=\emptyset\) and \(\bigl|A\cap\mathsf{SBkt}^*_\ell\bigr|\leq\mathsf{next}(\ell)-\ell\leq 2\bigl(\ell-\mathsf{prev}(\ell)\bigr)\) for all \(\ell\in\mathsf{POS}'-\{0\}\). ◻
Let \(\mathsf{r_{max}}:=\max\,\{\mathsf{rwd}(\{e\}): e\in[n],\;f(w_e)\leq B\}\). Since \(\mathsf{rwd}\) is monotone, submodular, we have \(\mathit{OPT}\leq n\cdot\mathsf{r_{max}}\). We may assume that we know \(\ell^{\mathsf{last}}\), and (as is routine by now) that we have an estimate \(\widetilde{\mathsf{opt}}\) such that \(\widetilde{\mathsf{opt}}\leq\mathit{OPT}\leq(1+\varepsilon)\widetilde{\mathsf{opt}}\). Let \(\Delta=\frac{\varepsilon\cdot\widetilde{\mathsf{opt}}}{|\mathsf{POS}|}\). For \(\ell\in\mathsf{POS}'\), define \(\widetilde{O}_\ell:=\widetilde{O}\cap\mathsf{SBkt}^*_\ell\), and \(\widetilde{O}_{>\ell}:=\bigcup_{r\in\mathsf{POS}':r>\ell}\widetilde{O}_r\). (Note that \(\widetilde{O}_0=\emptyset\).) Since \(|\mathsf{POS}|=O(\log n)\), similar to Section 3, we may also assume that we can estimate the incremental rewards \(\mathsf{rwd}_{\widetilde{O}_{>\ell}}(\widetilde{O}_\ell)\) within an additive error of \(\Delta\), for all \(\ell\in\mathsf{POS}'\): more precisely, we may assume that we know \(\mathsf{rwd}^*_\ell:=\Delta\cdot\bigl\lfloor\frac{\mathsf{rwd}_{\widetilde{O}_{>\ell}}(\widetilde{O}_\ell)}{\Delta}\bigr\rfloor\) for all \(\ell\in\mathsf{POS}'\), since \(\sum_{\ell\in\mathsf{POS}'}\bigl\lfloor\frac{\mathsf{rwd}_{\widetilde{O}_{>\ell}}(\widetilde{O}_\ell)}{\Delta}\bigr\rfloor\leq\bigl(1+\frac{1}{\varepsilon}\bigr)|\mathsf{POS}|\).
Consider using these \(\mathsf{rwd}^*_\ell\)-estimates to build the index-set \(I\) and solution \(A\), roughly speaking, via the following procedure. Let \(\mathcal{A}\) be a \(\beta\)-approximation algorithm for submodular maximization subject to a cardinality constraint. Set \(i_{\mathsf{next}(\ell^{\mathsf{last}})}:=n\), \(A\leftarrow\emptyset\), and \(I\leftarrow\emptyset\). Starting at \(\ell=\ell^{\mathsf{last}}\), we find the largest index \(i<i_{\mathsf{next}(\ell)}\) such that \(\mathcal{A}\) can find a subset \(T\subseteq\{i+1,\ldots,i_{\mathsf{next}(\ell)}\}\) with \(|T|\leq\ell-\mathsf{prev}(\ell)\) satisfying \(\mathsf{rwd}_A(T)\geq\mathsf{rwd}^*_\ell/\beta\). The idea is that if \(i_{\mathsf{next}(\ell)}\geq o_{\mathsf{next}(\ell)}\), then \(\widetilde{O}_\ell\) is a set that yields incremental reward \(\mathsf{rwd}^*_\ell\), and so since \(\mathcal{A}\) is a \(\beta\)-approximation algorithm, we will be able to find such a set for some \(i\geq o_\ell\). Given this, we can set \(i_\ell:=i\), and update \(A\leftarrow A\cup T\), \(I\leftarrow I\cup\{i_\ell\}\), and \(\ell\leftarrow\mathsf{prev}(\ell)\), and continue until we have \(\ell=0\) at the end of the iteration.
By construction, \(I\) and \(A\) would then satisfy Lemma 11 (b), which suggests that \(A\) is a feasible solution obtaining reward roughly \(\mathsf{rwd}(\widetilde{O})/\beta\). However, there is a significant piece of fallacious reasoning here, which poses a serious impediment. In arguing that \(i_\ell\geq o_\ell\), we assumed above that \(\mathsf{rwd}_A(\widetilde{O}_\ell)\geq\mathsf{rwd}^*_\ell\), but this need not hold; we only have that \(\mathsf{rwd}_{\widetilde{O}_{>\ell}}(\widetilde{O}_\ell)\geq\mathsf{rwd}^*_\ell\). Consequently, we cannot argue that \(i_\ell\geq o_\ell\), and so \(A\) need not be a feasible solution. One could avoid this problem if we could estimate the sequence \(\bigl\{\mathsf{rwd}_{A_{\mathsf{next}(\ell)}}(\widetilde{O}_\ell)\bigr\}_{\ell\in\mathsf{POS}'}\) of incremental rewards, where \(A_{\mathsf{next}(\ell)}\) is the set of items included (from \(\{i_{\mathsf{next}(\ell)}+1,n\}\)) when considering index \(\ell\); we call \(\bigl\{\mathsf{rwd}_{A_{\mathsf{next}(\ell)}}(\widetilde{O}_\ell)\bigr\}_{\ell\in\mathsf{POS}'}\) the incremental-reward sequence corresponding to the (nested) set sequence \(\{A_\ell\}_{\ell\in\mathsf{POS}'}\). But this runs the risk of circular reasoning, since the \(A_\ell\)-sets are themselves determined by the incremental-reward sequence used (in the above procedure)!
Essentially, we seek a reward sequence \(\{\widetilde{\mathsf{rwd}}_\ell\}_{\ell\in\mathsf{POS}'}\) that corresponds to the incremental-reward sequence of a set sequence \(\{A_{\ell}\}_{\ell\in\mathsf{POS}'}\), such that \(\{A_\ell\}_{\ell\in\mathsf{POS}'}\) is precisely the set sequence that one would obtain via the above procedure from the \(\{\widetilde{\mathsf{rwd}}_\ell\}_{\ell\in\mathsf{POS}'}\) reward sequence! We argue that this is indeed possible, and that the solution \(A=A_1\) constructed from such a reward-sequence obtains large reward. Roughly speaking this holds because: (1) one can define a suitable set sequence and target incremental-reward sequence, whose entries are multiplies of \(\Delta\), and can argue that this target reward sequence can be isolated within a polynomial-size collection of reward sequences (even though the number of set sequences can be quite large); and (2) given this target reward sequence, we can recover the set sequence used to define the reward sequence.
Recall that we may assume that we know \(\ell^{\mathsf{last}}\) and an estimate \(\widetilde{\mathsf{opt}}\) such that \(\widetilde{\mathsf{opt}}\leq\mathit{OPT}\leq(1+\varepsilon)\widetilde{\mathsf{opt}}\), and we set \(\Delta=\frac{\varepsilon\cdot\widetilde{\mathsf{opt}}}{|\mathsf{POS}|}\). (More precisely, we repeat the procedure below for all possible values of \(\ell^{\mathsf{last}}\) and \(\widetilde{\mathsf{opt}}\), where \(\widetilde{\mathsf{opt}}\) is of the form \(\mathsf{r_{max}}(1+\varepsilon)^k\) and lies in \([\mathsf{r_{max}}, n\mathsf{r_{max}}]\).) Define the following collection of reward sequences. \[\mathcal{R}:= \Bigl\{\widetilde{\mathsf{rwd}}\in\mathbb{R}_{+}^{\mathsf{POS}'-\{0\}}:\;\widetilde{\mathsf{rwd}}_\ell\text{ is a multiple of \Delta}\;\;\forall \ell\in\mathsf{POS}'-\{0\}, \quad \sum_{\ell\in\mathsf{POS}'-\{0\}}\widetilde{\mathsf{rwd}}_\ell\leq\Bigl(1+\tfrac{1}{\varepsilon}\Bigr)\Delta\cdot|\mathsf{POS}|\Bigr\}\] Note that \(|\mathcal{R}|\leq 2^{O(|\mathsf{POS}|/\varepsilon)}=n^{O(1/\varepsilon)}\). Recall that \(\mathcal{A}\) is a \(\beta\)-approximation algorithm for cardinality-constrained submodular maximization. We assume that \(\mathcal{A}\) is deterministic.
For each \(\widetilde{\mathsf{rwd}}\in\mathcal{R}\), we do the following. Set \(i_{\mathsf{next}(\ell^{\mathsf{last}})}:=n\). Initialize \(A_{\mathsf{next}(\ell^{\mathsf{last}})}:=\emptyset\), and \(I:=\emptyset\). For each \(\ell\in\mathsf{POS}'-\{0\}\) considered in decreasing order, we do the following. Let \(i\) be the largest index smaller than \(i_{\mathsf{next}(\ell)}\) such that for the cardinality-constrained submodular maximization problem with ground set \(\{i+1,\ldots,i_{\mathsf{next}(\ell)}\}\), submodular function \(\mathsf{rwd}_{A_{\mathsf{next}(\ell)}}(\cdot)\), and cardinality bound \(\ell-\mathsf{prev}(\ell)\), \(\mathcal{A}\) returns a set \(T\) satisfying \(\mathsf{rwd}_{A_{\mathsf{next}(\ell)}}(T)\geq\widetilde{\mathsf{rwd}}_\ell\). If no such index \(i\) exists, then we declare failure; this indicates that \(\widetilde{\mathsf{rwd}}\) is not a suitable target reward sequence. Set \(A_\ell\leftarrow T\cup A_{\mathsf{next}(\ell)}\), \(i_\ell:=i\), and \(I\leftarrow I\cup\{i_\ell\}\). We add \(A_1\) to our collection of solutions.
Finally, from the collection of solutions computed, we return the feasible solution that attains maximum reward, or the element achieving reward \(\mathsf{r_{max}}\), whichever yields higher reward.
We prove the following performance guarantee.
Theorem 17. The above algorithm returns a feasible solution obtaining reward at least \(\bigl(\frac{1}{2\beta+3}-\varepsilon\bigr)\cdot\mathit{OPT}\).
We assume that we have the the correct \(\ell^{\mathsf{last}}\), \(\widetilde{\mathsf{opt}}\) values, and show that there is some reward sequence in \(\mathcal{R}\) for which the algorithm computes a feasible solution, and the better of \(\mathsf{r_{max}}\) and the solution computed by the algorithm yields the desired reward. To this end, define the following sequence of rewards and nested sets. Recall that \(\widetilde{O}_\ell=\widetilde{O}\cap\mathsf{SBkt}^*_\ell\) for \(\ell\in\mathsf{POS}'\).
Set \(\overline{i}_{\mathsf{next}(\ell^{\mathsf{last}})}:=n\). Initialize \(B_{\mathsf{next}(\ell^{\mathsf{last}})}:=\emptyset\), \(\overline{I}:=\emptyset\). For each \(\ell\in\mathsf{POS}'-\{0\}\) considered in decreasing order, we do the following. Set \(\overline{\mathsf{rwd}}_{\ell}:=\Delta\cdot\bigl\lfloor\frac{\mathsf{rwd}_{B_{\mathsf{next}(\ell)}}(\widetilde{O}_{\ell})}{\beta\Delta}\bigr\rfloor\). Let \(i\) be the largest index smaller than \(\overline{i}_{\mathsf{next}(\ell)}\) such that for the cardinality-constrained submodular maximization problem with ground set \(\{i+1,\ldots,\overline{i}_{\mathsf{next}(\ell)}\}\), submodular function \(\mathsf{rwd}_{B_{\mathsf{next}(\ell)}}(\cdot)\), and cardinality bound \(\ell-\mathsf{prev}(\ell)\), \(\mathcal{A}\) returns a set \(T\) such that \(\mathsf{rwd}_{B_{\mathsf{next}(\ell)}}(T)\geq\overline{\mathsf{rwd}}_\ell\). Update \(B_\ell\leftarrow T\cup B_{\mathsf{next}(\ell)}\), \(\overline{i}_\ell:=i\), \(\overline{I}\leftarrow\overline{I}\cup\{\overline{i}_\ell\}\).
Lemma 13 shows that \(B:=B_1\) is a feasible solution, and Lemma 14 shows that \(B\) attains good reward. Lemma 15 argues that the \((\overline{\mathsf{rwd}}_\ell)_{\ell\in\mathsf{POS}'-\{0\}}\) reward sequence lies in \(\mathcal{R}\). Lemma 16 shows the key result that, given this reward sequence, our algorithm produces precisely the sequence of sets \(\{B_\ell\}_{\ell\in\mathsf{POS}'-\{0\}}\). Theorem 17 then follows by combining these results.
Lemma 13. The item-set \(B\) and index-set \(\overline{I}\) satisfy the bounds in Lemma 11 (b). Hence \(B\) is a feasible solution.
Proof. By construction, we have \(\bigl|B\cap\{\overline{i}_\ell+1,\ldots,\overline{i}_{\mathsf{next}(\ell)}\}\bigr|\leq\ell-\mathsf{prev}(\ell)\) for all \(\ell\in\mathsf{POS}'-\{0\}\). We argue that \(\overline{i}_{\ell}\geq o_\ell\) for all \(\ell\in\mathsf{POS}'-\{0\}\). This will show that \(B\) and \(\overline{I}\) satisfy the requirements of Lemma 11 (b), which implies that \(B\) is a feasible solution.
We proceed by induction. For any \(\ell\in\mathsf{POS}'-\{0\}\), we have that \(\mathsf{rwd}_{B_{\mathsf{next}(\ell)}}(\widetilde{O}_\ell)\geq\beta\cdot\overline{\mathsf{rwd}}_\ell\) by design. So assuming inductively that \(\overline{i}_{\mathsf{next}(\ell)}\geq o_{\mathsf{next}(\ell)}\), which holds also for the base case \(\ell=\ell^{\mathsf{last}}\) by definition, we have that for \(i=o_\ell\), \(\widetilde{O}_\ell\) is a feasible solution to the cardinality-constrained submodular-maximization problem considered in iteration \(\ell\) with value at least \(\beta\cdot\overline{\mathsf{rwd}}_\ell\). So since \(\mathcal{A}\) is a \(\beta\)-approximation algorithm, certainly for index \(o_\ell\), \(\mathcal{A}\) would return a desired set. It follows that \(\overline{i}_\ell\geq o_\ell\). ◻
Lemma 14. We have \(\mathsf{rwd}(B)\geq\frac{\mathsf{rwd}(\widetilde{O})}{\beta+1}-\varepsilon\cdot\mathit{OPT}\).
Proof. We have \(\mathsf{rwd}_{B_{\mathsf{next}(\ell)}}(B_\ell)\geq\overline{\mathsf{rwd}}_\ell\) for all \(\ell\in\mathsf{POS}'-\{0\}\) by construction. So \[\begin{align} {1} \mathsf{rwd}(B) & =\sum_{\ell\in\mathsf{POS}'-\{0\}}\mathsf{rwd}_{B_{\mathsf{next}(\ell)}}(B_\ell) \geq\sum_{\ell\in\mathsf{POS}'-\{0\}}\overline{\mathsf{rwd}}_\ell \geq\sum_{\ell\in\mathsf{POS}'-\{0\}}\biggl(\frac{\mathsf{rwd}_{B_{\mathsf{next}(\ell)}}(\widetilde{O}_\ell)}{\beta}-\Delta\biggr) \\ & \geq \frac{1}{\beta}\cdot\sum_{\ell\in\mathsf{POS}'-\{0\}}\mathsf{rwd}_B(\widetilde{O}_\ell)-|\mathsf{POS}'|\cdot\Deltais submodular and B\supseteq B_{\mathsf{next}(\ell)}} \\ & \geq \frac{1}{\beta}\cdot\mathsf{rwd}_B\Bigl(\bigcup_{\ell\in\mathsf{POS}'-\{0\}}\widetilde{O}_\ell\Bigr) -\varepsilon\cdot\mathit{OPT}is submodular} \\ & \geq \frac{\mathsf{rwd}(\widetilde{O})-\mathsf{rwd}(B)}{\beta}-\varepsilon\cdot\mathit{OPT}.is monotone} \end{align}\] It follows that \(\mathsf{rwd}(B)\cdot\frac{\beta+1}{\beta}\geq\frac{\mathsf{rwd}(\widetilde{O})}{\beta}-\varepsilon\cdot\mathit{OPT}\), which implies the stated bound. ◻
Lemma 15. We have \((\overline{\mathsf{rwd}}_\ell)_{\ell\in\mathsf{POS}'-\{0\}}\in\mathcal{R}\).
Proof. We only need to show that \(\sum_{\ell\in\mathsf{POS}'-\{0\}}\overline{\mathsf{rwd}}_\ell\leq\bigl(1+\frac{1}{\varepsilon}\bigr)|\mathsf{POS}|\) since all \(\overline{\mathsf{rwd}}_\ell\) entries are multiples of \(\Delta\). We have \(\mathsf{rwd}_{B_{\mathsf{next}(\ell)}}(B_\ell)\geq\overline{\mathsf{rwd}}_\ell\) for all \(\ell\in\mathsf{POS}'-\{0\}\). So \(\sum_{\ell\in\mathsf{POS}'-\{0\}}\overline{\mathsf{rwd}}_\ell\leq\mathsf{rwd}(B_1)=\mathsf{rwd}(B)\). Since \(B\) is feasible and \(\widetilde{\mathsf{opt}}\) is a correct estimate of \(\mathit{OPT}\), we have \(\mathsf{rwd}(B)\leq\mathit{OPT}\leq(1+\varepsilon)\widetilde{\mathsf{opt}}\). So \(\sum_{\ell\in\mathsf{POS}'-\{0\}}\overline{\mathsf{rwd}}_\ell\leq(1+\varepsilon)\widetilde{\mathsf{opt}}\). We also know that the sum on the left is a multiple of \(\Delta\). So we have that \(\sum_{\ell\in\mathsf{POS}'-\{0\}}\overline{\mathsf{rwd}}_\ell\leq\Delta\cdot\bigl\lfloor\frac{(1+\varepsilon)\widetilde{\mathsf{opt}}}{\Delta}\bigr\rfloor \leq\Delta\cdot\bigl(1+\frac{1}{\varepsilon}\bigr)|\mathsf{POS}|\). ◻
Lemma 16. On the input sequence \((\overline{\mathsf{rwd}}_\ell)_{\ell\in\mathsf{POS}'-\{0\}}\), the algorithm returns the set sequence \(\{B_\ell\}_{\ell\in\mathsf{POS}'-\{0\}}\).
Proof. This follows simply because inductively, one can argue that each iteration of the algorithm unfolds in exactly the same way as the corresponding iteration of the procedure used to construct the \((\overline{\mathsf{rwd}}_\ell)\) reward sequence. To avoid cumbersome terminology, we use \(\overline{\mathsf{rwd}}\)-procedure to denote the latter procedure.
We show the following. For every \(\ell\in\mathsf{POS}'-\{0\}\), assuming that the index-set \(I\) and the sets \(\{A_r\}_{r\in\mathsf{POS}':r>\ell}\) computed by the algorithm by the start of iteration \(\ell\), are the same as the index set \(\overline{I}\) and the sets \(\{B_r\}_{r\in\mathsf{POS}':r>\ell}\) computed by the \(\overline{\mathsf{rwd}}\)-procedure by the start of iteration \(\ell\), the same holds at the end of the iteration, i.e., the start of the next iteration. The stated assumption clearly holds when \(\ell=\ell^{\mathsf{last}}\), so if we prove the above claim, then this implies that \(A_\ell=B_\ell\) for all \(\ell\in\mathsf{POS}'-\{0\}\).
To see why the claim holds, observe that in iteration \(\ell\), both the algorithm and the \(\overline{\mathsf{rwd}}\)-procedure are solving exactly the same cardinality-constrained submodular maximization problem when considering any index \(i\). This is because \(i_{\mathsf{next}(\ell)}=\overline{i}_{\mathsf{next}(\ell)}\) and \(A_{\mathsf{next}(\ell)}=B_{\mathsf{next}(\ell)}\), since \(I=\overline{I}\) at the start of the iteration and \(A_r=B_r\) for all \(r\in\mathsf{POS}'\), \(r>\ell\), and we are considering the same target reward \(\overline{\mathsf{rwd}}_\ell\) by design. Since \(\mathcal{A}\) is deterministic, it follows that both the algorithm and the \(\overline{\mathsf{rwd}}\)-procedure compute the same index \(i\) and the same set \(T\) to add to their respective current solutions in this iteration. Hence, the invariant is maintained. ◻
Proof of Theorem 17. The reward obtained is at least \(\max\bigl\{\mathsf{rwd}(B),\mathsf{r_{max}}\bigr\}\). By Corollary 2 and since \(\mathsf{rwd}(\{o_1\})\leq\mathsf{r_{max}}\), we have that \(\mathsf{rwd}(\widetilde{O})\geq\frac{\mathit{OPT}-\mathsf{r_{max}}}{2}\). So using Lemma 14, we obtain that \[\begin{align} \max\bigl\{\mathsf{rwd}(B),\mathsf{r_{max}}\bigr\} & \geq \frac{2(\beta+1)}{2\beta+3}\cdot\mathsf{rwd}(B)+\frac{1}{2\beta+3}\cdot\mathsf{r_{max}}\\ & \geq \frac{2(\beta+1)}{2\beta+3}\cdot\biggl(\frac{\mathit{OPT}-\mathsf{r_{max}}}{2(\beta+1)}-\varepsilon\mathit{OPT}\biggr) +\frac{1}{2\beta+3}\cdot\mathsf{r_{max}} \geq \biggl(\frac{1}{2\beta+3}-\varepsilon\biggr)\cdot\mathit{OPT}. \quad \qedhere \end{align}\] ◻
To obtain the improved approximation factor, we make a few changes to the earlier algorithm. First, letting \(\delta=\min\{\varepsilon,1\}\), we now take \(\mathsf{POS}=\mathsf{POS}_{n,\delta}\), so as to avoid the factor-\(2\) loss in Corollary 2, since for large enough \(\ell\), we now have that \(\mathsf{next}(\ell)-\ell\leq(1+2\varepsilon)\bigl(\ell-\mathsf{prev}(\ell)\bigr)\). However, this savings kicks in only for sufficiently large \(\ell\). We also want to reduce the \(\mathsf{r_{max}}\) loss incurred earlier because of excluding \(o_1\) when we move to \(\widetilde{O}\). We handle these considerations as follows. As before, let \(\ell^{\mathsf{last}}\) be the largest index in \(\mathsf{POS}\cap[n_{\mathsf{opt}}]\), and let \(\mathsf{POS}':=\{0\}\cup(\mathsf{POS}\cap[\ell^{\mathsf{last}}])\). We guess \(o_1,\ldots,o_{\ell_1}\), where \(\ell_1\) is a sufficiently large constant depending on \(\varepsilon\), and prove a generalization of Lemma 11 (Lemma 17) showing that if \(A\) is such that \(A\cap[o_{\ell_1}]=\{o_1,\ldots,o_{\ell_1}\}\), \(A\cap\mathsf{SBkt}^*_{\ell_1}=\emptyset\), and \(\bigl|A\cap\mathsf{SBkt}^*_\ell\bigr|\leq\ell-\mathsf{prev}(\ell)\) for all \(\ell\in\mathsf{POS}'\), \(\ell>\ell_1\), then \(A\) is a feasible solution. We can take \(\ell_1\) sufficiently large such that \(O^*\cap\mathsf{SBkt}^*_{\ell_1}\) contributes (incremental) reward at most \(\varepsilon\mathit{OPT}\) (see Claim 18). This enables us to argue that there is a solution \(\widetilde{O}\) satisfying the above bounds such that \(\mathsf{rwd}(\widetilde{O})\geq(1-\varepsilon)\mathit{OPT}\) (Lemma 18). Finally, since we start by including items \(\{o_1,\ldots,o_{\ell_1}\}\), we modify the algorithm and the \(\overline{\mathsf{rwd}}\)-procedure accordingly to stop when we reach index \(\ell_1\). Recall that \(\mathsf{SBkt}^*_\ell:=\{o_\ell+1,\ldots,o_{\mathsf{next}(\ell)}\}\) for all \(\ell=0,1,\ldots,\ell^{\mathsf{last}}\), and these size buckets partition \([n]\).
Lemma 17. Let \(A\subseteq[n]\) be such that \(A\cap[o_{\ell_1}]=\{o_1,o_2,\ldots,o_{\ell_1}\}\) for some \(\ell_1\in\mathsf{POS}'\).
If \(A\cap\mathsf{SBkt}^*_{\ell_1}=\emptyset\) and \(\bigl|A\cap\mathsf{SBkt}^*_\ell\bigr|\leq\ell-\mathsf{prev}(\ell)\) for all \(\ell\in\mathsf{POS}'\), \(\ell>\ell_1\), then \(f\bigl( \ifmmode \settoheight{\xvec@height}{{{w}}({A})} \settodepth{\xvec@depth}{{{w}}({A})} \settowidth{\xvec@width}{{{w}}({A})} \else \settoheight{\xvec@height}{{{w}}({A})} \settodepth{\xvec@depth}{{{w}}({A})} \settowidth{\xvec@width}{{{w}}({A})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({A})\bigr)\leq B\).
Let \(I=\{i_\ell: \ell\in\mathsf{POS},\,\ell_1<\ell\leq k\}\) be an index-set, where \(k\leq\ell^{\mathsf{last}}\) and \(i_\ell\geq o_\ell\) for all \(\ell\in\mathsf{POS}\), \(\ell_1<\ell\leq k\). Define \(i_{\ell_1}:=o_{\ell_1}\) and \(i_{\mathsf{next}(k)}:=n\). Suppose that \(A\cap\{i_{\ell_1}+1,\ldots,i_{\mathsf{next}(\ell_1)}\}=\emptyset\) and \(\bigl|A\cap\{i_\ell+1,\ldots,i_{\mathsf{next}(\ell)}\}\bigr|\leq\ell-\mathsf{prev}(\ell)\) for all \(\ell\in\mathsf{POS}'\), \(\ell_1<\ell\leq k\). Then, \(f\bigl( \ifmmode \settoheight{\xvec@height}{{{w}}({A})} \settodepth{\xvec@depth}{{{w}}({A})} \settowidth{\xvec@width}{{{w}}({A})} \else \settoheight{\xvec@height}{{{w}}({A})} \settodepth{\xvec@depth}{{{w}}({A})} \settowidth{\xvec@width}{{{w}}({A})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({A})\bigr)\leq B\).
Proof. We mimic the proof of Lemma 11. Let \(v\in\mathbb{R}^n\) be the following vector: \[v_r=w_{o_r}\;\;\forall r\in[\ell_1]; \quad\;\; \forall \ell\in\mathsf{POS}',\,\ell>\ell_1,\,\forall j\in\{\mathsf{prev}(\ell)+1,\ldots,\ell\}, \;\;\text{set }v_j=w_{o_\ell}; \quad \text{v_j=0 for all other j}.\] Let \(u= \ifmmode \settoheight{\xvec@height}{{{w}}({O^*})} \settodepth{\xvec@depth}{{{w}}({O^*})} \settowidth{\xvec@width}{{{w}}({O^*})} \else \settoheight{\xvec@height}{{{w}}({O^*})} \settodepth{\xvec@depth}{{{w}}({O^*})} \settowidth{\xvec@width}{{{w}}({O^*})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({O^*})^{\:\!\downarrow}\). Clearly, \(v_j=u_j\) for all \(j\in[\ell_1]\). Consider any \(\ell\in\mathsf{POS}'\), \(\ell>\ell_1\). We have \(v_j=w_{o_\ell}\) for all \(j\in\{\mathsf{prev}(\ell)+1,\ldots,\ell\}\). The number of items in \(O^*\) up to and including \(o_\ell\) is precisely \(\ell\), and so \(u_j\geqw_{o_\ell}\) for all \(j\leq\ell\). Therefore \((v_j)_{j\in\{\mathsf{prev}(\ell)+1,\ldots,\ell\}}\leq (u_j)_{j\in\{\mathsf{prev}(\ell)+1,\ldots,\ell\}}\). This holds for all \(\ell\in\mathsf{POS}'\), \(\ell>\ell_1\), so together this covers all non-zero coordinates of \(v\), and we obtain that \(v\leq u\).
Next, we argue that \(\ifmmode \settoheight{\xvec@height}{{{w}}({A})} \settodepth{\xvec@depth}{{{w}}({A})} \settowidth{\xvec@width}{{{w}}({A})} \else \settoheight{\xvec@height}{{{w}}({A})} \settodepth{\xvec@depth}{{{w}}({A})} \settowidth{\xvec@width}{{{w}}({A})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({A})^{{\:\!\downarrow}}\leq v\). Let \(z= \ifmmode \settoheight{\xvec@height}{{{w}}({A})} \settodepth{\xvec@depth}{{{w}}({A})} \settowidth{\xvec@width}{{{w}}({A})} \else \settoheight{\xvec@height}{{{w}}({A})} \settodepth{\xvec@depth}{{{w}}({A})} \settowidth{\xvec@width}{{{w}}({A})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({A})^{\:\!\downarrow}\). We have \(z_j=v_j\) for all \(j\in[\ell_1]\).
For part (a), consider any \(\ell\in\mathsf{POS}'\), \(\ell>\ell_1\), and consider the coordinates \(j\in\{\mathsf{prev}(\ell)+1,\ldots,\ell\}\). We have \[\bigl|A\cap[o_\ell]\bigr|= \ell_1+\sum_{r\in\mathsf{POS}':\ell_1<r\leq\mathsf{prev}(\ell)}\bigl|A\cap\mathsf{SBkt}^*_r\bigr| \leq \ell_1+\sum_{r\in\mathsf{POS}':\ell_1<r\leq\mathsf{prev}(\ell)}\Bigl(r-\mathsf{prev}(r)\Bigr)=\mathsf{prev}(\ell).\] So for all \(j>\mathsf{prev}(\ell)\), we have \(z_j\leqw_{o_\ell}\). On the other hand, as argued above we have \(v_j=w_{o_\ell}\) for all \(j\in\{\mathsf{prev}(\ell)+1,\ldots,\ell\}\). So we obtain that \((z_j)_{j\in\{\mathsf{prev}(\ell>)+1,\ldots,\ell\}}\leq (v_j)_{j\in\{\mathsf{prev}(\ell)+1,\ldots,\ell\}}\). This holds for all \(\ell\in\mathsf{POS}'\), \(\ell>\ell_1\), so \((z_j)_{j\in[\ell^{\mathsf{last}}]}\leq (v_j)_{j\in[\ell^{\mathsf{last}}]}\). Also, \(|A|\leq\ell_1+\sum_{r\in\mathsf{POS}':\ell_1<r\leq k}\bigl(r-\mathsf{prev}(r)\bigr)=k\), so \(z_j=0\) for all \(j>k\). It follows that \(z\leq v\).
For part (b), consider any \(\ell\in\mathsf{POS}'\), \(\ell>\ell_1\). Similar to above, we have \[\bigl|A\cap[i_\ell]\bigr|= \ell_1+\sum_{r\in\mathsf{POS}':\ell_1<r\leq\mathsf{prev}(\ell)}\Bigl|A\cap\{i_r+1,\ldots,i_{\mathsf{next}(r)}\}\Bigr| \leq \ell_1+\sum_{r\in\mathsf{POS}':\ell_1<r\leq\mathsf{prev}(\ell)}\Bigl(r-\mathsf{prev}(r)\Bigr)=\mathsf{prev}(\ell).\] So \(z_j\leqw_{i_\ell}\leqw_{o_\ell}\) for all \(j>\mathsf{prev}(\ell)\), and \(v_j=w_{o_\ell}\) for all \(j\in\{\mathsf{prev}(\ell)+1,\ldots,\ell\}\). So we have that \((z_j)_{j\in\{\mathsf{prev}(\ell)+1,\ldots,\ell\}}\leq (v_j)_{j\in\{\mathsf{prev}(\ell)+1,\ldots,\ell\}}\). This holds for all \(\ell\in\mathsf{POS}'\), \(\ell>\ell_1\), so \((z_j)_{j\in[\ell^{\mathsf{last}}]}\leq (v_j)_{j\in[\ell^{\mathsf{last}}]}\). Finally, \(|A|\leq\ell_1+\sum_{r\in\mathsf{POS}':\ell_1<r\leq k}\bigl|A\cap\{i_r+1,\ldots,i_{\mathsf{next}(r)}\}\bigr| \leq\ell_1+\sum_{r\in\mathsf{POS}':\ell_1<r\leq k}\bigl(r-\mathsf{prev}(r)\bigr)=k\), so \(z_j=0\) for all \(j>k\). It follows that \(z\leq v\). ◻
Let \(\ell'\) be the smallest index in \(\mathsf{POS}\) that is at least \(\frac{2}{\delta^2}\), and let \(\ell_0>\ell'\) be such that \(\bigl|\mathsf{POS}\cap[\ell',\ell_0]\bigr|=\bigl\lceil\frac{1}{\varepsilon}\bigr\rceil\). Let \(N=\bigl\lceil\frac{1}{\varepsilon}\bigr\rceil\). Since \(\mathsf{next}(\ell)\leq(1+\delta)\ell+1\) for all \(\ell\in\mathsf{POS}\), we have \[\ell_0\leq(1+\delta)^{N-1}\ell'+\sum_{r=1}^{N-1}(1+\delta)^r \leq(1+\delta)^{N-1}\Bigl(\ell'+\tfrac{(1+\delta)^2}{\delta}\Bigr) \leq e^{\delta(N-1)}\Bigl(\ell'+2+\delta+\tfrac{1}{\delta}\Bigr) \leq e(1+\delta)\ell'+e(2+\delta).\] We may assume that \(n_{\mathsf{opt}}=|O^*|\geq\ell_0\) as otherwise we can use brute force enumeration to find an optimal solution. Then, \(\ell',\ell_0\in\mathsf{POS}'\).
Claim 18. There is some index \(\ell_1\in\mathsf{POS}\cap[\ell',\ell_0]\) such that \(\mathsf{rwd}_{O^*-\mathsf{SBkt}^*_{\ell_1}}(O^*\cap\mathsf{SBkt}^*_{\ell_1})\leq\varepsilon\mathit{OPT}\).
Proof. For an index-set \(I\subseteq[n]\), let \(\mathsf{SBkt}^*_I:=\bigcup_{r\in I\cap\mathsf{POS}'}\mathsf{SBkt}^*_r\). There are at least \(\frac{1}{\varepsilon}\) indices in \(\mathsf{POS}\cap[\ell',\ell_0]\) and \[\begin{align} \sum_{\ell\in\mathsf{POS}\cap[\ell'.\ell_0]}\mathsf{rwd}_{O^*-\mathsf{SBkt}^*_\ell}(O^*\cap\mathsf{SBkt}^*_\ell) & \leq\sum_{\ell\in\mathsf{POS}\cap[\ell',\ell_0]}\mathsf{rwd}_{O^*-\mathsf{SBkt}^*_{[\ell',\ell]}}(O^*\cap\mathsf{SBkt}^*_\ell) \\ & =\mathsf{rwd}(O^*)-\mathsf{rwd}(O^*-\mathsf{SBkt}^*_{[\ell',\ell_0]})\leq\mathit{OPT}. \qedhere \end{align}\] ◻
In the sequel, \(\ell_1\) is fixed to be the index given by Claim 18.
Lemma 18. There is a solution \(\widetilde{O}\subseteq[n]\) satisfying the requirements of Lemma 17 (a) such that \(\mathsf{rwd}(\widetilde{O})\geq(1-2\delta)(1-\varepsilon)\mathit{OPT}\geq(1-3\varepsilon)\mathit{OPT}\).
Proof. Let \(S=\{o_1,\ldots,o_{\ell_1}\}\), and \(T=O^*-S-\mathsf{SBkt}^*_{\ell_1}\). For any \(\ell\in\mathsf{POS}\), we have \(\mathsf{next}(\ell)-\ell\leq\delta\ell+1\), and \(\ell-\mathsf{prev}(\ell)\geq\ell-\frac{\ell}{1+\delta}=\frac{\delta\ell}{1+\delta}\). Since \(\ell_1\geq\ell'\), for all \(\ell\geq\ell_1\), we therefore have \[\mathsf{next}(\ell)-\ell\leq(1+\delta)\Bigl(\ell-\mathsf{prev}(\ell)\Bigr)+1\leq(1+2\delta)\Bigl(\ell-\mathsf{prev}(\ell)\Bigr)\] where the final inequality follows because \(\delta\bigl(\ell-\mathsf{prev}(\ell)\bigr)\geq\frac{\delta^2\ell}{1+\delta}\geq\frac{\delta^2\ell'}{2}\geq 1\). Since \(|T\cap\mathsf{SBkt}^*_\ell|\leq\mathsf{next}(\ell)-\ell\) for all \(\ell\in\mathsf{POS}'\), \(\ell>\ell_1\), by Lemma 12, we can find \(B\subseteq T\) such that \(|B\cap\mathsf{SBkt}^*_\ell|\leq\ell-\mathsf{prev}(\ell)\) for all \(\ell\in\mathsf{POS}'\), \(\ell>\ell'\) and \(\mathsf{rwd}_S(B)\geq(1-2\delta)\mathsf{rwd}_S(T)\). Consider \(\widetilde{O}=S\cup B\). By construction, \(\widetilde{O}\) satisfies the requirements of Lemma 17 (a). Also, we have \[\begin{align} \mathsf{rwd}(\widetilde{O}) & =\mathsf{rwd}(S)+\mathsf{rwd}_S(B)\geq\mathsf{rwd}(S)+(1-2\delta)\mathsf{rwd}_S(T) \geq(1-2\delta)\mathsf{rwd}(S\cup T)\\ &=(1-2\delta)\mathsf{rwd}\bigl(O^*-\mathsf{SBkt}^*_{\ell_1}\bigr) \geq(1-2\delta)\Bigl(\mathit{OPT}-\mathsf{rwd}_{O^*-\mathsf{SBkt}^*_{\ell_1}}\bigl(O^*\cap\mathsf{SBkt}^*_{\ell_1}\bigr)\Bigr) \\ & \geq(1-2\delta)(1-\varepsilon)\mathit{OPT}. \qedhere \end{align}\] ◻
As before, we assume that we know \(\ell^{\mathsf{last}}\), and \(\widetilde{\mathsf{opt}}\) satisfying \(\widetilde{\mathsf{opt}}\leq\mathit{OPT}\leq(1+\varepsilon)\widetilde{\mathsf{opt}}\). We also assume that we know \(\ell_1\) and the elements \(o_1,o_2,\ldots,o_{\ell_1}\). Recall that \(\Delta=\frac{\varepsilon\cdot\widetilde{\mathsf{opt}}}{|\mathsf{POS}|}\) and \(\mathcal{A}\) is a deterministic \(\beta\)-approximation algorithm for cardinality-constrained submodular maximization. We now define the following collection of reward sequences. \[\mathcal{R}:= \Bigl\{\widetilde{\mathsf{rwd}}\in\mathbb{R}_{+}^{\mathsf{POS}'-\llbracket{\ell_1}\rrbracket}:\;\widetilde{\mathsf{rwd}}_\ell\text{ is a multiple of \Delta}\;\;\forall \ell\in\mathsf{POS}'-\llbracket{\ell_1}\rrbracket, \quad \sum_{\ell\in\mathsf{POS}'-\llbracket{\ell_1}\rrbracket}\widetilde{\mathsf{rwd}}_\ell\leq\Bigl(1+\tfrac{1}{\varepsilon}\Bigr)\Delta\cdot|\mathsf{POS}|\Bigr\}\] We have \(|\mathcal{R}|\leq 2^{O(|\mathsf{POS}|/\varepsilon)}=n^{O(1/\delta^2)}\). As mentioned earlier, for each reward-sequence, we run the earlier iterative procedure but stop when we reach index \(\ell_1\). For each \(\widetilde{\mathsf{rwd}}\in\mathcal{R}\), we do the following. Set \(i_{\mathsf{next}(\ell^{\mathsf{last}})}:=n\). Initialize \(A_{\mathsf{next}(\ell^{\mathsf{last}})}:=\{o_1,\ldots,o_{\ell_1}\}\), and \(I:=\emptyset\). We repeat the following steps for each \(\ell\in\mathsf{POS}'-\llbracket{\ell_1}\rrbracket\) considered in decreasing order. Let \(i\) be the largest index smaller than \(i_{\mathsf{next}(\ell)}\) such that for the cardinality-constrained submodular maximization problem with ground set \(\{i+1,\ldots,i_{\mathsf{next}(\ell)}\}\), submodular function \(\mathsf{rwd}_{A_{\mathsf{next}(\ell)}}(\cdot)\), and cardinality bound \(\ell-\mathsf{prev}(\ell)\), \(\mathcal{A}\) returns a set \(T\) satisfying \(\mathsf{rwd}_{A_{\mathsf{next}(\ell)}}(T)\geq\widetilde{\mathsf{rwd}}_\ell\). Set \(A_\ell\leftarrow T\cup A_{\mathsf{next}(\ell)}\), \(i_\ell:=i\), and \(I\leftarrow I\cup\{i_\ell\}\). We add \(A_1\) to our collection of solutions.
From the collection of solutions computed, we return the feasible solution that attains maximum reward.
The analysis mimics the earlier analysis. Assume we have the correct \(\ell^{\mathsf{last}}\), \(\widetilde{\mathsf{opt}}\), \(\ell_1\) values, and the set \(\{o_1,\ldots,o_{\ell_1}\}\). The target reward sequence and nested-set sequence are now defined as follows, mimicking the modified algorithm. Recall that \(\widetilde{O}_\ell=\widetilde{O}\cap\mathsf{SBkt}^*_\ell\) for \(\ell\in\mathsf{POS}'\).
Set \(\overline{i}_{\mathsf{next}(\ell^{\mathsf{last}})}:=n\). Initialize \(B_{\mathsf{next}(\ell^{\mathsf{last}})}:=\{o_1,\ldots,o_{\ell_1}\}\), \(\overline{I}:=\emptyset\). For each \(\ell\in\mathsf{POS}'-\llbracket{\ell_1}\rrbracket\) considered in decreasing order, we do the following. Set \(\overline{\mathsf{rwd}}_{\ell}:=\Delta\cdot\bigl\lfloor\frac{\mathsf{rwd}_{B_{\mathsf{next}(\ell)}}(\widetilde{O}_{\ell})}{\beta\Delta}\bigr\rfloor\). Let \(i\) be the largest index smaller than \(\overline{i}_{\mathsf{next}(\ell)}\) such that for the cardinality-constrained submodular maximization problem with ground set \(\{i+1,\ldots,\overline{i}_{\mathsf{next}(\ell)}\}\), submodular function \(\mathsf{rwd}_{B_{\mathsf{next}(\ell)}}(\cdot)\), and cardinality bound \(\ell-\mathsf{prev}(\ell)\), \(\mathcal{A}\) returns a set \(T\) such that \(\mathsf{rwd}_{B_{\mathsf{next}(\ell)}}(T)\geq\overline{\mathsf{rwd}}_\ell\). Update \(B_\ell\leftarrow T\cup B_{\mathsf{next}(\ell)}\), \(\overline{i}_\ell:=i\), \(\overline{I}\leftarrow\overline{I}\cup\{\overline{i}_\ell\}\).
Let \(B:=B_{\mathsf{next}(\ell_1)}\). Essentially, Lemmas 13–16 continue to hold, with the only cosmetic changes in some of the statements and proofs is that we replace \(\mathsf{POS}'-\{0\}\) by \(\mathsf{POS}'-\llbracket{\ell_1}\rrbracket\), and we invoke Lemma 17 (b) in place of Lemma 11 (b). We point out these cosmetic changes, but omit re-proving the statements.
Analogous to Lemma 13, we now have that \(B\) and \(\overline{I}\) satisfy the requirements of Lemma 17 (b). Lemma 14 holds as is. Similar to Lemma 15, we now have that \((\overline{\mathsf{rwd}}_\ell)_{\ell\in\mathsf{POS}'-\llbracket{\ell_1}\rrbracket}\in\mathcal{R}\), and the analogue of Lemma 16 is that the (modified) algorithm returns \(\{B_\ell\}_{\ell\in\mathsf{POS}'-\llbracket{\ell}\rrbracket}\) on the input reward sequence \(\{\overline{\mathsf{rwd}}_\ell\}_{\ell\in\mathsf{POS}'-\llbracket{\ell_1}\rrbracket}\). Due to the improved bound on \(\mathsf{rwd}(\widetilde{O})\), we therefore obtain the following performance guarantee.
Theorem 19. The above algorithm returns a feasible solution obtaining reward at least \(\bigl(\frac{1-3\varepsilon}{\beta+1}-\varepsilon\bigr)\cdot\mathit{OPT}\)
Proof. By Lemma 14 and Lemma 18, we obtain reward at least \(\mathsf{rwd}(B)\geq\frac{\mathsf{rwd}(\widetilde{O})}{\beta+1}-\varepsilon\cdot\mathit{OPT}\geq\frac{(1-3\varepsilon)\mathit{OPT}}{\beta+1}-\varepsilon\cdot\mathit{OPT}\). ◻
Proof of Lemma 12. The multilinear extension of \(g\) is defined as the function \(G:[0,1]^n\mapsto\mathbb{R}_{+}\) given by \(G(x):=\sum_{S\subseteq[n]}g(S)\prod_{e\in S}x_e\prod_{e\notin S}(1-x_e)\). It is well-known that any \(x\in\mathcal{P}\) can be rounded to an integer point \(\widetilde{x}\in\mathcal{P}\) whose support is a subset of the support of \(x\), such that \(G(\widetilde{x})\geq G(x)\) [29]. Let \(\widetilde{x}=\chi^B\) be the rounded point corresponding to \(\chi^A/\rho\), so \(B\subseteq A\). Note that \(G(\chi^A/\rho)\) corresponds to the expected value of a random subset of \(A\) where we include each element of \(A\) independently with probability \(\frac{1}{\rho}\). It is known that this expected value is at least \(g(A)/\rho\); this holds even for subadditive \(g\) (see [30], Propositions 2.2 and 2.3). Putting these facts together gives \(g(B)=G(\widetilde{x})\geq G(\chi^A/\rho)\geq g(A)/\rho\). ◻
Recall that submodular norm-budgeted \(\mathsf{Max}\mathsf{GAP}\)(\(\mathsf{SubmodNBMaxGAP}\)) on related machines is the generalization of \(\mathsf{NormBudgMaxGAP}\) on related machines, where the reward \(\mathsf{rwd}(T)\) from a set \(T\subseteq J\) of jobs is given by a monotone, submodular function \(\mathsf{rwd}:2^J\mapsto\mathbb{R}_{+}\) We devise a \(12.91\)-approximation algorithm for \(\mathsf{SubmodNBMaxGAP}\). We emphasize that we have not attempted to optimize this factor, preferring simplicity of exposition instead.
Theorem 20. There is a \(\bigl(5\cdot\frac{2e-1}{e-1}+\varepsilon\bigr)\approx(12.91+\varepsilon)\)-approximation algorithm for \(\mathsf{SubmodNBMaxGAP}\) on related machines.
This result is built from two components. We first observe that the reduction described in Section 5 also applies with a submodular reward function. Specifically Theorem 8 generalizes to this setting, where the (submodular) norm-budgeted matching problem that we need to now solve is a constrained version of \(\mathsf{SubmodNBMaxGAP}\) where we can assign at most one job per machine. Instead of re-proving the version of Theorem 8 for submodular rewards, we point out the key place in the proof where the arguments still go through with a submodular reward function. We assume we have a bicriteria \((\rho,\gamma)\)-approximation for \(\mathsf{SubmodNBMaxGAP}\) on related machines. For simplicity, we assume here that \(\gamma\) is an integer, but we remark that with more care, the entirety of Theorem 8 extends to the submodular-rewards setting. Recall that in the proof of Theorem 8, we create another instance \(\mathcal{I}'\) of the same problem (i.e., \(\mathsf{SubmodNBMaxGAP}\) on related machines), but with a reduced budget \(B/\gamma\), and an instance \(\mathcal{I}''\) of \(\mathsf{SubmodNBMaxGAP}\) on related machines, where we have the additional constraint that at most one job can be assigned to any machine. We upper bound the optimal value \(\mathit{OPT}\) of the original instance by \(\gamma\mathit{OPT}_{\mathcal{I}'}+(\gamma-1)\mathit{OPT}_{\mathcal{I}''}\) by partitioning the job-set \(O^*\) corresponding to an optimal solution to \(\mathcal{I}\) to create \(\gamma\) feasible solutions to \(\mathcal{I}'\) and \((\gamma-1)\) feasible solutions to \(\mathcal{I}''\). Observe that if the reward-function \(\mathsf{rwd}(.)\) is subadditive, i.e., \(\mathsf{rwd}(S\cup T)\leq\mathsf{rwd}(S)+\mathsf{rwd}(T)\), as is the case with a submodular function, we still obtain the same upper bound \(\mathit{OPT}\leq\gamma\mathit{OPT}_{\mathcal{I}'}+(\gamma-1)\mathit{OPT}_{\mathcal{I}''}\). Given this, the rest of the proof goes through as is, and we thus obtain a \(\bigl(\gamma\rho+(\gamma-1)\alpha\bigr)\)-approximation, where \(\alpha\) is the approximation factor for the at-most-one-job-per-machine variant of \(\mathsf{SubmodNBMaxGAP}\) on related machines.
We discuss the setting of identical machines separately, as the underlying arguments are simpler and more direct here. Notice that with identical machines, the at-most-one-job-per-machine variant of \(\mathsf{SubmodNBMaxGAP}\) is precisely submodular norm-budgeted knapsack. So as a consequence of the above reduction, we can focus on developing a bicriteria approximation for \(\mathsf{SubmodNBMaxGAP}\) on identical machines.
We proceed to describe a simple such bicriteria approximation algorithm. Let \((J, m, \{p_j\}_{j\in J}, \mathsf{rwd}:2^J\mapsto\mathbb{R}_{+}, f:\mathbb{R}^m\mapsto\mathbb{R}_{+}, B)\) be an instance of \(\mathsf{SubmodNBMaxGAP}\) on identical machines. We may assume that \(f\) is normalized so that \(f(1,0,\ldots,0)=1\). Let \(\sigma^*:O^*\mapsto[m]\) be an optimal solution inducing the load vector \({{ \ifmmode \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \else \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{load}^*}}= \ifmmode \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma^*}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma^*}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma^*}})} \else \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma^*}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma^*}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma^*}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{load}}}({{\sigma^*}})\). Since we have identical machines, we may assume that \({{ \ifmmode \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \else \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{load}^*}}={{ \ifmmode \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \else \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{load}^*}}^{{\:\!\downarrow}}\). Let \(\mathsf{POS}=\mathsf{POS}_{m,1}\), i.e., it consists of powers of \(2\) up to (and potentially including) \(m\). Fix some \(\varepsilon>0\), \(\varepsilon\leq 0.33\). In polynomial time, we can guess a vector \(\vec{t}\in\mathbb{R}_{+}^\mathsf{POS}\) such that \({{ \ifmmode \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \else \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{load}^*}}_\ell\leq t_\ell\leq (1+\varepsilon){{ \ifmmode \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \else \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{load}^*}}_\ell+\kappa\) for all \(\ell\in\mathsf{POS}\), where \(\kappa=\varepsilonB/m\).
Our bicriteria approximation algorithm proceeds as follows. Initialize \(A\leftarrow\emptyset\). Recall that for \(S,T\subseteq J\), \(\mathsf{rwd}_S(T):=\mathsf{rwd}(S\cup T)-\mathsf{rwd}(S)\) is the incremental reward of adding \(T\) to \(S\). For all \(\ell\in\mathsf{POS}\), considered in increasing order, we do the following. We approximately solve a knapsack-constrained submodular maximization problem with ground set \(\{j\notin A: p_j\leq t_\ell\}\), submodular function \(\mathsf{rwd}_A(.)\), \(p_j\)’s as the item sizes, and knapsack budget \(\bigl(\mathsf{next}(\ell)-\ell\bigr)t_\ell\). It is known that knapsack-constrained submodular maximization admits a \(\frac{e}{e-1}\)-approximation [31]. Let \(T\) be the set of jobs returned. We schedule the jobs in \(T\) on machines \(\{\ell,\ldots,\mathsf{next}(\ell)-1\}\) so that the load assigned to each machine is at most \(2t_\ell\). Since we have identical machines and each job in \(T\) has \(p_j\leq t_\ell\), this is always possible. We update \(A\leftarrow A\cup T\) (and continue with the next index in \(\mathsf{POS}\)).
Let \(\beta=\frac{e}{e-1}\). Let \(\sigma\) be the assignment so obtained. Note that by design, \(\ifmmode \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma}})} \else \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{load}}}({{\sigma}})\leq 2t^{\mathsf{exp}}\), so \(f( \ifmmode \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma}})} \else \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{load}}}({{\sigma}}))\leq 2f(t^{\mathsf{exp}})\leq 2(1+\varepsilon)f({{ \ifmmode \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \else \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{load}^*}})+\varepsilonB\) (Lemma 1 (b)), which is at most \(3B\). To lower bound the reward obtained, let \(O^*_\ell\subseteq O^*\) be the jobs assigned by \(\sigma^*\) to machines \(\ell,\ldots,\mathsf{next}(\ell)-1\), for \(\ell\in\mathsf{POS}\). Note that \(\{O^*_\ell\}_{\ell\in\mathsf{POS}}\) partitions \(O^*\). For any \(\ell\in\mathsf{POS}\) and any \(i\in\{\ell,\ldots,\mathsf{next}(\ell)-1\}\), we have \({{ \ifmmode \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \else \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{load}^*}}_i\leq t^{\mathsf{exp}}_i=t_\ell\), so \(p(O^*_\ell)\leq\bigl(\mathsf{next}(\ell)-\ell\bigr)t_\ell\) and \(p_j\leq t_\ell\) for all \(j\in O^*_\ell\). Let \(A_{\mathsf{prev}(\ell)}\) be the set \(A\) at the start of iteration \(\ell\) (with \(A_0:=\emptyset\)), and \(T_\ell\) be the set added in iteration \(\ell\). It follows that \(O^*_\ell-A_{\mathsf{prev}(\ell)}\) is a valid solution to the knapsack-constrained submodular maximization problem considered in iteration \(\ell\), and so \(\mathsf{rwd}_{A_{\mathsf{prev}(\ell)}}(T_\ell)\geq\frac{1}{\beta}\cdot\mathsf{rwd}_{A_{\mathsf{prev}(\ell)}}(O^*_\ell-A_{\mathsf{prev}(\ell)}) =\frac{1}{\beta}\cdot\mathsf{rwd}_{A_{\mathsf{prev}(\ell)}}(O^*_\ell)\). Similar to the proof of Lemma 14, this implies that for the final set \(A\) returned, we have \(\mathsf{rwd}(A)\geq\frac{\mathsf{rwd}(O^*)}{\beta+1}\).
Thus, the above algorithm is a \(\bigl(\frac{2e-1}{e-1},\,3\bigr)\)-approximation algorithm for \(\mathsf{SubmodNBMaxGAP}\) on identical machines. Combining this with the \(\bigl(\frac{2e-1}{e-1}+\varepsilon\bigr)\)-approximation algorithm for \(\mathsf{SubmodNBKnap}\) using the reduction of Theorem 8, yields the guarantee stated in Theorem 20 for identical machines.
Let \((J, m, \{p_j\}_{j\in J}, \{s_i\}_{i\in[m]}, \mathsf{rwd}:2^J\mapsto\mathbb{R}_{+}, f:\mathbb{R}^m\mapsto\mathbb{R}_{+}, B)\), be an instance of \(\mathsf{SubmodNBMaxGAP}\) on related machines, where \(s_i>0\) is the speed of machine \(i\), which fixes \(p_{ij}=p_j/s_i\) as the time taken to process job \(j\) on machine \(i\). We proceed in a roughly similar fashion as with identical machines. Order the machines so that \(s_1\geq s_2\geq\ldots\geq s_m\). One basic property that we utilize, which we sometimes refer to as the similarly-ordered property, is that given any assignment of jobs to machines, if we permute the assignment so that the work assigned to a machine is non-decreasing in its speed, then this does not increase the norm of the resulting load vector; see Lemma [wksort]. Thus, we may focus on assignments where the associated work-vector is similarly ordered as the speed vector. Again, let \(\beta=\frac{e}{e-1}\).
The at-most-one-job-per-machine problem is not quite \(\mathsf{SubmodNBKnap}\) now, but we nevertheless observe that the \((\beta+1)\)-approximation guarantee of our algorithm for \(\mathsf{SubmodNBKnap}\) carries over to this problem due to the fact that our algorithm returns a solution whose size-weighted characteristic vector is coordinate-wise at most that of the optimal solution.
We therefore focus (as before) on obtaining a bicriteria approximation for \(\mathsf{SubmodNBMaxGAP}\) on related machines. We do so by proceeding along similar lines as with identical machines, with two key differences: (1) instead of guessing the load vector induced by an optimal solution, we guess the work vector induced by a near-optimal solution, where the work on a machine is the total processing time of the jobs assigned to the machine; (2) we utilize a more-refined, coordinate-wise \((1+\varepsilon)\)-approximate, estimate of the work-vector of a structured near-optimal solution. Given such an estimate, as with identical machines, we solve a knapsack-constrained submodular-maximization problem to identify a set of jobs to assign to each group of machines having the same work-estimate. We argue that this yields a \(\bigl(\frac{2e-1}{e-1}+\varepsilon,3\bigr)\)-approximation algorithm for \(\mathsf{SubmodNBMaxGAP}\) on related machines.
Combining these two ingredients using the reduction of Theorem 8 yields the guarantee stated in Theorem 20 for related machines.
Let \(\mathcal{I}''\) denote the instance where we are constrained to assign at most one job to any given machine.
Let \(O''\subseteq J\) be the jobs assigned by an optimal solution to \(\mathcal{I}''\).
Consider the \(\mathsf{SubmodNBKnap}\) instance “defined” by item-set \(J\), \(\{w_j=p_j\}_{j\in J}\) item-sizes, and \(\mathsf{rwd}:2^J\mapsto\mathbb{R}_{+}\) reward function; the norm \(f\) and the budget \(B\) will not be relevant. Notice that the algorithm we develop for \(\mathsf{SubmodNBKnap}\) in Section 7.1 does not really depend on \(f\) or \(B\) in that this information is only used at the end to select a suitable feasible solution from among a polynomial-size set of candidate solutions. Furthermore and more precisely, our algorithm for \(\mathsf{SubmodNBKnap}\) identifies a polynomial-size collection \(\mathcal{C}\subseteq 2^J\), and our analysis shows that for any \(O\subseteq J\), there is some set \(S\in\mathcal{C}\) satisfying \(\mathsf{rwd}(S)\geq\bigl(\frac{1}{\beta+1}-\varepsilon\bigr)\cdot\mathsf{rwd}(O)\) and \(\ifmmode \settoheight{\xvec@height}{{{w}}({S})} \settodepth{\xvec@depth}{{{w}}({S})} \settowidth{\xvec@width}{{{w}}({S})} \else \settoheight{\xvec@height}{{{w}}({S})} \settodepth{\xvec@depth}{{{w}}({S})} \settowidth{\xvec@width}{{{w}}({S})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({S})^{{\:\!\downarrow}}\leq \ifmmode \settoheight{\xvec@height}{{{w}}({O})} \settodepth{\xvec@depth}{{{w}}({O})} \settowidth{\xvec@width}{{{w}}({O})} \else \settoheight{\xvec@height}{{{w}}({O})} \settodepth{\xvec@depth}{{{w}}({O})} \settowidth{\xvec@width}{{{w}}({O})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({O})^{{\:\!\downarrow}}\).17 So taking \(O=O''\), this means that we can find in polynomial time some \(S\subseteq J\) such that \(\mathsf{rwd}(S)\geq\bigl(\frac{1}{\beta+1}-\varepsilon\bigr)\cdot\mathsf{rwd}(O'')\) and \((p_j)_{j\in S}^{{\:\!\downarrow}}\leq(p_j)_{j\in O''}^{{\:\!\downarrow}}\)
Let \(\sigma'':O''\mapsto[m]\) be the assignment where the \(i\)-th largest-size job in \(O''\) is assigned to the \(i\)-th fastest machine, for all \(i=1,\ldots,|O''|\). By the similarly-ordered property, we have \(f\bigl( \ifmmode \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma''}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma''}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma''}})} \else \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma''}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma''}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma''}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{load}}}({{\sigma''}})\bigr)\leq B\). Since \((p_j)_{j\in S}^{{\:\!\downarrow}}\leq(p_j)_{j\in O''}^{{\:\!\downarrow}}\), it follows that assigning the \(i\)-th largest-size job in \(S\) to the \(i\)-th fastest machine, for all \(i=1,\ldots,|S|\), yields a load vector that is coordinate-wise at most \(\ifmmode \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma''}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma''}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma''}})} \else \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma''}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma''}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma''}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{load}}}({{\sigma''}})\). Hence, we obtain a feasible solution to \(\mathcal{I}''\) obtaining reward at least \(\bigl(\frac{1}{\beta+1}-\varepsilon\bigr)\cdot\mathit{OPT}_{\mathcal{I}''}\).
Recall that we have \(s_1\geq \ldots\geq s_m\). Recall that for an assignment \(\sigma:A\mapsto[m]\), the associated work vector \(\ifmmode \settoheight{\xvec@height}{{{\mathsf{work}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\sigma}})} \else \settoheight{\xvec@height}{{{\mathsf{work}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\sigma}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{work}}}({{\sigma}})\) has coordinates \(\ifmmode \settoheight{\xvec@height}{{{\mathsf{work}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\sigma}})} \else \settoheight{\xvec@height}{{{\mathsf{work}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\sigma}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{work}}}({{\sigma}})_i:=p\bigl(\sigma^{-1}(i)\bigr)=\sum_{j\in A:\sigma(j)=i}p_j\) for all \(i\in[m]\). Let \(\sigma^*:O^*\mapsto[m]\) be an optimal solution inducing the work vector \({ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}= \ifmmode \settoheight{\xvec@height}{{{\mathsf{work}}}({{\sigma^*}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\sigma^*}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\sigma^*}})} \else \settoheight{\xvec@height}{{{\mathsf{work}}}({{\sigma^*}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\sigma^*}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\sigma^*}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{work}}}({{\sigma^*}})\). As discussed earlier, we may assume that \({ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}={ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}^{{\:\!\downarrow}}\).
Fix some \(0<\varepsilon\leq 0.33\), and some \(0<\delta<1\). Let \(\mathsf{POS}=POS_{m,\delta}\). It will not be enough to just estimate \({ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}_\ell\) for all \(\ell\in\mathsf{POS}\) because having \(\ifmmode \settoheight{\xvec@height}{{{\mathsf{work}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\sigma}})} \else \settoheight{\xvec@height}{{{\mathsf{work}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\sigma}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{work}}}({{\sigma}})_\ell=O({ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}_\ell)\) for all \(\ell\in\mathsf{POS}\), for an assignment \(\sigma\), does not imply that \(f\bigl( \ifmmode \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma}})} \else \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{load}}}({{\sigma}})\bigr)=O\bigl(f( \ifmmode \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma^*}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma^*}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma^*}})} \else \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma^*}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma^*}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma^*}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{load}}}({{\sigma^*}}))\bigr)\). So we proceed somewhat differently.
Let \(\ell_0\) be the smallest index in \(\mathsf{POS}\) that is at least \(\frac{2}{\delta^2}\). Let \(\mathsf{POS}_{>}=\{\ell\in\mathsf{POS}: \ell>\ell_0\}\cup\{m\}\). Define \(M_\ell:=\{\mathsf{prev}(\ell)+1,\ldots,\ell\}\) for all \(\ell\in\mathsf{POS}_{>}\). As noted in the proof of Lemma 18, we have \(|M_\ell|\leq(1+2\delta)\cdot|M_{\mathsf{prev}(\ell)}|\) for all \(\ell\in\mathsf{POS}_{>}\), \(\ell>\mathsf{next}(\ell_0)\). Also, \(|M_{\mathsf{next}(\ell_0)}|\leq 2\delta\cdot\ell_0\). Let \(\kappa=\varepsilon\cdot{ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}_1/m\). In polynomial time, we can guess a non-increasing vector \(\vec{t}\in\mathbb{R}_{+}^{[\ell_0]\cup\mathsf{POS}_{>}}\) such that \({ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}_\ell\leq t_\ell\leq\max\bigl\{(1+\varepsilon){ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}_\ell,\,\kappa\bigr\}\) for all \(\ell\in[\ell_0]\cup\mathsf{POS}_{>}\).
Initialize \(A\leftarrow\emptyset\). The algorithm has two phases.
For all \(\ell\in[\ell_0]\), considered in increasing order, approximately solve a knapsack-constrained submodular maximization problem with ground set \(\{j\notin A: p_j\leq t_{\ell}\}\), submodular function \(\mathsf{rwd}_A(.)\), \(p_j\)’s as the item sizes, and knapsack budget \(t_\ell\), to obtain a job-set \(T\).
We schedule the jobs in \(T\) on machine \(\ell\), if \(t_\ell>\kappa\), and on machine \(1\) otherwise. We update \(A\leftarrow A\cup T\) (and continue with the next index).
For all \(\ell\in\mathsf{POS}_{>}\), considered in increasing order, we approximately solve a knapsack-constrained submodular maximization problem with ground set \(\{j\notin A: p_j\leq t_{\ell}\}\), submodular function \(\mathsf{rwd}_A(.)\), \(p_j\)’s as the item sizes, and knapsack budget \(|M_\ell|\cdot t_\ell\), to obtain a job-set \(T\).
If \(t_\ell\leq\kappa\), we schedule the jobs in \(T\) on machine \(1\). Otherwise, we schedule the jobs in \(T\) on machines in \(M_\ell\) so that the work assigned to each machine is at most \(2t_\ell\). Since \(p_j\leq t_\ell\) for all \(j\in T\), and \(p(T)\leq|M_\ell|\cdot t_\ell\), this is always possible. We update \(A\leftarrow A\cup T\) (and continue with the next index in \(\mathsf{POS}_{>}\)).
For the analysis, we argue that there is a near-optimal solution that can be used to exhibit feasible job-sets for the submodular maximization problem solved in each iteration.
Lemma 19. There is a job-set \(\widetilde{O}\subseteq J\) and assignment \(\widetilde{\sigma}:\widetilde{O}\mapsto[m]\) satisfying the following properties. (a) \(\mathsf{rwd}(\widetilde{O})\geq(1-2\delta)\mathit{OPT}\); (b) \(\ifmmode \settoheight{\xvec@height}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \else \settoheight{\xvec@height}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{work}}}({{\widetilde{\sigma}}})_i\leq{ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}_i\) for all \(i\in[\ell_0]\); and (c) \(\ifmmode \settoheight{\xvec@height}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \else \settoheight{\xvec@height}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{work}}}({{\widetilde{\sigma}}})_i\leq{ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}_\ell\) for all \(i\in M_\ell\) and all \(\ell\in\mathsf{POS}_{>}\).
We prove Lemma 19 shortly, but first we show that this implies that the above algorithm has the desired bicriteria approximation guarantee for \(\mathsf{SubmodNBMaxGAP}\) on related machines.
Let \(\sigma\) be the assignment returned by the algorithm. By design, the total work assigned to each machine \(i\in[m]\) is at most: \[\begin{cases} t_1+m\kappa\leq(1+2\varepsilon){ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}_1; & \text{if i=1} \\ t_i\leq(1+\varepsilon){ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}_i; & \text{if i\in[\ell_0] and t_i>\kappa}; \\ 2t_{\ell}\leq 2(1+\varepsilon){ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}_{\ell}\leq 2(1+\varepsilon){ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}_i; \quad & \text{if i\in M_\ell, \ell\in\mathsf{POS}_{>}, and t_\ell>\kappa} \\ 0; & \text{otherwise}. \end{cases}\] So \(\ifmmode \settoheight{\xvec@height}{{{\mathsf{work}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\sigma}})} \else \settoheight{\xvec@height}{{{\mathsf{work}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\sigma}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{work}}}({{\sigma}})\leq 3\cdot{ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}\), and therefore \(f( \ifmmode \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma}})} \else \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{load}}}({{\sigma}}))\leq 3f( \ifmmode \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma^*}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma^*}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma^*}})} \else \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma^*}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma^*}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma^*}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{load}}}({{\sigma^*}}))\leq 3B\).
We now lower bound the reward obtained. Recall that we have a \(\beta\)-approximation for knapsack-constrained submodular maximization, where \(\beta=\frac{e}{e-1}\). For \(\ell\in[\ell_0]\cup\mathsf{POS}_{>}\), let \(T_\ell\) be the set of jobs added to \(A\) in iteration \(\ell\), i.e., the iteration when we consider index \(\ell\). Let \(\widetilde{O}\), \(\widetilde{\sigma}\) be as given by Lemma 19.
For \(\ell\in[\ell_0]\), let \(\widetilde{O}_\ell\subseteq\widetilde{O}\) be the jobs assigned by \(\widetilde{\sigma}\) to machine \(\ell\). We have \(p(\widetilde{O}_\ell)\leq{ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}_\ell\leq t_\ell\), so if \(A'\) is the set \(A\) at the start of iteration \(\ell\), then \(\widetilde{O}_\ell-A'\) is a valid solution to the knapsack-constrained submodular maximization problem considered in iteration \(\ell\). For \(\ell\in\mathsf{POS}_{>}\), let \(\widetilde{O}_\ell\subseteq\widetilde{O}\) be the jobs assigned by \(\widetilde{\sigma}\) to machines in \(M_\ell\). For any \(i\in M_\ell\), we have \(\ifmmode \settoheight{\xvec@height}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \else \settoheight{\xvec@height}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{work}}}({{\widetilde{\sigma}}})_i\leq{ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}_\ell\leq t_\ell\). So \(p(\widetilde{O}_{\ell})\leq|M_\ell|\cdot t_\ell\) and \(p_j\leq t_\ell\) for all \(j\in\widetilde{O}_{\ell}\). So again letting \(A'\) be the set \(A\) at the start of iteration \(\ell\), it follows that \(\widetilde{O}_\ell-A'\) is a valid solution to the knapsack-constrained submodular maximization problem considered in iteration \(\ell\).
In both cases, we therefore obtain that \(\mathsf{rwd}_{A'}(T_\ell)\geq\frac{1}{\beta}\cdot\mathsf{rwd}_{A'}(\widetilde{O}_\ell)\). Noting also that the \(\widetilde{O}_\ell\) sets, where \(\ell\) ranges over \([\ell_0]\cup\mathsf{POS}_{>}\), partition \(\widetilde{O}\), this implies that that the final set \(A\) satisfies \(\mathsf{rwd}(A)\geq\frac{\mathsf{rwd}(\widetilde{O})}{\beta+1}\geq\frac{1-2\delta}{\beta+1}\cdot\mathit{OPT}\). Thus, the above algorithm is a \(\bigl(\frac{2e}{e-1}+O(\delta),\,3\bigr)\)-approximation algorithm.
We utilize the following claim in proving Lemma 19.
Claim 21. Let \(g:2^{[n]}\mapsto\mathbb{R}_{+}\) be a monotone, submodular function. Let \(S\subseteq[n]\) be partitioned as \(T_1\cup\ldots\cup T_r\) for some \(r\geq 1\). Let \(a\in\{0,1,\ldots,r\}\). There is an index-set \(I\subseteq[r]\) with \(|I|=a\) such that \(g\bigl(\bigcup_{q\in I}T_q\bigr)\geq\frac{a}{r}\cdot g(S)\).
Proof. If \(a=0\), the statement trivially holds for \(I=\emptyset\). So suppose \(a\geq 1\). The claim follows from the fractional-cover property of submodular functions (and more generally, XOS functions), which states that \[\Bigl(\min\;\sum_{C\subseteq S}g(C)x_C \quad \text{s.t.} \quad \sum_{C\subseteq S}x_C\geq 1\;\;\forall e\in S, \quad x\geq 0\Bigr) \geq g(S).\] It follows that \[\frac{1}{\binom{r-1}{a-1}}\cdot\sum_{I\subseteq[r]: |I|=a}g\bigl(\bigcup_{q\in I}T_q\bigr)\geq g(S)\] which implies that there is some \(I\subseteq[r]\) with \(|I|=a\) such that \(g\bigl(\bigcup_{q\in I}T_q\bigr)\geq g(S)\cdot\frac{\binom{r-1}{a-1}}{\binom{r}{a}} =g(S)\cdot\frac{a}{r}\). ◻
Proof of Lemma 19. Let \(M_{\ell_0}:=[\ell_0]\). For any set \(I\subseteq[m]\) of machines, we use \(O^*_I\) to denote the set of jobs assigned by \(\sigma^*\) to machines in \(I\); we abbreviate \(O^*_{\{i\}}\) to \(O^*_i\) for \(i\in[m]\). Thus, \(p(O^*_i)={ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}_i\) for all \(i\in[m]\). Recall that \({ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}={ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}^{{\:\!\downarrow}}\).
We modify \(O^*\) and \(\sigma^*\) by dropping some jobs, and moving jobs from some machines in \(M_\ell\) to machines in \(M_{\mathsf{prev}(\ell)}\) for all \(\ell\in\mathsf{POS}_{>}\), so as to reduce the total work assigned to machines in \(M_\ell\) to at most \({ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}_\ell\).
Initialize \(R\leftarrow\emptyset\). Consider indices \(\ell\in\{\ell_0\}\cup\mathsf{POS}_{>}\) in increasing order, and do the following.
If \(\ell=\ell_0\), let \(H_\ell\) be the index-set \(I\) obtained by applying Claim 21 to the submodular function \(\mathsf{rwd}(\cdot)\), taking \(S=O^*_{M_\ell}\) with the partition \(\{O^*_i\}_{i\in M_\ell}\), and \(a=|M_{\ell_0}|-|M_{\mathsf{next}(\ell_0)}|\geq(1-2\delta)\cdot|M_{\ell_0}|\).
We drop the jobs assigned by \(\sigma^*\) to machines in \(M_\ell-H_\ell\), thus freeing up these machines.
If \(\ell=\mathsf{next}(\ell_0)\), set \(H_\ell=M_\ell\). For each machine \(i\in H_\ell\), we move the jobs in \(O^*_i\) to a distinct machine in \(M_{\ell_0}-H_{\ell_0}\); note that this is well defined since \(|M_{\ell_0}|-|H_{\ell_0}|=|M_{\mathsf{next}(\ell_0)}|\). We thus free up all the machines in \(M_\ell\).
For all other \(\ell\), let \(H_\ell\) be the index-set \(I\) obtained by applying Claim 21 to the submodular function \(\mathsf{rwd}_R(\cdot)\), taking \(S=O^*_{M_\ell}\) with the partition \(\{O^*_i\}_{i\in M_\ell}\), and \(a=|M_{\mathsf{prev}(\ell)}|\geq\frac{|M_\ell|}{1+2\delta}\geq(1-2\delta)\cdot|M_\ell|\).
We drop the jobs assigned by \(\sigma^*\) to machines in \(M_\ell-H_\ell\). For each machine \(i\in H_\ell\), we move the jobs in \(O^*_i\) to a distinct machine in \(M_{\mathsf{prev}(\ell)}\). This is well defined since \(|H_\ell|=|M_{\mathsf{prev}(\ell)}|\) (and note that all machines in \(M_{\mathsf{prev}(\ell)}\) were freed up in the previous iteration). After this movement, all machines in \(M_\ell\) are free.
We set \(R\leftarrow R\cup O^*_{H_\ell}\) and continue to the next index.
Intuitively, for all \(\ell\in\{\ell_0\}\cup\mathsf{POS}_{>}\), \(H_\ell\) is a suitable subset of machines from \(M_\ell\) such that the jobs assigned by \(\sigma^*\) to these machines gather large incremental reward.
For \(\ell\in\{\ell_0\}\cup\mathsf{POS}_{>}\), let \(R_\ell\) be the set \(R\) at the end of the iteration when index \(\ell\) was considered. Define \(R_{\mathsf{prev}(\ell_0)}:=\emptyset\) for notational convenience. Let \(\widetilde{O}=\bigcup_{\ell\in\{\ell_0\}\cup\mathsf{POS}_{>}}O^*_{H_\ell}\), which is the set \(R\) after all indices in \(\{\ell_0\}\cup\mathsf{POS}_{>}\) have been considered, and \(\widetilde{\sigma}\) be the modified assignment obtained by the above iterative process. From the guarantee of Claim 21, we have \[\mathsf{rwd}_{R_{\mathsf{prev}(\ell)}}\bigl(O^*_{H_{\ell}}\bigr)\geq(1-2\delta)\cdot\mathsf{rwd}_{R_{\mathsf{prev}(\ell)}}\bigl(O^*_{M_\ell}\bigr) \qquad \text{for all }\ell\in\{\ell_0\}\cup\mathsf{POS}_{>}.\] (This holds also for index \(\ell=\mathsf{next}(\ell_0)\), where do not utilize Claim 21.) Summing up these inequalities yields \(\mathsf{rwd}(\widetilde{O})\) on the LHS. For the RHS, observe that \(R_{\mathsf{prev}(\ell)}\subseteq\bigcup_{r\in\{\ell_0\}\cup\mathsf{POS}_{>}:\, r<\ell}O^*_{M_r}\); so using submodularity and the fact that \(\{O^*_{M_\ell}\}_{\ell\in\{\ell_0\}\cup\mathsf{POS}_{>}}\) partitions \(O^*\), we obtain that the RHS is at least \((1-2\delta)\mathsf{rwd}(O^*)\). Thus, \(\mathsf{rwd}(\widetilde{O})\geq(1-2\delta)\mathit{OPT}\), proving part (a).
For part (b), under the assignment \(\widetilde{\sigma}\), a machine \(i\in M_{\ell_0}\) either retains the job-set \(O^*_i\), or is assigned the job-set \(O^*_{i'}\) for some machine \(i'\in M_{\mathsf{next}(\ell_0)}\). In the latter case, since \(i'>i\), we have \(\ifmmode \settoheight{\xvec@height}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \else \settoheight{\xvec@height}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{work}}}({{\widetilde{\sigma}}})_i=p(O^*_{i'})\leq p(O^*_i)={ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}_i\).
For part (c), consider \(\ell\in\mathsf{POS}_{>}\) and \(i\in M_\ell\). Then, under \(\widetilde{\sigma}\), machine \(i\) is either assigned jobs in \(O^*_{i'}\) for some \(i'\in M_{\mathsf{next}(\ell)}\), or no jobs at all (for example, if \(\ell\) is the last index in \(\mathsf{POS}_{>}\)). So we have \(\ifmmode \settoheight{\xvec@height}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \else \settoheight{\xvec@height}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{work}}}({{\widetilde{\sigma}}})_i\leq\max_{i'\in M_{\mathsf{next}(\ell)}}{ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}_{i'}\leq{ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}_\ell\). ◻
For the special case of \(\mathsf{Top}_{\ell}\) norms, we show that one can derive approximation guarantees in a simpler fashion, by reducing the norm-budgeted packing problem to one with a sum- budget constraint and/or one with max- budget constraint. In this section only, we refer to the \(\ell_1\)-norm as \(\mathsf{sum}\)-norm, and the \(\ell_\infty\)-norm as \(\mathsf{max}\)-norm (to avoid any confusion with the \(\ell\) in \(\mathsf{Top}_{\ell}\) norm).
Theorem 22. Let \(\mathcal{I}=\bigl([n],\mathcal{S},\{\mathsf{rwd}_e,w_e\}\}_{e\in[n]},\mathsf{Top}_{\ell},B\bigr)\) be an instance of a norm-budgeted packing problem involving a \(\mathsf{Top}_{\ell}\) norm, where the size-vector \(\ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})\) induced by a solution \(T\in\mathcal{S}\) is the size-weighted characteristic vector of \(T\). For \(t\geq 0\), let \(\mathcal{I}^{\mathsf{sum}}_t\) be the instance \(\bigl([n],\mathcal{S},\{\mathsf{rwd}_e,(w_e-t)^+\}\}_{e\in[n]},\mathsf{sum},B\bigr)\) involving the \(\mathsf{sum}\)-norm. Then, any \(\alpha\)-approximation algorithm for solving instances of the form \(\mathcal{I}^{\mathsf{sum}}_t\) can be used to obtain an \(\alpha\)-approximate solution to \(\mathcal{I}\).
Proof. This is an easy consequence of Theorem 34 (a). Letting \(O^*\in\mathcal{S}\) denote an optimal solution to \(\mathcal{I}\), we obtain that for some \(e^*\in O^*\), taking \(t^*=w_{e^*}\), we have \(\mathsf{Top}_{\ell}( \ifmmode \settoheight{\xvec@height}{{{w}}({O^*})} \settodepth{\xvec@depth}{{{w}}({O^*})} \settowidth{\xvec@width}{{{w}}({O^*})} \else \settoheight{\xvec@height}{{{w}}({O^*})} \settodepth{\xvec@depth}{{{w}}({O^*})} \settowidth{\xvec@width}{{{w}}({O^*})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({O^*}))=\ell t^*+\sum_{e\in O^*}(w_e-t^*)^+\). Thus, guessing this element \(e^*\), and solving (approximately) the sum-budget constrained problem \(\mathcal{I}^{\mathsf{sum}}_{t^*}\) yields the desired solution to \(\mathcal{I}\). ◻
This immediately implies that for \(\mathsf{Top}_{\ell}\)-norms, there is an FPTAS for \(\mathsf{NormBudgKnap}\), a PTAS for \(\mathsf{NormBudgMWIS}\) [23], [24], and a PTAS for \(\mathsf{NormBudgMatch}\) [23], [24].
For problems such as \(\mathsf{NormBudgMaxGAP}\), where the size-vector \(\ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})\) is obtained by aggregating some \(w_e\) values, we show that the \(\mathsf{Top}_{\ell}\)-norm-budgeted packing problem reduces to sum-budget constrained problem, and a norm-budgeted packing problem with the \(\ell_\infty\) norm. We assume that the norm-budgeted packing problem satisfies the following aggregation property: for any \(T\in\mathcal{S}\), each coordinate \(i\) of \(\ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})\) corresponds to a set \(S_i\subseteq T\) such that: (i) \(\ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})_i=w(S_i)\) for every coordinate \(i\), and the \(S_i\)-sets partition \(T\); and (ii) for any subset \(I\) of coordinates, the size-vector \(\ifmmode \settoheight{\xvec@height}{{{w}}({\bigcup_{i\in I}S_i})} \settodepth{\xvec@depth}{{{w}}({\bigcup_{i\in I}S_i})} \settowidth{\xvec@width}{{{w}}({\bigcup_{i\in I}S_i})} \else \settoheight{\xvec@height}{{{w}}({\bigcup_{i\in I}S_i})} \settodepth{\xvec@depth}{{{w}}({\bigcup_{i\in I}S_i})} \settowidth{\xvec@width}{{{w}}({\bigcup_{i\in I}S_i})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({\bigcup_{i\in I}S_i})\) of the solution \(\bigcup_{i\in I}S_i\) (which is in \(\mathcal{S}\)) is equal to \(\{ \ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})_i\}_{i\in I}\), modulo permutations of coordinates and padding with \(0\)s. For instance, \(\mathsf{NormBudgMaxGAP}\) satisfies this property, where \(S_i\) is the set of jobs assigned to machine \(i\) under \(T\).
Theorem 23. Let \(\mathcal{I}=\bigl([n],\mathcal{S},\{\mathsf{rwd}_e,w_e\}\}_{e\in[n]},\mathsf{Top}_{\ell},B\bigr)\) be an instance of a norm-budgeted packing problem involving a \(\mathsf{Top}_{\ell}\) norm, satisfying the above aggregation property. Let \(\mathcal{I}^{\mathsf{sum}}\) denote the \(\mathsf{sum}\)-norm budget constrained instance \(\bigl([n],\mathcal{S},\{\mathsf{rwd}_e,w_e\}\}_{e\in[n]},\mathsf{sum},B\bigr)\), and \(\mathcal{I}^{\mathsf{max}}\) denote the \(\mathsf{max}\)-norm budget constrained instance \(\bigl([n],\mathcal{S},\{\mathsf{rwd}_e,w_e\}\}_{e\in[n]},\mathsf{max},B/\ell\bigr)\). Given an \(\alpha\)-approximate solution \(T^{\mathsf{sum}}\) to \(\mathcal{I}^{\mathsf{sum}}\), and a \(\beta\)-approximate solution \(T^{\mathsf{max}}\) to \(\mathcal{I}^{\mathsf{max}}\), one can obtain an \((\alpha+\beta)\)-approximate solution to \(\mathcal{I}\).
Proof. This reduction is implicit in the work of [12]. Note that \(\mathsf{Top}_{\ell}( \ifmmode \settoheight{\xvec@height}{{{w}}({T^{\mathsf{sum}}})} \settodepth{\xvec@depth}{{{w}}({T^{\mathsf{sum}}})} \settowidth{\xvec@width}{{{w}}({T^{\mathsf{sum}}})} \else \settoheight{\xvec@height}{{{w}}({T^{\mathsf{sum}}})} \settodepth{\xvec@depth}{{{w}}({T^{\mathsf{sum}}})} \settowidth{\xvec@width}{{{w}}({T^{\mathsf{sum}}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T^{\mathsf{sum}}}))\leq\bigl\| \ifmmode \settoheight{\xvec@height}{{{w}}({T^{\mathsf{sum}}})} \settodepth{\xvec@depth}{{{w}}({T^{\mathsf{sum}}})} \settowidth{\xvec@width}{{{w}}({T^{\mathsf{sum}}})} \else \settoheight{\xvec@height}{{{w}}({T^{\mathsf{sum}}})} \settodepth{\xvec@depth}{{{w}}({T^{\mathsf{sum}}})} \settowidth{\xvec@width}{{{w}}({T^{\mathsf{sum}}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T^{\mathsf{sum}}})\bigr\|_1\leq B\), and \(\mathsf{Top}_{\ell}( \ifmmode \settoheight{\xvec@height}{{{w}}({T^{\mathsf{max}}})} \settodepth{\xvec@depth}{{{w}}({T^{\mathsf{max}}})} \settowidth{\xvec@width}{{{w}}({T^{\mathsf{max}}})} \else \settoheight{\xvec@height}{{{w}}({T^{\mathsf{max}}})} \settodepth{\xvec@depth}{{{w}}({T^{\mathsf{max}}})} \settowidth{\xvec@width}{{{w}}({T^{\mathsf{max}}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T^{\mathsf{max}}}))\leq\ell\cdot\mathsf{Top}_{1}( \ifmmode \settoheight{\xvec@height}{{{w}}({T^{\mathsf{max}}})} \settodepth{\xvec@depth}{{{w}}({T^{\mathsf{max}}})} \settowidth{\xvec@width}{{{w}}({T^{\mathsf{max}}})} \else \settoheight{\xvec@height}{{{w}}({T^{\mathsf{max}}})} \settodepth{\xvec@depth}{{{w}}({T^{\mathsf{max}}})} \settowidth{\xvec@width}{{{w}}({T^{\mathsf{max}}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T^{\mathsf{max}}}))\leq\ell\cdot\frac{B}{\ell}=B\). So \(T^{\mathsf{sum}}\) and \(T^{\mathsf{max}}\) are both feasible solutions to \(\mathcal{I}\). We claim that the better of the two solutions achieves an \((\alpha+\beta)\)-approximation.
Let \(O^*\) be an optimal solution to instance \(\mathcal{I}\), and \(\mathit{OPT}=\mathsf{rwd}(O^*)\) be the optimal value for instance \(\mathcal{I}\). Let \(\vec{o}= \ifmmode \settoheight{\xvec@height}{{{w}}({O^*})} \settodepth{\xvec@depth}{{{w}}({O^*})} \settowidth{\xvec@width}{{{w}}({O^*})} \else \settoheight{\xvec@height}{{{w}}({O^*})} \settodepth{\xvec@depth}{{{w}}({O^*})} \settowidth{\xvec@width}{{{w}}({O^*})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({O^*})\) be a vector in \(\mathbb{R}^k\), and let \(O^*_1,\ldots O^*_k\) be the partition of \(O^*\) such that \(\vec{o}_i=w(O^*_i)\) for all \(i\in[k]\). Let \(I=\bigl\{i\in[k]: \vec{o}_i>\frac{B}{\ell}\bigr\}\). Since \(\mathsf{Top}_{\ell}(\vec{o})\leq B\), we must have \(|I|\leq\ell\) and so \(\sum_{i\in I}\vec{o}_i\leq B\). So taking \(S=\bigcup_{i\in I}O^*_i\), we obtain that \(\ifmmode \settoheight{\xvec@height}{{{w}}({S})} \settodepth{\xvec@depth}{{{w}}({S})} \settowidth{\xvec@width}{{{w}}({S})} \else \settoheight{\xvec@height}{{{w}}({S})} \settodepth{\xvec@depth}{{{w}}({S})} \settowidth{\xvec@width}{{{w}}({S})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({S})=(\vec{o}_i)_{i\in I}\), and hence \(S\) is a feasible solution to \(\mathcal{I}^{\mathsf{sum}}\). Let \(S'=\bigcup_{i\in[k]-I}O^*_i\). Then, \(\ifmmode \settoheight{\xvec@height}{{{w}}({S'})} \settodepth{\xvec@depth}{{{w}}({S'})} \settowidth{\xvec@width}{{{w}}({S'})} \else \settoheight{\xvec@height}{{{w}}({S'})} \settodepth{\xvec@depth}{{{w}}({S'})} \settowidth{\xvec@width}{{{w}}({S'})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({S'})=(\vec{o}_i)_{i\in[k]-I}\), so by construction \(\mathsf{Top}_{1}( \ifmmode \settoheight{\xvec@height}{{{w}}({S'})} \settodepth{\xvec@depth}{{{w}}({S'})} \settowidth{\xvec@width}{{{w}}({S'})} \else \settoheight{\xvec@height}{{{w}}({S'})} \settodepth{\xvec@depth}{{{w}}({S'})} \settowidth{\xvec@width}{{{w}}({S'})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({S'}))\leq\frac{B}{\ell}\), and \(S'\) is a feasible solution to \(\mathcal{I}^{\mathsf{max}}\). It follows that \(\mathit{OPT}=\mathsf{rwd}(O^*)=\mathsf{rwd}(S)+\mathsf{rwd}(S')\leq\mathit{OPT}_{\mathcal{I}^{\mathsf{sum}}}+\mathit{OPT}_{\mathcal{I}^{\mathsf{max}}}\), where \(\mathit{OPT}_{\mathcal{I}^{\mathsf{sum}}}\) and \(\mathit{OPT}_{\mathcal{I}^{\mathsf{max}}}\) denote respectively the optimum values for the \(\mathcal{I}^{\mathsf{sum}}\) and \(\mathcal{I}^{\mathsf{max}}\) instances. Then \[\begin{align} \max\Bigl\{\mathsf{rwd}(T^{\mathsf{sum}}),\mathsf{rwd}(T^{\mathsf{max}})\Bigr\} & \geq\frac{\alpha}{\alpha+\beta}\cdot\mathsf{rwd}(T^{\mathsf{sum}})+\frac{\beta}{\alpha+\beta}\cdot\mathsf{rwd}(T^{\mathsf{max}}) \\ & \geq\frac{1}{\alpha+\beta}\cdot\bigl(\mathit{OPT}_{\mathcal{I}^{\mathsf{sum}}}+\mathit{OPT}_{\mathcal{I}^{\mathsf{max}}}\bigr)\geq\frac{\mathit{OPT}}{\alpha+\beta} \end{align}\] where the second inequality follows from the approximation guarantees of \(T^{\mathsf{sum}}\) and \(T^{\mathsf{max}}\). ◻
Theorem 23 yields an improved approximation guarantee of \(\bigl(\frac{2e}{e-1}+\varepsilon\bigr)\) for \(\mathsf{NormBudgMaxGAP}\) with \(\mathsf{Top}_{\ell}\) norms, since the min-sum budgeted problem is simply the standard knapsack problem, and the min-max budgeted problem is maximum-GAP for which there is an \(\frac{e}{e-1}\)-approximation [13].
We now describe a PTAS for \(\mathsf{NormBudgMaxGAP}\) on related machines (i.e., \((1+\varepsilon)\)-approximation for any \(\varepsilon>0\)). Recall that in the setting of related machines, we have \(p_{ij}=p_j/s_i\) for every machine \(i\in[m]\), job \(j\in J\), where \(s_i>0\) is the speed of machine \(i\) and \(p_j\) is the processing requirement of job \(j\), leading to \(p_{ij}=p_j/s_i\) as the time needed on machine \(i\) to process job \(j\). The setting of identical machines is the further special case where all speeds are \(1\). Recall that the special case of \(\mathsf{NormBudgMaxGAP}\) on identical machines where \(f\) is the \(\ell_\infty\) norm corresponds to the uniform multiple knapsack problem (\(\mathsf{MKP}\)), which is already strongly NP-hard; thus, our PTAS yields a tight complexity result for \(\mathsf{NormBudgMaxGAP}\) on related machines. Furthermore, \(\mathsf{NormBudgMaxGAP}\) on related machines with the \(\ell_\infty\) norm reduces to non-uniform \(\mathsf{MKP}\), wherein we seek to pack a maximum-reward set of jobs into \(m\) machines (or knapsacks or bins) with given capacities \(\{u_i\}_{i\in[m]}\); this can be cast as \(\mathsf{NormBudgMaxGAP}\) on related machines by taking \(u_i\) to be the speed of machine \(i\) and requiring that the \(\ell_\infty\)-norm of the load vector should be at most \(1\). Thus our PTAS for \(\mathsf{NormBudgMaxGAP}\) on related machines substantially generalizes the PTAS for non-uniform \(\mathsf{MKP}\) [14].
We may assume that \(p_j>0\) for all jobs, as we can always consider the smaller instance involving jobs \(j\) with \(p_j>0\), and then tag on the jobs with zero processing time (to any machine).
We begin by considering the setting of identical machines, as the algorithm here is simpler, and will serve to convey some of the ideas that we build upon in developing the PTAS for related machines (Section 9.2). We first give an overview. Note that if we knew the load-vector \({{ \ifmmode \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \else \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{load}^*}}\) of an optimal solution, then the problem reduces to selecting a maximum-reward set of jobs and assigning them to machines while staying within capacity \({{ \ifmmode \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \else \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{load}^*}}_i\) on machine \(i\). This is precisely non-uniform \(\mathsf{MKP}\), considered by [14], who devised a PTAS for this problem. While in \(\mathsf{MKP}\), one knows the capacities and one can utilize this information to gain suitable information about the job assignments, one significant challenge that we encounter is that we do not have this information, and do not have a “target vector” \({{ \ifmmode \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \else \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{load}^*}}\) to work with.
Instead, we will “guess” suitable features of a near-optimal load vector, and use this information along with some further enumeration to identify the assignments of a suitable set of jobs. We then consider a suitable convex program (see ?? ) to find a fractional job assignment that is consistent with this partial assignment and minimizes the norm of the resulting load vector, and the information we have gleaned will guarantee that the optimal value of this convex program is at most the norm budget. It turns out that one can give a (easily-computable) closed-form expression for the optimal value of this convex program and can find an optimal solution by solving a related LP (see Lemma 21). We then argue that this fractional assignment can be rounded to an integral assignment without violating the norm budget, and losing only a \((1-\varepsilon)\)-factor in the reward.
We now describe the PTAS in detail. Some of the steps of the PTAS involve some partial enumeration to obtain some information about a near-optimal solution. To keep exposition simple, we will assume that we have found (by enumeration) information consistent with a near-optimal solution. We will show that the entire enumeration can be done in polynomial time. To avoid cumbersome notation, we assume that \(\frac{1}{\varepsilon}\) is an integer. We also assume that \(\varepsilon\leq 0.25\).
We will utilize two useful results. Lemma 20 states an enumeration lemma that we will frequently use, which captures the enumeration process that was used for \(\mathsf{NormBudgKnap}\). Lemma 21 describes how one can extend an assignment of some jobs to a fractional assignment of other jobs so as to minimize the norm of the resulting load vector. For \(x\in\mathbb{R}\), we use \((x)^+\) to denote \(\max\{x,0\}\).
Lemma 20 (Enumeration lemma). Let \(a_1,a_2,\ldots,a_k\geq 0\) and \(\Gamma\geq 0\), be such that \(\sum_{r=1}^k a_r\leq\Gamma\). Suppose we have an estimate \(\mathsf{est}\) such that \(\Gamma\leq(1+\varepsilon)\mathsf{est}\), where \(\varepsilon>0\). Define \(\Delta=\frac{\varepsilon\cdot\mathsf{est}}{k}\). Consider the set \[\mathcal{R}:=\Bigl\{b\in\mathbb{R}_{+}^k:\quad b_r\text{ is a multiple of }\Delta\;\;\forall r\in[k], \quad\;\; \sum_{r=1}^kb_r\leq\Bigl(1+\tfrac{1}{\varepsilon}\Bigr)k\Delta\Bigr\}.\] Then, (a) \(|\mathcal{R}|\leq 2^{O(k/\varepsilon)}\) and elements in \(\mathcal{R}\) can be enumerated in \(2^{O(k/\varepsilon)}\) time; and (b) \(\mathcal{R}\) contains a tuple \((\widetilde{a}_1,\ldots,\widetilde{a}_k)\) satisfying \(a_r-\Delta\leq\widetilde{a}_r\leq a_r\) for all \(r\in[k]\), and \(\sum_{r=1}^k\widetilde{a}_r\geq\sum_{r=1}^k a_r-\varepsilon\cdot\mathsf{est}\).
We refer to this by saying that we can “guess” (underestimates of) \(a_1,\ldots,a_k\) up to cumulative error \(\varepsilon\cdot\mathsf{est}\) in time \(2^{O(k/\varepsilon)}\).
Lemma 21. Let \(J_1,J_2\subseteq J\) be disjoint job sets. Let \(\sigma:J_1\mapsto[m]\) and define \(\Lambda_i:=\sum_{j\in J_1:\sigma(j)=i}p_j\) for all \(i\in[m]\). Let \(I\subseteq[m]\). Consider the following convex program to assign the jobs in \(J_2\) fractionally to machines in \(I\) so as to minimize the norm of the resulting load vector. \[\min \;\;f(L_1,\ldots,L_m)\quad\;\text{s.t.} \quad\; \sum_{i\in I}x_{ij}\geq 1\;\;\;\forall j\in J_2, \quad L_i=\sum_{j\in J_2}p_jx_{ij}+\Lambda_i \;\;\;\forall i\in[m], \quad x\geq 0. \label{extncp}\qquad{(2)}\] Let \(z^*\) be the unique value \(z\in\mathbb{R}_{+}\) such that \(\sum_{i\in I}(z-\Lambda_i)^+=p(J_2)\). The optimal value of ?? is equal to \(f\bigl(\max\{\Lambda_i,z^*\}_{i\in[m]}\bigr)\) and any \(x^*\in\mathbb{R}_{+}^{I\times J_2}\) satisfying \(\sum_{i\in I}x^*_{ij}\geq 1\) for all \(j\in J_2\), and \(\sum_{j\in J_2}p_jx^*_{ij}\leq(z^*-\Lambda_i)^+\) for all \(i\in I\) yields an optimal solution to ?? .
We also utilize the following simple claim.
Claim 24. Let \(J_1, J_2\subseteq J\) be two job-sets such that \(\ifmmode \settoheight{\xvec@height}{{p}({J_1})} \settodepth{\xvec@depth}{{p}({J_1})} \settowidth{\xvec@width}{{p}({J_1})} \else \settoheight{\xvec@height}{{p}({J_1})} \settodepth{\xvec@depth}{{p}({J_1})} \settowidth{\xvec@width}{{p}({J_1})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {p}({J_1})\leq \ifmmode \settoheight{\xvec@height}{{p}({J_2})} \settodepth{\xvec@depth}{{p}({J_2})} \settowidth{\xvec@width}{{p}({J_2})} \else \settoheight{\xvec@height}{{p}({J_2})} \settodepth{\xvec@depth}{{p}({J_2})} \settowidth{\xvec@width}{{p}({J_2})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {p}({J_2})\), and \(\sigma_2:J_2\mapsto[m]\) be an assignment such that \(f( \ifmmode \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma_2}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma_2}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma_2}})} \else \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma_2}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma_2}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma_2}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{load}}}({{\sigma_2}}))\leq B\). Then, there is an assignment \(\sigma_1:J_1\mapsto[m]\) such that \(f( \ifmmode \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma_1}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma_1}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma_1}})} \else \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma_1}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma_1}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma_1}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{load}}}({{\sigma_1}}))\leq B\).
Proof. Let \(\pi:J_1\mapsto J_2\) be a one-to-one mapping such that \(p_j\leq p_{\pi(j)}\) for all \(j\in J_1\). Let \(\sigma_1\) be the assignment that assigns each \(j\in J_1\) to the machine \(\sigma_2(\pi(j))\). Then the load vector \(\ifmmode \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma_1}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma_1}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma_1}})} \else \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma_1}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma_1}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma_1}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{load}}}({{\sigma_1}})\) is coordinate-wise at most \(\ifmmode \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma_2}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma_2}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma_2}})} \else \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma_2}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma_2}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma_2}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{load}}}({{\sigma_2}})\), since \(\ifmmode \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma_1}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma_1}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma_1}})} \else \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma_1}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma_1}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma_1}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{load}}}({{\sigma_1}})_i=\sum_{j\in J_1: \sigma_2(\pi(j))=i}p_j\leq\sum_{j\in J_1:\sigma_2(\pi(j))=i}p_{\pi(j)}\leq \ifmmode \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma_2}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma_2}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma_2}})} \else \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma_2}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma_2}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma_2}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{load}}}({{\sigma_2}})_i\). Therefore, \(f( \ifmmode \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma_1}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma_1}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma_1}})} \else \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma_1}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma_1}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma_1}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{load}}}({{\sigma_1}}))\leq B\). ◻
Let \(\widetilde{\sigma}:A\mapsto[m]\) be a feasible assignment such that \(\ifmmode \settoheight{\xvec@height}{{{\mathsf{load}}}({{\widetilde{\sigma}}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\widetilde{\sigma}}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\widetilde{\sigma}}})} \else \settoheight{\xvec@height}{{{\mathsf{load}}}({{\widetilde{\sigma}}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\widetilde{\sigma}}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\widetilde{\sigma}}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{load}}}({{\widetilde{\sigma}}})^{{\:\!\downarrow}}\) is lexicographically smallest among all feasible assignments.18 Let \({\widetilde{\mathsf{load}}}= \ifmmode \settoheight{\xvec@height}{{{\mathsf{load}}}({{\widetilde{\sigma}}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\widetilde{\sigma}}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\widetilde{\sigma}}})} \else \settoheight{\xvec@height}{{{\mathsf{load}}}({{\widetilde{\sigma}}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\widetilde{\sigma}}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\widetilde{\sigma}}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{load}}}({{\widetilde{\sigma}}})\). Let \({\widetilde{\mathsf{load}}}_{\mathsf{min}}:=\min_{i\in[m]}{\widetilde{\mathsf{load}}}_i\) be the least load on any machine under \(\widetilde{\sigma}\). Let \(A_1\subseteq A=\{j\in A: p_j>{\widetilde{\ensuremath{\mathsf{load}}}}_{\mathsf{min}}\}\).
Let \({\widetilde{\mathsf{load}}}_{\mathsf{max}}:=\max\,\{{\widetilde{\mathsf{load}}}_i: i\in[m],\;\widetilde{\sigma}^{-1}(i)\cap A_1=\emptyset\}\) be the maximum load on any machine that is not assigned any job from \(A_1\) under \(\widetilde{\sigma}\). Utilizing an insight from [3], we can infer the following.
Claim 25.
Clearly, \(A_1\) comprises the largest \(|A_1|\) jobs in \(A\), so we may assume that we know \(A_1\). Let \(A_2=A-A_1\). Since all machines are identical, let us re-index the machines so that jobs in \(A_1\) are assigned to the first \(|A_1|\) machines (one job per machine). (Note that the load vector under this indexing need not be equal to \({\widetilde{\mathsf{load}}}^{{\:\!\downarrow}}\); it corresponds to \({\widetilde{\mathsf{load}}}\) under some permutation of coordinates.) Let \(I=\{|A_1|+1,|A_1|+2,\ldots,m\}\). So jobs in \(A_2\) are assigned by \(\widetilde{\sigma}\) to machines in \(I\). Let \({\widetilde{\mathsf{load}}}_{\mathsf{avg}}=\bigl(\sum_{i\in I}{\widetilde{\mathsf{load}}}_i\bigr)/|I|=p(A_2)/|I|\) be the average load on machines in \(I\). Note that we know \({\widetilde{\mathsf{load}}}_{\mathsf{avg}}\). Since \({\widetilde{\mathsf{load}}}_{\mathsf{avg}}\in\bigl[{\widetilde{\mathsf{load}}}_{\mathsf{min}},{\widetilde{\mathsf{load}}}_{\mathsf{max}}\bigr]\), by Claim 25 (b), we have that \({\widetilde{\mathsf{load}}}_{\mathsf{avg}}/2\leq{\widetilde{\mathsf{load}}}_{\mathsf{min}}\leq{\widetilde{\mathsf{load}}}_{\mathsf{avg}}\leq{\widetilde{\mathsf{load}}}_{\mathsf{max}}\leq 2\cdot{\widetilde{\mathsf{load}}}_{\mathsf{avg}}\).
We call a job \(j\in A_2\) large if \(p_j\geq\varepsilon\cdot{\widetilde{\mathsf{load}}}_{\mathsf{avg}}\), and small otherwise. We now consider two cases, depending on whether \(|I|\leq\frac{2}{\varepsilon^2}\), which we call a sparse instance, or whether \(|I|>\frac{2}{\varepsilon^2}\), which we call a dense instance.
We guess the assignments of the \(\frac{|I|}{\varepsilon}\) largest-reward jobs in \(A_2\). The time needed for this enumeration is \(\bigl(\frac{|I|}{\varepsilon}\bigr)^{|I|}=\bigl(\frac{1}{\varepsilon}\bigr)^{\operatorname{poly}(1/\varepsilon)}\). Let \(J_1\) consist of \(A_1\) and these \(\frac{|I|}{\varepsilon}\) jobs, whose assignments have been determined, and \(J_2\) be the remaining jobs in \(A\). (If \(J_2=\emptyset\), there is nothing more to be done, so suppose otherwise.) Observe that by design, we have \(\mathsf{rwd}_j\leq\frac{\mathsf{rwd}(J_1-A_1)}{|I|/\varepsilon}\leq\frac{\varepsilon}{|I|}\cdot\mathsf{rwd}(A_2)\) for all \(j\in J_2\).
We first find a fractional assignment \(x^*\) of jobs in \(J_2\) to machines in \(I\) by invoking Lemma 21, letting \(\sigma\) be the pre-determined assignment of jobs in \(J_1\). Let \(L^*\) be the corresponding load vector. Since \(\widetilde{\sigma}\) yields one possible feasible solution to the convex program ?? , we know that \(f(L^*)\leq B\).
We round \(x^*\) using \(\mathsf{GAP}\) rounding [32]. Let \(\widehat{\sigma}:A\mapsto[m]\) denote the assignment obtained by concatenating the resulting integer solution and \(\sigma\). Let \(\widehat J_i\subseteq A\) be the jobs assigned to machine \(i\) by \(\widehat{\sigma}\). By properties of \(\mathsf{GAP}\) rounding, we know that for each machine \(i\in I\), by removing at most one job \(j^*_i\in\widehat J_i\cap J_2\) with \(x^*_{ij}>0\), we can ensure that the load on \(i\) is at most \(L^*_i\). We adopt the convention that if \(p(\widehat J_i)\leq L^*_i\), then \(\{j^*_i\}=\emptyset\). We discard \(\{j^*_i\}_{i\in I}\) to obtain a feasible assignment, and return this solution. Note that since we discard at most \(|I|\) jobs from \(J_2\), we lose reward at most \(\varepsilon\cdot\mathsf{rwd}(A_2)\).
The dense-instance setting is more complicated. Here, we will first aim to determine the assignments of all large jobs in \(A_2\), then assign the remaining jobs by computing a fractional assignment using Lemma 21, and rounding this fractional assignment using \(\mathsf{GAP}\) rounding. To implement this plan, we will need to sparsify the instance to reduce the number of distinct types of large jobs, where type of a job denotes its (reward, size) tuple, and we will need to set aside some jobs that are assigned to “extra” machines. We will eventually argue that we can drop the extra machines and obtain a feasible assignment without sacrificing the reward by much.
Let \(A^{\mathsf{lrg}}\subseteq A_2\) be the large jobs in \(A_2\), let \(A^{\mathsf{sml}}=A_2-A^{\mathsf{lrg}}\) be the small jobs in \(A_2\). Note that \(|A^{\mathsf{lrg}}|\leq|I|/\varepsilon\) since the total load assigned to machines in \(I\) is \(|I|\cdot{\widetilde{\mathsf{load}}}_{\mathsf{avg}}=p(A_2)\geq p(A^{\mathsf{lrg}})\) and \(p_j\geq\varepsilon\cdot{\widetilde{\mathsf{load}}}_{\mathsf{avg}}\) for every \(j\in A^{\mathsf{lrg}}\). (If \(|A^{\mathsf{lrg}}|>|I|/\varepsilon\), then we declare failure; this can only happen if one of our guesses is incorrect.)
Sparsifying job sizes. We sparsify the instance by using a shifting idea used for bin packing and the multiple-knapsack problem [14], [33] so that there are only \(O\bigl(\frac{1}{\varepsilon^2}\bigr)\) distinct sizes of large jobs.
We consider jobs in \(A^{\mathsf{lrg}}\) in non-increasing order of size, and divide them into \(k=1+\frac{1}{\varepsilon^2}\) groups, where the first \(\frac{1}{\varepsilon^2}\) groups contain \(\bigl\lfloor\varepsilon^2|A^{\mathsf{lrg}}|\bigr\rfloor\) jobs, and the last group contains less than \(\frac{1}{\varepsilon^2}\) jobs. (If \(\varepsilon^2|A^{\mathsf{lrg}}|<1\), then the first \(\frac{1}{\varepsilon^2}\) groups are empty, and the last group contains all jobs in \(A^{\mathsf{lrg}}\).) We increase the size of every job in groups \(2,\ldots,k-1\) to the size of the largest job in that group, and move each job in the first group to a separate extra machine. This creates at most \(\varepsilon^2|A^{\mathsf{lrg}}|\leq\varepsilon\cdot|I|\) extra machines.
Let \(A'\) denote the jobs in groups \(2,\ldots,k\) with their (potentially) modified sizes. Note that jobs in \(A'\) now have at most \(\frac{2}{\varepsilon^2}\) distinct sizes. Let \(\widetilde{p}_j\geq p_j\) denote the modified size of every \(j\in A^{\mathsf{lrg}}\) (where \(\widetilde{p}_j=p_j\) if \(j\)’s size is unchanged). We will work with these modified sizes in order to assign the jobs in \(A'\), and then revert to the original job sizes. For all \(r=2,\ldots,k-1\), the space used by jobs in group \(r-1\) under assignment \(\widetilde{\sigma}\) can be used to accommodate the jobs in group \(r\) with their modified sizes. Thus, \(\widetilde{\sigma}\) can be used to obtain a feasible assignment \(A_1\cup A'\cup A^{\mathsf{sml}}\mapsto[m]\), where jobs in \(A_1\) are assigned as before to the first \(|A_1|\) machines and jobs in \(A'\) and \(A^{\mathsf{sml}}\) are assigned to machines in \(I\), and the load on each machine \(i\) (even under the modified sizes) is at most \({\widetilde{\mathsf{load}}}_i\). This may involve changing the \(\widetilde{\sigma}\)-assignments of some jobs in \(A'\); to avoid excessive notation, we continue to use \(\widetilde{\sigma}\), viewed now as an assignment \(A_1\cup A'\cup A^{\mathsf{sml}}\mapsto[m]\), to denote this modified feasible assignment.
Given the constant number of job sizes for jobs in \(A'\), it is possible to argue that by considering a polynomial number of candidate assignments of jobs in \(A'\) to machines in \(I\), one can find an assignment that is consistent with \(\widetilde{\sigma}\).
This is because there are at most a constant number (\(\bigl(\frac{2}{\varepsilon}\bigr)^{2/\varepsilon^2}\)) of possible \(A'\)-configurations, where an \(A'\)-configuration specifies how many jobs in \(A'\) of each size are assigned to a machine (in \(I\)) so that the total load assigned is at most \(2\cdot{\widetilde{\mathsf{load}}}_{\mathsf{avg}}\). To specify the \(A'\mapsto I\) assignment of jobs, we can guess, for each \(A'\)-configuration, how many machines in \(I\) are assigned that configuration; thus, the number of such candidate assignments is at most \(m^{O(1)}\) (where the \(O(1)\) term in the exponent is a function of \(\frac{1}{\varepsilon}\)). While this will suffice to obtain a PTAS here, with an eye towards extending things to the setting of related machines (where we can have up to \(O(\log m)\) speed classes and the above enumeration idea will not work), we proceed differently and reduce the number of \(A'\)-job assignments that we need to consider to a constant (depending on \(\varepsilon\)).
Sparsifying job rewards. We next use a similar shifting idea to reduce the number of distinct rewards of jobs in \(A'\) to \(O\bigl(\frac{1}{\varepsilon^3}\bigr)\). We consider jobs in \(A'\) in non-increasing order of reward and now divide them into \(k'=1+\frac{1}{\varepsilon^3}\) groups, where the first \(\frac{1}{\varepsilon^3}\) groups contain \(\bigl\lfloor\varepsilon^3|A'|\bigr\rfloor\) jobs, and the last group contains less than \(\frac{1}{\varepsilon^3}\) jobs. (Again, if \(\varepsilon^3|A'|<1\), then the last group is all of \(A'\) and all other groups are empty.) For every \(r=\frac{1}{\varepsilon}+1,\ldots,k'-1\), we reduce the reward of each job in group \(r\) to the smallest reward of a job in that group. We also move each job in the first \(\frac{1}{\varepsilon}\) groups to a separate extra machine. Let \(A''\subseteq A'\) denote the jobs in groups \(\frac{1}{\varepsilon}+1,\ldots,k'\). Let \(\widetilde{\mathsf{rwd}}_j\leq\mathsf{rwd}_j\) denote the modified reward of each job \(j\in A^{\mathsf{lrg}}\), where \(\widetilde{\mathsf{rwd}}_j=\mathsf{rwd}_j\) if \(j\)’s reward is unchanged.
Observe that we create at most \(\varepsilon^2|A'|\leq\varepsilon\cdot|I|\) extra machines, and jobs in \(A''\) now have at most \(\frac{2}{\varepsilon^3}\) distinct rewards. Moreover, the following claim shows that this reward-sparsification step does not incur much loss.
Claim 26. We have \(\widetilde{\mathsf{rwd}}(A')\geq(1-\varepsilon)\mathsf{rwd}(A')\).
Assigning jobs in \(A''\). At this point, we have assigned jobs in \(A^{\mathsf{lrg}}-A''\) to at most \(2\varepsilon\cdot|I|\) extra machines, one job per machine. Our next task is to find an assignment of jobs in \(A''\) to machines in \(I\) that is consistent with (the unknown assignment) \(\widetilde{\sigma}\). By steps [sizesparse] and [rewdsparse], jobs in \(A''\) correspond to at most \(\frac{4}{\varepsilon^5}\) distinct \((\widetilde{\mathsf{rwd}}_j,\widetilde{p}_j)\) tuples; we call \((\widetilde{\mathsf{rwd}}_j,\widetilde{p}_j)\) the type of job \(j\). (Note that jobs of the same type are indistinguishable.)
We know that every machine in \(I\) is assigned load at most \(2\cdot{\widetilde{\mathsf{load}}}_{\mathsf{avg}}\) by \(\widetilde{\sigma}\). A type configuration specifies an assignment of jobs in \(A''\) to a machine such that the total load assigned to it due to these jobs is at most \(2\cdot{\widetilde{\mathsf{load}}}_{\mathsf{avg}}\), by listing out how many jobs of each type are assigned to the machine. Let \(\mathcal{J}\) denote the collection of all type configurations. Since \(\widetilde{p}_j\geq\varepsilon\cdot{\widetilde{\mathsf{load}}}_{\mathsf{avg}}\) for every \(j\in A''\), we have \(|\mathcal{J}|\leq C=\bigl(\frac{2}{\varepsilon}\bigr)^{4/\varepsilon^5}\). Define the reward of a type configuration \(\zeta\) to be the reward obtained from the jobs assigned by that configuration; abusing notation, we denote this by \(\widetilde{\mathsf{rwd}}(\zeta)\). We say that a machine \(i\) uses a type configuration \(\zeta\) to mean that the \(A''\)-jobs assigned to \(i\) conform to \(\zeta\), i.e., the number of \(A''\)-jobs of each type assigned to \(i\) is as specified by \(\zeta\). We say that \(\widetilde{\sigma}\) uses a type configuration \(\zeta\) if it uses \(\zeta\) for some machine in \(I\). Ideally, we want to determine all the type configurations used by \(\widetilde{\sigma}\). We will settle for finding a set of type configurations to assign to machines in \(I\) that accrue total reward at least \(\widetilde{\mathsf{rwd}}(A'')-\varepsilon\mathit{OPT}\). For \(\zeta\in\mathcal{J}\), let \(N_{\zeta}\) denote the number of times \(\widetilde{\sigma}\) uses configuration \(\zeta\) for machines in \(I\). We apply Lemma 20 to guess the sequence \(\bigl\{N_{\zeta}\cdot\widetilde{\mathsf{rwd}}(\zeta)\}_{\zeta\in\mathcal{J}}\) up to cumulative error \(\varepsilon\cdot\widetilde{\mathsf{opt}}\) by taking \(\mathsf{est}=\widetilde{\mathsf{opt}}\). This takes time \(2^{O(C/\varepsilon)}\) (which is a constant). Define \(\widetilde{N}_{\zeta}\) to be the entry for configuration \(\zeta\) in the correct guessed sequence, divided by \(\widetilde{\mathsf{rwd}}(\zeta)\). Then, \(\widetilde{N}_{\zeta}\leq N_{\zeta}\) for all \(\zeta\in\mathcal{J}\), and \(\sum_{\zeta\in\mathcal{J}}\widetilde{N}_{\zeta}\cdot\widetilde{\mathsf{rwd}}(\zeta)\geq\sum_{\zeta\in\mathcal{J}}N_{\zeta}\cdot\widetilde{\mathsf{rwd}}(\zeta)-\varepsilon\cdot\widetilde{\mathsf{opt}}\).
For every \(\zeta\in\mathcal{J}\), we choose \(\bigl\lceil\widetilde{N}_{\zeta}\bigr\rceil\) distinct machines from \(I\), and assign these machines the type configuration \(\zeta\), where when we pick \(A''\)-jobs as specified by \(\zeta\) to assign to a machine, we of course always pick from the unassigned jobs in \(A''\). If we run out of machines while doing so, i.e., \(\sum_{\zeta\in\mathcal{J}}\bigl\lceil\widetilde{N}_{\zeta}\bigr\rceil>|I|\), then we declare failure. Similarly, if we run out of jobs of a particular type, then we again declare failure. These failure events can only happen if one of our guesses is incorrect.
Assigning jobs in \(A^{\mathsf{sml}}\). Let \(J_1=A_1\cup A''\), and \(\sigma\) be the assignment determined above for jobs in \(J_1\). We extend \(\sigma\) to a fractional assignment \(x^*\) of jobs in \(A^{\mathsf{sml}}\) to machines in \(I\) using Lemma 21, taking \(J_2=A^{\mathsf{sml}}\), and the original \(p_j\) job sizes. Let \(L^*\) be the resulting load vector.
As with a sparse instance, we round \(x^*\) using \(\mathsf{GAP}\) rounding. Let \(\widehat{\sigma}:J_1\cup A^{\mathsf{sml}}\mapsto[m]\) be the assignment obtained by concatenating the resulting integer solution and \(\sigma\). Let \(\widehat J_i\subseteq J_1\cup A^{\mathsf{sml}}\) be the jobs assigned to machine \(i\) by \(\widehat{\sigma}\). Again, we know that for each \(i\in I\), there is at most one job \(j^*_i\in \widehat J_i\cap A^{\mathsf{sml}}\) with \(x^*_{ij}>0\) such that \(p\bigl(\widehat J_i-\{j^*_i\}\bigr)\leq L^*_i\); as always, we set \(\{j^*_i\}=\emptyset\) if \(p(\widehat J_i)\leq L^*_i\).
We cannot discard the jobs in \(\bigcup_{i\in I}\{j^*_i\}\), as these jobs may bring in large reward. Instead, we create extra machines and pack the jobs in \(\bigcup_{i\in I}\{j^*_i\}\) arbitrarily on these extra machines so that each extra machine is packed maximally within capacity \({\widetilde{\mathsf{load}}}_{\mathsf{avg}}/2\). This creates at most \(1+\bigl\lfloor\frac{\varepsilon\cdot{\widetilde{\mathsf{load}}}_{\mathsf{avg}}\cdot|I|}{(1/2-\varepsilon){\widetilde{\mathsf{load}}}_{\mathsf{avg}}}\bigr\rfloor\) extra machines, since every extra machine, save for at most one, has at least \({\widetilde{\mathsf{load}}}_{\mathsf{avg}}/2-\varepsilon\cdot{\widetilde{\mathsf{load}}}_{\mathsf{avg}}\) load assigned to it, and \(\sum_{i\in I}\widetilde{p}_{j^*_i}\leq\varepsilon\cdot{\widetilde{\mathsf{load}}}_{\mathsf{avg}}\cdot|I|\). Since we have a dense instance, we have \(\varepsilon\cdot|I|\geq 1\), so the number of extra machines created this way is bounded by \(5\varepsilon\cdot|I|\) (recall that \(\varepsilon\leq 0.25\)). Combined with the \(2\varepsilon\cdot|I|\) extra machines utilized for jobs in \(A^{\mathsf{lrg}}-A''\), we have created at most \(7\varepsilon\cdot|I|\) extra machines.
Consider all the machines used for jobs in \(A_2=A^{\mathsf{lrg}}\cup A^{\mathsf{sml}}\), i.e., the regular machines in \(I\) and the extra machines. We retain the \(|I|\) largest-reward machines from this collection, and discard the rest. The final assignment is the assignment given by \(\sigma\) for machines in \([|A_1|]\) together with this postprocessed \(\widehat{\sigma}\) assignment, for machines in \(I\).
In the sequel, we assume that we have found, by enumeration, the correct information in steps [ptas-start]–[ptas-end]. We show that the above algorithm is a PTAS.
Theorem 27. The algorithm described in steps [ptas-start]–[ptas-end] is a PTAS for \(\mathsf{NormBudgMaxGAP}\) on identical machines.
We defer the proofs of Lemmas 20 and 21 to Appendix 14, and begin by proving Claim 25. The following well-known and easy-to-see fact will be useful; we prove this in Appendix 14 as well.
Claim 28. Let \(h:\mathbb{R}^m\mapsto\mathbb{R}_{+}\) be a monotone, symmetric norm. Let \(v\in\mathbb{R}_{+}^m\), and \(i,i'\in[m]\) be such that \(v_{i}<v_{i'}\) and \(0<\kappa<v_{i'}-v_{i}\). Let \(u\) be the vector where \(u_\ell=v_\ell\) for all \(\ell\in[m]-\{i,i'\}\), \(u_{i}\leq v_{i}+\kappa\), \(u_{i'}=v_{i'}-\kappa\). Then, \(u^{{\:\!\downarrow}}\) is lexicographically smaller than \(v^{{\:\!\downarrow}}\), and \(h(u)\leq h(v)\).
Proof of Claim 25. Recall that \({\widetilde{\mathsf{load}}}= \ifmmode \settoheight{\xvec@height}{{{\mathsf{load}}}({{\widetilde{\sigma}}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\widetilde{\sigma}}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\widetilde{\sigma}}})} \else \settoheight{\xvec@height}{{{\mathsf{load}}}({{\widetilde{\sigma}}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\widetilde{\sigma}}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\widetilde{\sigma}}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{load}}}({{\widetilde{\sigma}}})\) and \({\widetilde{\mathsf{load}}}^{{\:\!\downarrow}}\) is lexicographically smallest among the sorted-load vectors of all feasible assignments of jobs in \(A\) to the \(m\) machines.
For part (a), consider any \(j\in A_1\). Let \(i=\sigma(j)\). Suppose \(i\) is assigned some job other than \(j\) by \(\widetilde{\sigma}\). Let \(j'\) be some such job with \(p_{j'}\leq p_j\). Note that \({\widetilde{\mathsf{load}}}_i>{\widetilde{\ensuremath{\mathsf{load}}}}_{\mathsf{min}}\) and \({\widetilde{\mathsf{load}}}_i-{\widetilde{\mathsf{load}}}_{\mathsf{min}}\geq p_j+p_{j'}-{\widetilde{\mathsf{load}}}_{\mathsf{min}}>p_{j'}\). Consider the load vector \(L\) that results when we move job \(j'\) to a machine with load \({\widetilde{\mathsf{load}}}_{\mathsf{min}}\). By Claim 28, we obtain that \(f(L)\leq f({\widetilde{\mathsf{load}}})\) and \(L^{{\:\!\downarrow}}\) is lexicographically smaller than \({\widetilde{\mathsf{load}}}^{{\:\!\downarrow}}\), which gives a contradiction.
Part (b) follows from a similar argument. Suppose \({\widetilde{\mathsf{load}}}_{\mathsf{max}}>2\cdot{\widetilde{\mathsf{load}}}_{\mathsf{min}}\). Let \(i,i'\in I\) be such that \({\widetilde{\mathsf{load}}}_{\mathsf{max}}={\widetilde{\mathsf{load}}}_i\) and \({\widetilde{\mathsf{load}}}_{\mathsf{min}}-={\widetilde{\mathsf{load}}}_{i'}\). Since \(i\in I\), it must be that \(i\) is assigned at least two jobs, otherwise the job assigned to it would lie in \(A_1\). Consider any job \(j\) with \(\widetilde{\sigma}(j)=i\). We have \({\widetilde{\mathsf{load}}}_i-p_j>{\widetilde{\ensuremath{\mathsf{load}}}}_{\mathsf{min}}\) since \({\widetilde{\mathsf{load}}}_i>2\cdot{\widetilde{\mathsf{load}}}_{\mathsf{min}}\) and \(p_j\leq{\widetilde{\mathsf{load}}}_{\mathsf{min}}\). So, again, if we transfer job \(j\) from \(i\) to \(i'\), we still obtain a feasible assignment whose sorted load vector is lexicographically smaller than \({\widetilde{\mathsf{load}}}^{{\:\!\downarrow}}\), yielding a contradiction. ◻
When the instance is sparse, the proof of the performance guarantee is fairly straightforward, as alluded to when describing the algorithm.
Lemma 22. If the instance is sparse, then the assignment returned in step [sp-end] is feasible and obtains reward at least \((1-\varepsilon)^3\mathit{OPT}\).
Proof. We have \(\mathsf{rwd}(A)\geq(1-\varepsilon)^2\mathit{OPT}\), as argued in Appendix [ident-biptas]. As noted earlier, if \((x^*,L^*)\) is the solution obtained in step [sp-frac], we have \(f(L^*)\leq B\), since \(\widetilde{\sigma}\) yields one potential feasible solution to ?? . The load vector of the final assignment is coordinate-wise at most \(L^*\) by design, so feasibility follows. Recall that in steps [sp-start]–[sp-end], \(J_1\) consists of \(A_1\) and the \(\frac{|I|}{\varepsilon}\) largest-reward jobs in \(A_2\), \(J_2=A_2-J_1\), and \(J_1\cup J_2=A=A_1\cup A_2\). Also, \(\mathsf{rwd}_j\leq\frac{\varepsilon}{|I|}\mathsf{rwd}(A_2)\) for all \(j\in J_2\). The reward obtained is \(\mathsf{rwd}(A)-|I|\cdot\max_{j\in J_2}\mathsf{rwd}_j\) since we discard at most \(|I|\) jobs from \(J_2\) in step [sp-end]. This is at least \(\mathsf{rwd}(A)-\varepsilon\cdot\mathsf{rwd}(A_2)\geq(1-\varepsilon)\mathsf{rwd}(A)\geq(1-\varepsilon)^3\mathit{OPT}\). ◻
When the instance is dense, the analysis is somewhat more involved. Lemma 23 bounds the reward obtained by the final assignment, and Lemma 24 shows that the assignment returned is feasible. We first prove Claim 26.
Proof of Claim 26. If \(\varepsilon^3|A'|<1\), then the rewards do not change, so the claim trivially holds. So suppose otherwise. Let \(B_r\) denote the jobs in group \(r\), for \(r=1,\ldots,k'\), where recall that \(k'=1+\frac{1}{\varepsilon^3}\), groups \(B_1,\ldots,B_{k'-1}\) contain \(\bigl\lfloor\varepsilon^3|A'|\bigr\rfloor\) jobs and \(B_{k'}|<\frac{1}{\varepsilon^3}\).
We have \(\widetilde{\mathsf{rwd}}_j=\mathsf{rwd}_j\) for all \(j\in\bigl(\bigcup_{r=1}^{1/\varepsilon}B_r\bigr)\cup B_{k'}\). For any \(r\in[k'-1]\), and any jobs \(j\in B_r\), \(j'\in B_{r+1}\), we have \(\mathsf{rwd}_j\geq\mathsf{rwd}_{j'}\). So for \(r\in\bigl\{\frac{1}{\varepsilon}+1,\ldots,k'-2\bigr\}\), since \(|B_r|=|B_{r+1}|\), we have \(\widetilde{\mathsf{rwd}}(B_r)\geq\mathsf{rwd}(B_{r+1})\). Also, \(\mathsf{rwd}\bigl(B_{1/\varepsilon+1}\bigr) \leq\bigl|B_{1/\varepsilon+1}\bigr|\cdot\frac{\sum_{r=1}^{1/\varepsilon}\mathsf{rwd}(B_r)}{\sum_{r=1}^{1/\varepsilon}|B_r|} \leq\varepsilon\cdot\mathsf{rwd}(A')\). Putting things together, we have \[\begin{align} \widetilde{\mathsf{rwd}}(A')=\sum_{r=1}^{k'}\widetilde{\mathsf{rwd}}(B_r) & \geq\sum_{r=1}^{1/\varepsilon}\mathsf{rwd}(B_r)+\sum_{r=1/\varepsilon+1}^{k'-2}\mathsf{rwd}(B_{r+1})+\mathsf{rwd}(B_{k'}) \\ & =\mathsf{rwd}(A')-\mathsf{rwd}(B_{1/\varepsilon+1})\geq(1-\varepsilon)\mathsf{rwd}(A'). \qedhere \end{align}\] ◻
Lemma 23. Suppose the instance is dense. Then the reward obtained by the final assignment is at least \(\bigl(1-O(\varepsilon)\bigr)\mathit{OPT}\).
Proof. First, by Lemma 20, the total reward obtained from the assignment of type configurations to machines in \(I\) computed in step [lrgasgn] is at least \[\sum_{\zeta\in\mathcal{J}}\widetilde{N}_{\zeta}\cdot\widetilde{\mathsf{rwd}}(\zeta) \geq\sum_{\zeta\in\mathcal{J}}N_{\zeta}\cdot\widetilde{\mathsf{rwd}}(\zeta)-\varepsilon\widetilde{\mathsf{opt}} \geq\widetilde{\mathsf{rwd}}(A'')-\varepsilon\mathit{OPT}\] where the final inequality is because \(\sum_{\zeta\in\mathcal{J}}N_{\zeta}\cdot\widetilde{\mathsf{rwd}}(\zeta)=\widetilde{\mathsf{rwd}}(A'')\), by definition. So the total reward obtained from the assignment \(\widehat{\sigma}\) computed in step [smlasgn] from the machines in \(I\) and the extra machines is at least \(\mathsf{rwd}\bigl(A^{\mathsf{lrg}}-A''\bigr)+\bigl(\widetilde{\mathsf{rwd}}(A'')-\varepsilon\mathit{OPT}\bigr)+\mathsf{rwd}(A^{\mathsf{sml}})\), which is at least \[\begin{align} \mathsf{rwd}\bigl(A^{\mathsf{lrg}}-A'\bigr)&+\widetilde{\mathsf{rwd}}(A'-A'')+\widetilde{\mathsf{rwd}}(A'')+\mathsf{rwd}\bigl(A^{\mathsf{sml}}\bigr)-\varepsilon\mathit{OPT} \\ & \geq \mathsf{rwd}\bigl(A^{\mathsf{lrg}}-A'\bigr)+(1-\varepsilon)\mathsf{rwd}(A')+\mathsf{rwd}\bigl(A^{\mathsf{sml}}\bigr)-\varepsilon\mathit{OPT} \geq (1-\varepsilon)\mathsf{rwd}(A_2)-\varepsilon\mathit{OPT}. \end{align}\] where the first inequality is due to Claim 26 and since \(\widetilde{\mathsf{rwd}}_j=\mathsf{rwd}_j\) for all \(j\in A^{\mathsf{lrg}}-A''\). So after postprocessing \(\widehat{\sigma}\), the total reward obtained is at least \[\begin{align} \mathsf{rwd}(A_1)+\tfrac{1}{1+7\varepsilon}\cdot\Bigl((1-\varepsilon)\mathsf{rwd}(A_2)-\varepsilon\mathit{OPT}\Bigr) & \geq(1-7\varepsilon)(1-\varepsilon)\mathsf{rwd}(A)-\varepsilon\mathit{OPT}\\ & \geq\Bigl((1-7\varepsilon)(1-\varepsilon)^3-\varepsilon\Bigr)\mathit{OPT}\geq(1-11\varepsilon)\mathit{OPT}. \qedhere \end{align}\] ◻
Lemma 24. Suppose the instance is dense. Then the final assignment computed in step [ptas-end] is feasible.
Proof. Recall that in step [smlasgn], we invoke Lemma 21 taking \(J_1=A_1\cup A''\) and \(J_2=A^{\mathsf{sml}}\). Since the assignment \(\sigma\) computed for \(J_1\) is consistent with \(\widetilde{\sigma}\), it follows that \(\widetilde{\sigma}\) yields a feasible solution to ?? , and so the solution \((x^*,L^*)\) obtained from Lemma 21 satisfies \(f(L^*)\leq B\). Let \(z^*\) be the quantity computed in Lemma 21; so we have \(L^*_i=\max\bigl\{p\bigl(\sigma^{-1}(i)\bigr),z^*\bigr\}\) for all \(i\in[m]\).
Let \(\overline{L}\) be the load vector given by \(\overline{L}_i=\max\{L^*_i,{\widetilde{\mathsf{load}}}_{\mathsf{min}}\}\) for all \(i\in I\), and \(\overline{L}_i=L^*_i\) for all other \(i\). We first show that we also have \(f(\overline{L})\leq B\). If \(z^*\geq{\widetilde{\mathsf{load}}}_{\mathsf{min}}\), then \(\overline{L}=L^*\) since \(L^*_i\geq z^*\) for all \(i\in I\), so this holds. So suppose \(z^*<{\widetilde{\ensuremath{\mathsf{load}}}}_{\mathsf{min}}\). We claim then that \(\overline{L}_i\leq{\widetilde{\mathsf{load}}}_i\) for all \(i\in[m]\). This certainly holds for all \(i\in[|A_1|]\). Consider \(i\in I\). We have \(\overline{L}_i=\max\bigl\{p\bigl(\sigma^{-1}(i)\bigr),{\widetilde{\mathsf{load}}}_{\mathsf{min}}\bigr\}\) and since \(\sigma\) is consistent with \(\widetilde{\sigma}\), we have \(p\bigl(\sigma^{-1}(i)\bigr)\leq{\widetilde{\mathsf{load}}}_i\). It follows that \(\overline{L}_i\leq{\widetilde{\mathsf{load}}}_i\).
Let \(\widehat L\) be the load vector corresponding to the final assignment, under the \(\{p_j\}\) job sizes. For every \(i\in[|A_1|]\), we have \(\widehat L_i=L^*_i=\overline{L}_i\). For any “regular” machine in \(I\), we ensure by design that the total load on it is at most \(L^*_i\). Each extra machine is assigned exactly one job in \(A_2\), and so has load at most \({\widetilde{\mathsf{load}}}_{\mathsf{min}}\). Thus, for any combination of \(|I|\) machines chosen in step [smlasgn] while postprocessing \(\widehat{\sigma}\), comprising some regular machines and some extra machines, we can bound the load on each machine by a distinct \(\overline{L}_i\) term. Therefore, \(\widehat L^{{\:\!\downarrow}}\leq\overline{L}^{{\:\!\downarrow}}\), and so \(f(\widehat L)\leq f(\overline{L})\leq B\). ◻
Proof of Theorem 27. The time required for enumeration in step [goodset] is \(\bigl(\frac{n}{\varepsilon}\bigr)^{O(1/\varepsilon)}\). In all other steps that involve some enumeration—steps [tguess], [sp-start], [denseasgn]—the time required for enumeration is bounded by \(g(1/\varepsilon)\cdot\operatorname{poly}(m,n)\), for some function \(g\). So the running time is polynomially bounded for any fixed \(\varepsilon>0\).
Feasibility of the solution returned and the performance guarantee follow directly from Lemma 22 for a sparse instance, and Lemmas 23 and 24 for a dense instance. ◻
The PTAS for \(\mathsf{NormBudgMaxGAP}\) on related machines builds upon the ideas underlying the PTAS for identical machines, but also needs several new ingredients. At a high level, we eventually group machines into \(O\bigl(\frac{\log m}{\varepsilon}\bigr)\) groups so that, roughly speaking, we can treat each group as an identical-machines instance, and extend suitable ideas from the approach used in the PTAS for identical machines to solve these instances. In contrast to much extant work on related machines, as also non-uniform \(\mathsf{MKP}\), this grouping of machines is not based on machine speed, but instead is determined by the total work assigned to the machine. Throughout this section, when we say “work” on a machine, we mean the total processing time of jobs assigned to the machine. For an assignment \(\sigma:S\mapsto[m]\) of a set \(S\subseteq J\) of jobs, the work-vector \(\ifmmode \settoheight{\xvec@height}{{{\mathsf{work}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\sigma}})} \else \settoheight{\xvec@height}{{{\mathsf{work}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\sigma}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{work}}}({{\sigma}})\) resulting from \(\sigma\) is therefore given by \(\ifmmode \settoheight{\xvec@height}{{{\mathsf{work}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\sigma}})} \else \settoheight{\xvec@height}{{{\mathsf{work}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\sigma}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{work}}}({{\sigma}})_i:=\sum_{j\in S:\sigma(j)=i}p_j\), for all \(i\in[m]\). Note that the load of machine \(i\) under \(\sigma\) is \(\ifmmode \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma}})} \else \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{load}}}({{\sigma}})_i= \ifmmode \settoheight{\xvec@height}{{{\mathsf{work}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\sigma}})} \else \settoheight{\xvec@height}{{{\mathsf{work}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\sigma}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{work}}}({{\sigma}})_i/s_i\).
We first prove some structural properties about a near-optimal solution. It is easy to argue that one may assume that the work-vector is sorted similarly as the speed vector (Lemma [wksort]): given any assignment of jobs to machines, if we permute the assignment so that the work assigned to machines is non-decreasing with their speed, then this does not increase the norm of the load vector. Sort the machines so that \(s_1\geq s_2\geq\ldots\geq s_m\). We create \(K=O\bigl(\frac{\log m}{\varepsilon}\bigr)\) machine groups, where the zeroth group, called the fast machines, consists of the first \(m_0=m_{\mathsf{fast}}=\frac{2}{\varepsilon^3}\) machines, the first group consists of the next \(m_1=\frac{1}{\varepsilon^2}\) machines, and every subsequent group \(r>1\) consists (roughly) of the next \(m_{r-1}/(1-\varepsilon)\) machines. We argue that there is a near-optimal solution \(\widetilde{\sigma}\) whose work-vector is bounded by a nicely smoothed-out vector \(W^{\mathsf{smth}}\) that: (1) induces a feasible load vector (i.e., the load vector has norm at most \(B\)); and (2) except for the fast machines, assigns all machines in the same group the same work (Lemma [strucprop]).
We guess the set of jobs assigned by \(\widetilde{\sigma}\), proceeding exactly as in step [goodset] of the PTAS for identical machines. We handle the fast machines, and the remaining machines separately. Since there are only a constant number of fast machines, after sparsifying (the guessed set of) jobs into \(O(\log n)\) job types using the same shifting idea used for identical machines, we use enumeration ideas to find an assignment of jobs to the fast machines consistent with \(\widetilde{\sigma}\), and obtaining almost all the reward accrued by (jobs assigned to) the fast machines under \(\widetilde{\sigma}\). For the remaining machines, we guess a non-increasing vector \(\widetilde{\mathsf{work}}\in\mathbb{R}_{+}^{[m]-[m_{\mathsf{fast}}]}\) that coordinate-wise estimates \((W^{\mathsf{smth}}_i)_{i\in[m]-[m_{\mathsf{fast}}]}\) within a \((1+\varepsilon)\)-factor. We can think of \(\widetilde{\mathsf{work}}_i\) as the (work) capacity of machine \(i\). But (as with identical machines) because these are only estimates, simply solving a non-uniform \(\mathsf{MKP}\) instance with these capacities will not work: we may violate the norm budget, if \(\widetilde{\mathsf{work}}\) overestimates \(W^{\mathsf{smth}}\), or get low reward, if \(\widetilde{\mathsf{work}}\) underestimates \(W^{\mathsf{smth}}\). So we need to proceed more carefully. We choose \(\widetilde{\mathsf{work}}\) to be an overestimate of \(W^{\mathsf{smth}}\). We call a maximal (consecutive) set of machines having the same \(\widetilde{\mathsf{work}}_i\) value a machine class. Importantly, because of our initial grouping of machines, every machine class \(I\) is dense in that we have \(|I|\geq\frac{1}{\varepsilon^2}\). For a machine class \(I\) with capacity \(W\), we again use enumeration to guess the set of jobs with \(p_j>\varepsilonW\) assigned to machines in \(I\); we call such jobs “large” for machine class \(I\). Once we know the set of large jobs for class \(I\) that are assigned to machines in \(I\), we use the configuration-enumeration approach in step [lrgasgn] of the PTAS for identical machines to find the actual assignment of these large jobs to machines in \(I\) that is consistent with \(\widetilde{\sigma}\). Recall that this enumeration takes constant time for a single machine class, so since we have \(O(\log m)\) machine classes, we can obtain these assignments for all machine classes in polynomial time. As with identical machines, this step may entail creating “extra machines” for a machine class \(I\); but since \(|I|\) is sufficiently large, the number of such extra machines will be at most \(O(\varepsilon)|I|\), and so we will be able to discard the extra machines at the end without sacrificing the reward by much.
Finally, for the remaining jobs, which are assigned as small jobs for a machine class, we write an LP (see 13 ) to find a fractional assignment respecting the \(\widetilde{\mathsf{work}}\) capacities, and use \(\mathsf{GAP}\) rounding to round the LP solution. For a machine class with capacity \(W\), from each machine in that class, we transfer roughly \(\varepsilon\cdot W\) work due to small jobs assigned to that machine, to extra machines for that class. We argue that this can be done while creating an additional \(O(\varepsilon)|I|\) extra machines, and so that any load vector formed by taking, for each machine class \(I\), any collection of \(|I|\) machines from among the (regular and extra) machines used for that class, is feasible. Since the number of extra machines for class \(I\) is \(O(\varepsilon)|I|\), if we take the \(|I|\) highest-reward machines for class \(I\), we only lose a \(\bigl(1-O(\varepsilon)\bigr)\)-factor in the reward. This yields our PTAS.
Recall that we index the machines so that \(s_1\geq s_2\geq\ldots\geq s_m>0\). We assume that \(\frac{1}{\varepsilon}\) is an integer and \(\varepsilon\leq 0.25\). Define \(m_{\mathsf{fast}}=m_0=\frac{2}{\varepsilon^3}\), \(m_1=\frac{1}{\varepsilon^2}\), and for \(r>1\), define \(m_r=\bigl\lfloor\frac{m_{r-1}}{1-\varepsilon}\bigr\rfloor\). Let \(M_{\mathsf{fast}}=M_0\) be the first \(m_\mathsf{fast}\) machines, \(M_1\) be the next \(m_1\) machines, \(M_2\) be the next \(m_2\) machines, and so on, until we exhaust all machines. More precisely, let \(K\) be the smallest index \(r\geq 0\) such that \(\sum_{\ell=0}^r m_\ell\geq m\). Then, for \(r=0,\ldots,K-1\), define \(M_r\) to be the machines in \(\bigl[\sum_{\ell=0}^{r}m_\ell\bigr]-\bigl[\sum_{\ell=0}^{r-1}m_\ell\bigr]= \bigl\{\sum_{\ell=0}^{r-1}m_\ell+1,\sum_{\ell=0}^{r-1}m_\ell+2,\ldots,\sum_{\ell=0}^{r}m_\ell\bigr\}\); let \(M_{K}=[m]-\bigl[\sum_{\ell=0}^{K-1}m_\ell\bigr]\) be the remaining machines. Clearly, \(|M_r|=m_r\) for all \(r=0,1,\ldots,K-1\), and \(|M_{K}|\leq m_{K}\). We also have \(K=O\bigl(\frac{\log m}{\varepsilon}\bigr)\). (Recall that \(M_{\mathsf{fast}}=M_0\).)
Let \(i^*=m_{\mathsf{fast}}+1\) be the first machine not in \(M_{\mathsf{fast}}\); so \(i^*=m+1\) indicates that \(M_{\mathsf{fast}}=[m]\). For notational convenience, for any vector \(v\in\mathbb{R}_{+}^m\) and index \(i>m\), we define \(v_i:=0\).
Lemma [wksort] shows that one may always assume that the work assigned to a machine is non-decreasing in its speed. Lemma [strucprop] proves important structural properties about a near-optimal solution, which drives our approach.
Lemma 25. Let \(\sigma:S\to[m]\) be an assignment of a subset \(S\subseteq J\) of jobs. Let \(\pi:[m]\to[m]\) be the permutation that sorts the coordinates of \(\ifmmode \settoheight{\xvec@height}{{{\mathsf{work}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\sigma}})} \else \settoheight{\xvec@height}{{{\mathsf{work}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\sigma}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{work}}}({{\sigma}})\) in non-increasing order. That is, \(\ifmmode \settoheight{\xvec@height}{{{\mathsf{work}}}({{\pi\circ\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\pi\circ\sigma}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\pi\circ\sigma}})} \else \settoheight{\xvec@height}{{{\mathsf{work}}}({{\pi\circ\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\pi\circ\sigma}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\pi\circ\sigma}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{work}}}({{\pi\circ\sigma}})= \ifmmode \settoheight{\xvec@height}{{{\mathsf{work}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\sigma}})} \else \settoheight{\xvec@height}{{{\mathsf{work}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\sigma}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{work}}}({{\sigma}})^{{\:\!\downarrow}}\), which means that for all \(i\in[m]\), the \(i\)-th fastest machine is assigned the \(i\)-th largest work under \(\pi\circ\sigma:S\to[m]\). Then \(f( \ifmmode \settoheight{\xvec@height}{{{\mathsf{load}}}({{\pi\circ\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\pi\circ\sigma}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\pi\circ\sigma}})} \else \settoheight{\xvec@height}{{{\mathsf{load}}}({{\pi\circ\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\pi\circ\sigma}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\pi\circ\sigma}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{load}}}({{\pi\circ\sigma}}))\le f( \ifmmode \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma}})} \else \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{load}}}({{\sigma}}))\).
lemmafirststrucprop There is a job-set \(\widetilde{O}\subseteq J\), an assignment \(\widetilde{\sigma}:\widetilde{O}\mapsto[m]\), and a work-vector \(W^{\mathsf{smth}}\in\mathbb{R}_{+}^m\) satisfying the following properties.
\(\mathsf{rwd}(\widetilde{O})\ge (1-\varepsilon)\mathit{OPT}\);
\(\ifmmode \settoheight{\xvec@height}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \else \settoheight{\xvec@height}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{work}}}({{\widetilde{\sigma}}})\leqW^{\mathsf{smth}}\);
\(W^{\mathsf{smth}}={W^{\mathsf{smth}}}^{{\:\!\downarrow}}\);
if \(K\geq 1\), then \(W^{\mathsf{smth}}_{K}=0\);
for \(i\in[m]-M_{\mathsf{fast}}\), if \(W^{\mathsf{smth}}_i>0\) then \(W^{\mathsf{smth}}_i\geqW^{\mathsf{smth}}_{i^*}/m\);
for all \(r\geq 1\), and any \(i,i'\in M_r\), we have \(W^{\mathsf{smth}}_i=W^{\mathsf{smth}}_{i'}\);
\(f(L)\le B\), where \(L\in \mathbb{R}_{+}^{[m]}\) is given by \(L_i=W^{\mathsf{smth}}_i/s_i\) for all \(i\in[m]\).
Let \(\widetilde{O}\subseteq J\), \(\widetilde{\sigma}:\widetilde{O}\mapsto[m]\), and \(W^{\mathsf{smth}}\in\mathbb{R}_{+}^m\) be as given by Lemma [strucprop].
We guess a set \(A\) of jobs achieving large reward for which \(\widetilde{\sigma}\) can be used to obtain a feasible assignment, by proceeding exactly as in step [goodset] of the PTAS for identical machines.
Let \(\mathsf{Bkt}_0,\ldots,\mathsf{Bkt}_{{n_{\mathsf{bkt}}}}\) be reward buckets, where \(\mathsf{Bkt}_q=\bigl\{j\in J: \frac{\tau_q}{1+\varepsilon}<\mathsf{rwd}_j\leq\tau_q\bigr\}\) with \(\tau_q=\frac{\mathsf{r_{max}}}{(1+\varepsilon)^q}\) and \({n_{\mathsf{bkt}}}=O\bigl(\frac{1}{\varepsilon}\log\frac{n}{\varepsilon}\bigr)\). We obtain an estimate \(\widetilde{\mathsf{opt}}\leq\mathit{OPT}\leq(1+\varepsilon)\widetilde{\mathsf{opt}}\), and use this to obtain \(\{\widetilde{N}_q\}_{q\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket}\) estimates such that \(\widetilde{N}_q\leq|\widetilde{O}\cap\mathsf{Bkt}_q|\leq(1+\varepsilon)\bigl(\widetilde{N}_q+\frac{\varepsilon\cdot\widetilde{\mathsf{opt}}}{{n_{\mathsf{bkt}}}\cdot\tau_q}\bigr)\) for all \(q\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket\).
We pick the \(\bigl\lceil\widetilde{N}_q\bigr\rceil\) smallest-size jobs from each \(\mathsf{Bkt}_q\) bucket.
Let \(A\) denote this set of jobs. We treat the reward of each job in \(A\cap\mathsf{Bkt}_q\) as \(\frac{\tau_q}{1+\varepsilon}\). Thus, we now have \({n_{\mathsf{bkt}}}+1\) distinct rewards for jobs in \(A\). Since \(\ifmmode \settoheight{\xvec@height}{{p}({A})} \settodepth{\xvec@depth}{{p}({A})} \settowidth{\xvec@width}{{p}({A})} \else \settoheight{\xvec@height}{{p}({A})} \settodepth{\xvec@depth}{{p}({A})} \settowidth{\xvec@width}{{p}({A})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {p}({A})\leq \ifmmode \settoheight{\xvec@height}{{p}({\widetilde{O}})} \settodepth{\xvec@depth}{{p}({\widetilde{O}})} \settowidth{\xvec@width}{{p}({\widetilde{O}})} \else \settoheight{\xvec@height}{{p}({\widetilde{O}})} \settodepth{\xvec@depth}{{p}({\widetilde{O}})} \settowidth{\xvec@width}{{p}({\widetilde{O}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {p}({\widetilde{O}})\), by Claim 24, \(\widetilde{\sigma}\) can be used to obtain a feasible assignment for the jobs in \(A\). To keep notation simple, we continue to use \(\widetilde{\sigma}\) to denote this feasible assignment, and \(\mathsf{rwd}_j\) to denote the modified reward of \(j\). Note that the (modified) reward of \(A\) is at least \(\frac{1}{1+\varepsilon}\cdot\bigl(\mathsf{rwd}(\widetilde{O})-\varepsilon\cdot\mathit{OPT}\bigr)\geq (1-3\varepsilon)\mathit{OPT}\).
Sparsifying job sizes. We next sparsify the job sizes using the shifting idea for bin packing. so that there are only \(O\bigl(\frac{{n_{\mathsf{bkt}}}}{\varepsilon}\bigr)=O\bigl(\frac{1}{\varepsilon^2}\log\frac{n}{\varepsilon}\bigr)\) distinct job-sizes for jobs in \(A\). For each \(q\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket\), we consider jobs in \(S_q=A\cap\mathsf{Bkt}_q\) in non-increasing order of size and group them into \(k=1+\frac{1}{\varepsilon}\) sets \(B_q^{(1)},\ldots,B_q^{(k)}\), where \(|B_q^{(1)}|=\ldots=|B_q^{(k-1)}|=\bigl\lfloor\varepsilon|S_q|\bigr\rfloor\) and \(|B_q^{(k)}|<\frac{1}{\varepsilon}\). (If \(\varepsilon|S_q|<1\), then \(B_q^{(1)}=\ldots=B_q^{(k-1)}=\emptyset\), and \(B_q^{(k)}=S_q\).) We drop the jobs in \(B_q^{(1)}\), and for every \(r=2,\ldots,k-1\), we set the size of every job in \(B_q^{(r)}\) to be the size of the largest job in \(B_q^{(r)}\). Let \(T_q=B_q^{(2)}\cup\ldots\cup B_q^{(k)}\). This creates at most \(k-2+|B_q^{(k)}|\leq\frac{2}{\varepsilon}\) distinct modified job sizes for jobs in \(T_q\).
Let \(A_1=\bigcup_{q\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket}T_q\) be the jobs remaining in \(A\). To keep notation simple, we continue to use \(p_j\)’s to denote the modified sizes of jobs in \(A_1\). Since \(B_q^{(1)}\le\varepsilon|S_q|\), it follows that \(\mathsf{rwd}(A_1)\ge(1-\varepsilon)\cdot\mathsf{rwd}(A)\). Note that \(\widetilde{\sigma}\) can be used to obtain a feasible assignment of jobs in \(A_1\) with their modified job sizes, whose resulting work-vector is at most \(\ifmmode \settoheight{\xvec@height}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \else \settoheight{\xvec@height}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{work}}}({{\widetilde{\sigma}}})\) (coordinate-wise), because for all \(q\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket\), \(r=2,\ldots,k\), we can use the space previously occupied (under the assignment \(\tilde{\sigma}\)) by the jobs in \(B_q^{(r-1)}\) to accommodate the jobs in \(B_q^{(r)}\) with their modified sizes. This may involve changing the \(\widetilde{\sigma}\)-assignments of some jobs; again, to avoid excessive notation, we continue to use \(\widetilde{\sigma}\), viewed now as an assignment \(A_1\mapsto[m]\), to denote this modified feasible assignment.
We now collect all jobs in \(A_1\) with the same (size, reward) tuple, which we call the type of a job into a bucket; note that jobs are indistinguishable in that one can be replaced with another without affecting feasibility or reward. So at this point, we have a set of jobs \(A_1\subseteq J\) partitioned as \(\bigcup_{q\in[{n_{\mathsf{Abkt}}}]}\mathsf{ABkt}_q\) into \({n_{\mathsf{Abkt}}}\) type buckets, where \({n_{\mathsf{Abkt}}}\leq\frac{2}{\varepsilon}\cdot{n_{\mathsf{bkt}}}=O\bigl(\tfrac{1}{\varepsilon^2}\cdot\log{\tfrac{n}{\varepsilon}}\bigr)\), such that:
each job in \(\mathsf{ABkt}_q\) has the same (size, reward) tuple, denoted sometimes by (\(p^{(q)}\), \(\mathsf{rwd}^{(q)}\));
\(\mathsf{rwd}(A_1)\ge (1-\varepsilon)\mathsf{rwd}(A)\geq(1-4\varepsilon)\mathit{OPT}\);
there is an assignment \(\widetilde{\sigma}:A_1\to[m]\) satisfying \(\ifmmode \settoheight{\xvec@height}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \else \settoheight{\xvec@height}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{work}}}({{\widetilde{\sigma}}})\leqW^{\mathsf{smth}}\).
Guessing \(W^{\mathsf{smth}}\). Recall that \(M_{\mathsf{fast}}\) consists of the first \(m_{\mathsf{fast}}\) machines, and \(i^*=m_{\mathsf{fast}}+1\). We guess a non-increasing vector \(\widetilde{\mathsf{work}}\in\mathbb{R}^{[m]-M_{\mathsf{fast}}}\), where each \(\widetilde{\mathsf{work}}_i\) is \(0\) or a power of \((1+\varepsilon)\), such that for all \(i\in[m]-M_{\mathsf{fast}}\), we have \(W^{\mathsf{smth}}_i\leq\widetilde{\mathsf{work}}_i<(1+\varepsilon)W^{\mathsf{smth}}_i\) if \(\widetilde{\mathsf{work}}_i>0\) and \(\widetilde{\mathsf{work}}_i=0\) otherwise. Note that for \(r\geq 1\), all machines in \(M_r\) have the same \(\widetilde{\mathsf{work}}_i\) guess, since they have the same \(W^{\mathsf{smth}}_i\) value (Lemma [strucprop] [smooth]). We can do this in polynomial time since \((W^{\mathsf{smth}}_i)_{i\in[m]-M_{\mathsf{fast}}}\) is also a non-increasing vector (Lemma [strucprop] [sorted]), every non-zero entry of \(W^{\mathsf{smth}}_i\), for \(i\geq i^*\) is at least \(W^{\mathsf{smth}}_{i^*}/m\) (Lemma [strucprop] [item:wm]), and \(W^{\mathsf{smth}}_{i^*}\), if non-zero, lies in \(\bigl[p_{\min},\sum_{j\in J}p_j\bigr]\), where \(p_{\min}\) the minimum non-zero processing time of a job.
We sometimes say that \(\widetilde{\mathsf{work}}_i\) is the (work) capacity of machine \(i\). We call a maximal (consecutive) set of machines having the same \(\widetilde{\mathsf{work}}_i\) value, a machine class. (Note that this is a collection of machines in \([m]-M_{\mathsf{fast}}\).) The capacity of a machine class is the common \(\widetilde{\mathsf{work}}_i\) value of machines in that class. We can discard machines with capacity \(0\), so every machine class contains at least \(m_1=\frac{1}{\varepsilon^2}\) machines. Since capacities of different machine classes differ by at least a \((1+\varepsilon)\)-factor, there are at most \(O\bigl(\frac{\log m}{\varepsilon}\bigr)\) machine classes. Let \(\mathcal{N}\) denote the collection of machine classes.
Let \(A^{\mathsf{fast}}\) be the jobs in \(A_1\) assigned by \(\widetilde{\sigma}\) to machines in \(M_{\mathsf{fast}}\); We call a job in \(A^{\mathsf{fast}}\) is a fast job. We say that a job \(j\in A_1\) is large for capacity \(W\), if \(\varepsilonW<p_j\leq W\); we say that \(j\) is small for capacity \(W\) if \(p_j\leq\varepsilonW\). Let \(A^{\mathsf{lrg}}\) be the set of jobs \(j\in A_1-A^{\mathsf{fast}}\) such that \(j\) is large for capacity \(\widetilde{\mathsf{work}}_{\widetilde{\sigma}(j)}\), and \(A^{\mathsf{sml}}\) consist of jobs \(j\in A_1-A^{\mathsf{fast}}\) such that \(j\) is small for capacity \(\widetilde{\mathsf{work}}_{\widetilde{\sigma}(j)}\). Clearly, \(A^{\mathsf{fast}}\), \(A^{\mathsf{lrg}}\), \(A^{\mathsf{sml}}\) partition \(A_1\). Note that we do not know this partition.
We next proceed to obtain assignments for these three categories of jobs. The assignment may not quite assign all jobs in a category, but it will be consistent with \(\widetilde{\sigma}\), and will earn large-enough reward.
We use Lemma 20 to guess, for each \(q\in[{n_{\mathsf{Abkt}}}]\), the number of jobs in \(\mathsf{ABkt}_q\cap A^{\mathsf{fast}}\). To elaborate, for each \(q\in[{n_{\mathsf{Abkt}}}]\), we apply Lemma 20 to guess the sequence \(\Bigl\{\bigl|\mathsf{ABkt}_q\cap\widetilde{\sigma}^{-1}(i)\bigr|\Bigr\}_{i\in M_{\mathsf{fast}}}\) up to cumulative error \(\varepsilon|\mathsf{ABkt}_q|\) by taking \(\mathsf{est}=|\mathsf{ABkt}_q|\). This takes time \(2^{O(|M_{\mathsf{fast}}|/\varepsilon)}=2^{O(1/\varepsilon^4)}\). and so the total time for doing this for all \(q\in[{n_{\mathsf{Abkt}}}]\) is \(2^{O({n_{\mathsf{Abkt}}}/\varepsilon^4)}=\bigl(\frac{n}{\varepsilon}\bigr)^{1/\varepsilon^6}\).
Let \(\bigl\{\widetilde{h}_{q,i}\bigr\}_{i\in M_{\mathsf{fast}}}\) denote the correctly guessed sequence for \(q\in[{n_{\mathsf{Abkt}}}]\). Since jobs in \(\mathsf{ABkt}_q\) are indistinguishable, for all \(i\in M_{\mathsf{fast}}\), we arbitrarily select \(\bigl\lceil\widetilde{h}_{q,i}\bigr\rceil\) (unassigned) jobs from \(\mathsf{ABkt}_q\) and assign them to machine \(i\). If we run out of jobs in \(\mathsf{ABkt}_q\) while doing so, we declare failure; this can only happen if one of our guesses is incorrect. We do this for all \(q\in[{n_{\mathsf{Abkt}}}]\).
Let \(\widetilde{A}^{\mathsf{fast}}\) be the set of jobs so assigned to machines in \(M_{\mathsf{fast}}\). Since the \(\widetilde{h}_{q,i}\) values underestimate the \(\bigl|\mathsf{ABkt}_q\cap\widetilde{\sigma}^{-1}(i)\bigr|\) quantities, we have \(\widetilde{A}^{\mathsf{fast}}\subseteq A^{\mathsf{fast}}\). The following claim shows that \(\widetilde{A}^{\mathsf{fast}}\) achieves a good amount of reward.
Claim 29. We have \(\mathsf{rwd}(\widetilde{A}^{\mathsf{fast}})\geq\mathsf{rwd}(A^{\mathsf{fast}})-\varepsilon\cdot\mathsf{rwd}(A_1)\).
We next aim to determine the assignments of jobs in \(A^{\mathsf{lrg}}\). We will not quite be able to assign all jobs in \(A^{\mathsf{lrg}}\), but we will find a large-reward subset of \(A^{\mathsf{lrg}}\) and an assignment of these jobs. This is the most involved portion of the algorithm.
For each machine class \(I\), the assignment we compute to machine in \(I\) will end up using \(O(\varepsilon)|I|\) extra machines. At this point, we are only considering the work assigned to machines, and we will not concern ourselves with issues such as the speeds of these extra machines. We will retain these extra machines (and more extra machines for a class \(I\) may get added later) until the very end. As one of the last steps of the algorithm (step [rel-postprocess]), we will pare down the collection of machines used for class \(I\) to \(|I|\) machines; this yields a corresponding work-vector, and guided by Lemma [wksort], we will assign jobs to machines in \(I\) by assigning the jobs corresponding to the largest work-vector coordinate to the fastest machine in \(I\), the jobs corresponding to the second-largest coordinate to the second-fastest machine in \(I\), and so on.
We find the job-assignment in various steps. Recall that \(\mathcal{N}\) is the collection of machine classes. We say that a job \(j\) is large for a machine class if it is large for the capacity of that class. First, for each machine class \(I\in\mathcal{N}\) and \(q\in[{n_{\mathsf{Abkt}}}]\), we determine the number of jobs from \(\mathsf{ABkt}_q\) that are large for class \(I\) and assigned by \(\widetilde{\sigma}\) to machines in \(I\) (step [rel-largenum]). Since jobs in a type bucket \(\mathsf{ABkt}_q\) are indistinguishable, this also yields a set \(\widetilde{A}_I\) of large jobs for \(I\) and assigned by \(\widetilde{\sigma}\) to machines in \(I\).
We will use the configuration-enumeration approach from step [lrgasgn] of the PTAS for identical machines to assign these jobs to machines in \(I\). This will require us to sparsify job sizes and rewards for jobs in \(\widetilde{A}_I\) so that we only have a constant (depending on \(\frac{1}{\varepsilon}\)) number of distinct job-types for class \(I\). This sparsification may lead to \(O(\varepsilon)|I|\) extra machines being created.
For technical reasons, we will also first isolate some “giant” jobs in \(\widetilde{A}_I\) that will be assigned to separate machines in \(I\), without any other large jobs assigned to these machines.
So for each machine class \(I\), we first assign the giant jobs in \(\widetilde{A}_I\) (step [giantasgn]), and then sparsify the job types for the remaining jobs in \(\widetilde{A}_I\) (steps [rel-sizesparse], [rel-rewdsparse]). Next, we use configuration enumeration to find the configurations to use for machines in \(I\), for all machine classes \(I\) (step [rel-cenum]). We will argue that the time needed for enumeration in step [rel-cenum], is polynomially bounded. Finally, we map the configurations obtained for each machine class \(I\) to an assignment of a subset of \(\widetilde{A}_I\) to machines in \(I\) (step [rel-lrgasgn]). (As noted earlier, all of this leads to a work-vector for each class \(I\) using \(O(\varepsilon)|I|\) extra machines.)
Guessing the number of large jobs assigned to a machine class. We use an idea similar to that in [14]. Consider \(q\in[{n_{\mathsf{Abkt}}}]\). A job in \(\mathsf{ABkt}_q\) can be large for a class \(I\in\mathcal{N}\) with capacity \(W\) only if \(\varepsilonW<p^{(q)}\leq W\), or equivalently \(W\in\bigl[p^{(q)},\frac{p^{(q)}}{\varepsilon}\bigr)\). Since capacities of different classes differ by at least a \((1+\varepsilon)\)-factor, this means that a job in \(\mathsf{ABkt}_q\) may be large for at most \(\log_{1+\varepsilon}\frac{1}{\varepsilon}=O\bigl(\frac{1}{\varepsilon}\log\frac{1}{\varepsilon}\bigr)\) machine classes.
Let \(\mathcal{D}_q\subseteq\mathcal{N}\) be the collection of these machine classes, so \(|\mathcal{D}_q|=O\bigl(\frac{1}{\varepsilon}\ln\frac{1}{\varepsilon}\bigr)\). As in step [step:fast], we use Lemma 20 to guess \(\Bigl(\bigl|\{j\in\mathsf{ABkt}_q: \widetilde{\sigma}(j)\in I\}\bigr|\Bigr)_{I\in\mathcal{D}_q}\) up to cumulative error \(\varepsilon|\mathsf{ABkt}_q|\) by taking \(\mathsf{est}=|\mathsf{ABkt}_q|\). This takes time \(2^{O(|\mathcal{D}_q|/\varepsilon)}=2^{O(\frac{1}{\varepsilon^2}\log\frac{1}{\varepsilon})}\). Let \(\bigl\{\widetilde{n}_{q,I}\bigr\}_{I\in\mathcal{D}_q}\) denote the correctly-guessed sequence. For each \(I\in\mathcal{D}_q\), we select an arbitrary set \(\widetilde{A}_{q,I}\) of \(\bigl\lceil\widetilde{n}_{q,I}\bigr\rceil\) unassigned jobs from \(\mathsf{ABkt}_q\) to assign as large jobs to machines in \(I\). Again, if we run out of jobs in \(\mathsf{ABkt}_q\) while doing so, we declare failure. We do this for all \(q\in[{n_{\mathsf{Abkt}}}]\).
The total time required for this enumeration for all \(q\in[{n_{\mathsf{Abkt}}}]\) is \(2^{O(\frac{{n_{\mathsf{Abkt}}}}{\varepsilon^2}\log\frac{1}{\varepsilon})}=\bigl(\frac{n}{\varepsilon}\bigr)^{\frac{1}{\varepsilon^4}\log\frac{1}{\varepsilon}}\). For a machine class \(I\), we now have a set of jobs \(\widetilde{A}_I=\bigcup_{q\in[{n_{\mathsf{Abkt}}}]: I\in\mathcal{D}_q}\widetilde{A}_{q,I}\) to be assigned (as large jobs) to machines in \(I\). Since the \(\widetilde{n}_{q,I}\) values underestimate the \(\bigl|\{j\in\mathsf{ABkt}_q: \widetilde{\sigma}(j)\in I\}\bigr|\) quantities, we may assume that \(\widetilde{A}_I\subseteq A^{\mathsf{lrg}}\) and that jobs in \(\widetilde{A}_I\) are assigned by \(\widetilde{\sigma}\) (as large jobs) to machines in \(I\).
Note that \(|\widetilde{A}_I|\leq |I|/\varepsilon\) since if \(W\) is the capacity of class \(I\), we have \(p_j\geq\varepsilonW\) for all \(j\in\widetilde{A}_I\), and \(p(\widetilde{A}_I)\leq p\bigl(\widetilde{\sigma}^{-1}(I)\bigr)\leq W\cdot|I|\). If \(|\widetilde{A}_I|>|I|/\varepsilon\), then we declare failure; this can only happen if one of our guesses is incorrect. Similar to Claim 29, we have the following.
Claim 30. We have \(\sum_{I\in\mathcal{N}}\mathsf{rwd}(\widetilde{A}_I)\geq\mathsf{rwd}(A^{\mathsf{lrg}})-\varepsilon\cdot\mathsf{rwd}(A_1)\).
As noted above, to assign the designated large jobs for each machine class, we sparsify job types and use configuration enumeration.
Here, we significantly depart from the approach in [14], because our task is not just to find some assignment that respects the capacity of the machine class, but rather to find an assignment that is consistent with the unknown assignment \(\widetilde{\sigma}\). This stronger condition ensures that the load vector from this partial assignment satisfies the norm budget despite the fact that the \(\widetilde{\mathsf{work}}_i\) capacities are only estimates of \(W^{\mathsf{smth}}_i\). It also ensures that we can extend this partial assignment to one that assigns also the small jobs while respecting the norm budget.
We execute the following steps for each machine class \(I\in\mathcal{N}\) with corresponding capacity \(W\).
Assigning giant jobs. We call a job \(j\in\widetilde{A}_I\) with \(p_j\geq (1-\varepsilon)W\) a giant job for \(I\); let \(A^{\mathsf{giant}}_I\) be the set of giant jobs in \(\widetilde{A}_I\). We assign every giant job to a separate machine in \(I\), and do not assign any other jobs in \(\widetilde{A}_I\) to this machine. Note that \(\widetilde{\sigma}\) must also do this, since otherwise the total work assigned by \(\widetilde{\sigma}\) to a machine \(i\in I\) would exceed \((1-\varepsilon)W+\varepsilonW\geqW^{\mathsf{smth}}_i\). So if \(|A^{\mathsf{giant}}_I|>|I|\), we declare failure; this only happens if one of our guesses is incorrect.
Let \(A'_I=\widetilde{A}_I-A^{\mathsf{giant}}_I\) be the remaining jobs in \(\widetilde{A}_I\).
Sparsifying sizes of jobs in \(A'_I\). We mimic step [sizesparse]. Consider jobs in \(A'_I\) in non-increasing order of size, and divide them into \(k'=1+\frac{1}{\varepsilon^2}\) groups, where the first \(\frac{1}{\varepsilon^2}\) groups contain \(\bigl\lfloor\varepsilon^2|A'_I|\bigr\rfloor\) jobs, and the last group contains less than \(\frac{1}{\varepsilon^2}\) jobs. We increase the size of every job in groups \(2,\ldots,k'-1\) to the size of the largest job in that group, and move each job in the first group to a separate extra machine. This creates at most \(\varepsilon^2|A'_I|\leq\varepsilon|I|\) extra machines.
Let \(A''_I\) denote the jobs in groups \(2,\ldots,k'\) with their (potentially) modified sizes, so jobs in \(A''_I\) have at most \(\frac{2}{\varepsilon^2}\) distinct modified sizes. Again, to keep notation simple, we continue to use \(p_j\)’s to denote the modified sizes. For all \(r=2,\ldots,k'-1\), the space used by jobs in group \(r-1\) under assignment \(\widetilde{\sigma}\) can be used to accommodate the jobs in group \(r\) with their modified sizes. So \(\widetilde{\sigma}\) can be used to obtain a feasible assignment of jobs with their modified sizes, where the work assigned to a machine \(i\in I\) (under the modified sizes) continues to be at most \(W^{\mathsf{smth}}_i\). This may involve changing the \(\widetilde{\sigma}\)-assignments of some jobs in \(A'_I\); as before, we continue to use \(\widetilde{\sigma}\) to denote this modified feasible assignment.
Sparsifying rewards of jobs in \(A''_I\). We mimic step [rewdsparse]. Consider jobs in \(A''_I\) in non-increasing order of reward and divide them into \(k''=1+\frac{1}{\varepsilon^3}\) groups, where the first \(\frac{1}{\varepsilon^3}\) groups contain \(\bigl\lfloor\varepsilon^3|A''_I|\bigr\rfloor\) jobs, and the last group contains less than \(\frac{1}{\varepsilon^3}\) jobs. For every \(r=\frac{1}{\varepsilon}+1,\ldots,k''-1\), we reduce the reward of each job in group \(r\) to the smallest reward of a job in that group. We also move each job in the first \(\frac{1}{\varepsilon}\) groups to a separate extra machine.
Let \(\overline{A}_I\subseteq A''_I\) denote the jobs in groups \(\frac{1}{\varepsilon}+1,\ldots,k''\). Let \(\widetilde{\mathsf{rwd}}_j\leq\mathsf{rwd}_j\) denote the modified reward of each job \(j\in\widetilde{A}_I\), where \(\widetilde{\mathsf{rwd}}_j=\mathsf{rwd}_j\) if \(j\)’s reward is unchanged. We create at most \(\varepsilon^2|A''_I|\leq\varepsilon|I|\) extra machines, and jobs in \(\overline{A}_I\) now have at most \(\frac{2}{\varepsilon^3}\) distinct rewards. Mimicking Claim 26, we have the following.
Claim 31. We have \(\widetilde{\mathsf{rwd}}(A''_I)\geq(1-\varepsilon)\mathsf{rwd}(A''_I)\).
Enumerating configurations. We proceed as in step [lrgasgn]. Consider a machine class \(I\in\mathcal{N}\) with capacity \(W\). Jobs in \(\overline{A}_I\) are of at most \(\frac{4}{\varepsilon^5}\) distinct types, where recall that type of a job is its (size, reward) tuple. A configuration for \(I\) lists how many jobs from \(\overline{A}_I\) of each type are assigned to a machine so that the total work assigned is at most \(W\). (Recall that \(W\) is the capacity of class \(I\).) Let \(\mathcal{J}_I\) denote the collection of all such configurations for class \(I\). Since every job in \(\overline{A}_I\) is large for \(I\), we have \(|\mathcal{J}_I|\leq C=\bigl(\frac{1}{\varepsilon}\bigr)^{4/\varepsilon^5}\). The reward of a configuration \(\zeta\), denoted \(\widetilde{\mathsf{rwd}}(\zeta)\), is the reward obtained from the jobs assigned by \(\zeta\).
Say that \(\widetilde{\sigma}\) uses a configuration \(\zeta\) for \(I\), if some machine in \(I\) is assigned \(\zeta\) under \(\widetilde{\sigma}\). Call a tuple in \(\mathbb{Z}_{+}^{\mathcal{J}_I}\) specifying how many times each configuration in \(\mathcal{J}_I\) is used for machines in \(I\) a configuration-usage sequence for \(I\). For \(\zeta\in\mathcal{J}_I\), let \(N_{I,\zeta}\) denote the number of times \(\widetilde{\sigma}\) uses configuration \(\zeta\) for machines in \(I\). We call \(\{N_{I,\zeta}\}_{\zeta\in\mathcal{J}_I}\), the \(\widetilde{\sigma}\)-configuration-usage sequence for \(I\). We apply Lemma 20 to guess the sequence \(\bigl\{N_{I,\zeta}\cdot\widetilde{\mathsf{rwd}}(\zeta)\}_{\zeta\in\mathcal{J}_I}\) up to cumulative error \(\varepsilon\cdot\widetilde{\mathsf{rwd}}(\overline{A}_I)\) by taking \(\mathsf{est}=\widetilde{\mathsf{rwd}}(\overline{A}_I)\). This takes time \(2^{O(C/\varepsilon)}\) (which is a constant). Recall that this means, more precisely, that we identify a set of size \(2^{O(C/\varepsilon)}\) that contains a sequence close to the desired sequence. Define \(\widetilde{N}_{I,\zeta}\) to be the entry for configuration \(\zeta\) in the correct guessed sequence, divided by \(\widetilde{\mathsf{rwd}}(\zeta)\). Then, \(\widetilde{N}_{I,\zeta}\leq N_{I,\zeta}\) for all \(\zeta\in\mathcal{J}_I\), and \[\sum_{\zeta\in\mathcal{J}_I}\widetilde{N}_{I,\zeta}\cdot\widetilde{\mathsf{rwd}}(\zeta)\geq \sum_{\zeta\in\mathcal{J}_I}N_{I,\zeta}\cdot\widetilde{\mathsf{rwd}}(\zeta)-\varepsilon\cdot\widetilde{\mathsf{rwd}}(\overline{A}_I) =(1-\varepsilon)\widetilde{\mathsf{rwd}}(\overline{A}_I). \label{aiclass}\tag{12}\]
Our goal is to find an assignment consistent with \(\widetilde{\sigma}\) of a large-reward subset of \(A^{\mathsf{lrg}}\) to machines in \([m]-M_{\mathsf{fast}}\), so we need to consider all possible combinations of configuration-usage sequences for the different machine classes. So the overall time needed to find a suitable configuration-usage sequence for every machine class, i.e., the size of the search set that we need to consider such that this set contains, for every \(I\in\mathcal{N}\), a configuration-usage sequence for \(I\) that is close to the \(\widetilde{\sigma}\)-configuration-usage sequence for \(I\), is \(\bigl(2^{O(C/\varepsilon)}\bigr)^{|\mathcal{N}|}=m^{O(C/\varepsilon^2)}\), which is polynomially bounded.
Mapping the configuration-usage-sequences to a job-assignment. We do the following for each machine class \(I\). Recall that we have a vector \(\bigl(\widetilde{N}_{I,\zeta}\bigr)_{\zeta\in\mathcal{J}_I}\) specifying the number of times each \(\zeta\in\mathcal{J}_I\) is used, and (under the correct guesses) this is component-wise at most the \(\widetilde{\sigma}\)-configuration-sequence for \(I\), \(\{N_{I,\zeta}\}_{\zeta\in\mathcal{J}_I}\), which specifies the number of times \(\widetilde{\sigma}\) uses each configuration for machines in \(I\).
For every \(\zeta\in\mathcal{J}_I\), we choose \(\bigl\lceil\widetilde{N}_{I,\zeta}\bigr\rceil\) machines from \(I\) that have not been assigned any jobs yet, and assign these machines configuration \(\zeta\), where when we pick \(\overline{A}_I\)-jobs as specified by \(\zeta\) to assign to a machine, we always pick from the unassigned jobs in \(\overline{A}_I\). If we run out of machines while doing so, i.e., \(\sum_{\zeta\in\mathcal{J}}\bigl\lceil\widetilde{N}_{I,\zeta}\bigr\rceil+|A^{\mathsf{giant}}_I|>|I|\), then we declare failure. Similarly, if we run out of jobs of a particular type, then we again declare failure. These failure events can only happen if one of our guesses is incorrect. Let \(\widehat A_I\subseteq\overline{A}_I\) denote the set of jobs assigned to machines in \(I\) via this process.
Recall that \(A^{\mathsf{fast}}\) denotes the jobs in \(A_1\) assigned by \(\widetilde{\sigma}\) to machines in \(M_{\mathsf{fast}}\). Also, \(A^{\mathsf{lrg}}\) and \(A^{\mathsf{sml}}\) denote respectively the jobs in \(A_1\) that are assigned by \(\widetilde{\sigma}\) as large and small on their respective machines.
At this point, we have a partial assignment \(\sigma\) consistent with \(\widetilde{\sigma}\) that assigns jobs in \(\widetilde{A}^{\mathsf{fast}}\subseteq A^{\mathsf{fast}}\) to machines in \(M_{\mathsf{fast}}\), and for each machine class \(I\in\mathcal{N}\), assigns jobs in \(A^{\mathsf{giant}}_I\cup\widehat A_I\subseteq\widetilde{A}_I\subseteq A^{\mathsf{lrg}}\) to machines in \(I\). Also, for each machine class \(I\in\mathcal{N}\), jobs in \(A'_I-\overline{A}_I\subseteq\widetilde{A}_I\subseteq A^{\mathsf{lrg}}\) are assigned to extra machines for \(I\). Let \(S=\widetilde{A}^{\mathsf{fast}}\cup\bigl(\bigcup_{I\in\mathcal{N}}(A^{\mathsf{giant}}_I\cup\widehat A_I)\bigr)\) be the jobs assigned by \(\sigma\), and let \(A^{\mathsf{rem}}=A_1-S-\bigcup_{I\in\mathcal{N}}(A'_I-\overline{A}_I)\) be the jobs remaining in \(A_1\), which are not assigned to regular or extra machines. Note that \(A^{\mathsf{rem}}\supseteq A^{\mathsf{sml}}\).
We extend \(\sigma\) by writing an LP to find a large-reward subset of \(A^{\mathsf{rem}}\) to assign to machines in \([m]-M_{\mathsf{fast}}\). Since we have taken care of large jobs, we insist that all these jobs are assigned as small jobs on their respective machines, encoded by 15 . We also ensure that we do not exceed capacity \(\widetilde{\mathsf{work}}_i\) on any machine \(i\), taking into account both the jobs assigned by \(\sigma\) to \(i\) and the jobs assigned by the LP to \(i\), encoded by 16 . Also, we revert to the original \(\mathsf{rwd}_j\)-rewards. This yields the following LP. \[\begin{align} {3} \max & \quad & \sum_{j\in A_2,i\in[m]-M_{\mathsf{fast}}}\mathsf{rwd}_jx_{ij} &\tag{13} \\ \text{s.t.} & \quad & \sum_{i\in[m]-M_{\mathsf{fast}}}x_{ij} & \leq 1 \qquad && \forall j\in A^{\mathsf{rem}} \tag{14} \\ && x_{ij} = 0 \quad \text{if }p_j&>\varepsilon\cdot\widetilde{\mathsf{work}}_i \qquad && \forall i\in[m]-M_{\mathsf{fast}},\,j\in A^{\mathsf{rem}} \tag{15} \\ && p\bigl(\sigma^{-1}(i)\bigr)+\sum_{j\in A^{\mathsf{rem}}}p_jx_{ij} & \leq \widetilde{\mathsf{work}}_i \qquad && \forall i\in[m]-M_{\mathsf{fast}} \tag{16} \\ && x & \geq 0. \notag \end{align}\]
Claim 32. Under the correct guesses in previous steps, we have \(\mathit{OPT}_{\text{\ref{extnlp}}}\geq\mathsf{rwd}(A^{\mathsf{sml}})\).
Let \(x^*\) be an optimal solution to 13 . We round \(x^*\) using \(\mathsf{GAP}\) rounding [32]. By properties of \(\mathsf{GAP}\) rounding, the resulting integer solution has objective value at least that of \(x^*\). Let \(\widehat{\sigma}\) denote the assignment obtained by concatenating the resulting integer solution and \(\sigma\).
We now clean things up to obtain a feasible solution without sacrificing the reward by much. There are three interrelated issues we encounter: (1) we have used some extra machines for each machine class \(I\); (2) the assignment \(\widehat{\sigma}\) may exceed the \(\widetilde{\mathsf{work}}_i\) work-capacity on some machine \(i\in[m]-M_{\mathsf{fast}}\); (3) even if we respect the \(\widetilde{\mathsf{work}}_i\) work capacities, since \(\widetilde{\mathsf{work}}_i\) overestimates \(W^{\mathsf{smth}}_i\), this need not yield a feasible solution.
Consider any machine \(i\in[m]-M_{\mathsf{fast}}\). By properties of \(\mathsf{GAP}\) rounding, we know that there is at most one job \(j\) with \(\widehat{\sigma}(j)=i\) and \(x^*_{ij}>0\) whose removal will reduce the work assigned to \(i\) to at most \(\widetilde{\mathsf{work}}_i\); also, since \(x^*_{ij}>0\), we have \(p_j\leq\varepsilon\cdot\widetilde{\mathsf{work}}_i\). So we have \(p\bigl(\widehat{\sigma}^{-1}(i)\bigr)\leq (1+\varepsilon)\widetilde{\mathsf{work}}_i\). Moreover, if \(p\bigl(\widehat{\sigma}^{-1}(i)\bigr)>p\bigl(\sigma^{-1}(i)\bigr)\), then this work difference is due to small jobs for \(\widetilde{\mathsf{work}}_i\) assigned by \(\widehat{\sigma}\) to \(i\).
For every machine class \(I\in\mathcal{N}\) with capacity \(W\), we execute the following steps.
For each machine \(i\in I\), let \(R_i\subseteq\widehat{\sigma}^{-1}(i)-\sigma^{-1}(i)\) be a minimal set of jobs such that \(p\bigl(\widehat{\sigma}^{-1}(i)\bigr)-p(R_i)\leq\max\bigl\{p(\sigma^{-1}(i)),(1-\varepsilon)W\}\). From the above observations, we have that \(p_j\leq\varepsilonW\) for all \(j\in R_i\) and \(p(R_i)\leq 3\varepsilonW\).
We create extra machines and pack the jobs \(\bigcup_{i\in I}R_i\) arbitrarily on these extra machines so that each extra machine is packed maximally within capacity \((1-\varepsilon)W\). This creates at most \(1+\bigl\lfloor\frac{3\varepsilonW\cdot|I|}{(1-2\varepsilon)W}\bigr\rfloor\) extra machines, since every extra machine, save for at most one, has at least \((1-\varepsilon)W-\varepsilonW\) load assigned to it, and \(p\bigl(\bigcup_{i\in I}R_i\bigr)\leq 3\varepsilonW\cdot|I|\). We have \(|I|\geq\frac{1}{\varepsilon^2}\), so the number of extra machines created this way is bounded by \(7\varepsilon|I|\) (recall that \(\varepsilon\leq 0.25\)). Combined with the \(2\varepsilon|I|\) extra machines created in steps [rel-sizesparse] and [rel-rewdsparse], we have created at most \(9\varepsilon|I|\) extra machines for class \(I\).
Considering all the machines used for class \(I\), i.e., \(I\cup\{\text{extra machines for I}\}\). We retain the \(|I|\) largest-reward machines from this collection, and discard the rest.
This yields a work-vector for class \(I\) consisting of the work, and the corresponding jobs, assigned to the \(|I|\) retained machines for class \(I\). For the actual assignment of jobs to machines in \(I\), we sort the work-vector coordinates, and assign the the jobs corresponding to the \(\ell\)-th-largest work-vector coordinate to the \(\ell\)-th fastest machine in \(I\), for all \(\ell=1,\ldots,|I|\).
The final assignment is the assignment given by \(\sigma\) for machines in \(M_{\mathsf{fast}}\) together with the assignment computed above for machines in \([m]-M_{\mathsf{fast}}\). (Note that a machine \(i\) with \(W^{\mathsf{smth}}_i=\widetilde{\mathsf{work}}_i=0\) does not have any jobs assigned to it.)
We prove the following.
Theorem 33. The algorithm described in steps [rel-ptas-start]–[rel-ptas-end] is a PTAS for \(\mathsf{NormBudgMaxGAP}\) on related machines.
Proof. Lemmas 26 and 27 show that we obtain a feasible solution with reward \(\bigl(1-O(\varepsilon)\bigr)\mathit{OPT}\). As discussed when describing the algorithm, the time required for enumeration in any of the individual steps in [rel-ptas-start]–[rel-cenum] is of the form \((mn)^{g(1/\varepsilon)}\) for some function \(g\). There are only a constant number of steps, so we have polynomial running time for any fixed \(\varepsilon>0\). ◻
We prove Lemmas 20–[strucprop] at the end of this section. We begin the proof of the performance guarantee by proving Claim 29, Claim 30 and Claim 32 that were stated while describing the algorithm. We omit the proof of Claim 31 as this simply duplicates the proof of Claim 26 by making the appropriate notational changes.
Proof of Claim 29. Recall that \(\widetilde{A}^{\mathsf{fast}}\) consists of \(\sum_{i\in M_{\mathsf{fast}}}\bigl\lceil\widetilde{h}_{q,i}\bigr\rceil\) jobs from \(\mathsf{ABkt}_q\), for each \(q\in[{n_{\mathsf{Abkt}}}]\), and we have (by Lemma 20) that \(\sum_{i\in M_{\mathsf{fast}}}\widetilde{h}_{q,i}\geq\sum_{i\in M_{\mathsf{fast}}}\bigl|\mathsf{ABkt}_q\cap\widetilde{\sigma}^{-1}(i)\bigr|-\varepsilon|\mathsf{ABkt}_q|\). Therefore, \[\begin{align} \mathsf{rwd}(\widetilde{A}^{\mathsf{fast}}) & =\sum_{q\in[{n_{\mathsf{Abkt}}}]}\mathsf{rwd}^{(q)}\sum_{i\in M_{\mathsf{fast}}}\widetilde{h}_{q,i} \ge \sum_{q\in[{n_{\mathsf{Abkt}}}]}\mathsf{rwd}^{(q)}\biggl(\sum_{i\in M^\mathsf{fast}}\bigl|\mathsf{ABkt}_q\cap\widetilde{\sigma}^{-1}(i)\bigr|-\varepsilon|\mathsf{ABkt}_q|\biggr) \\ & =\mathsf{rwd}(A^\mathsf{fast})- \varepsilon\cdot\sum_{q\in[{n_{\mathsf{Abkt}}}]}\mathsf{rwd}^{(q)}\cdot|\mathsf{ABkt}_q| = \mathsf{rwd}(A^\mathsf{fast})-\varepsilon\cdot\mathsf{rwd}(A_1). \qedhere \end{align}\] ◻
Proof of Claim 30. Recall that \(\widetilde{A}_I=\bigcup_{q\in[{n_{\mathsf{Abkt}}}]: I\in\mathcal{D}_q}\widetilde{A}_{q,I}\), and for each \(q\in[{n_{\mathsf{Abkt}}}]\), we have \(|\widetilde{A}_{q,I}|=\bigl\lceil\widetilde{n}_{q,I}\bigr\rceil\) and the \(\bigl(\widetilde{n}_{q,I}\bigr)_{I\in\mathcal{D}_q}\) sequence satisfies (by Lemma 20) \(\sum_{I\in\mathcal{D}_q}\widetilde{n}_{q,I}\geq\sum_{I\in\mathcal{D}_q}\bigl|\{j\in\mathsf{ABkt}_q: \widetilde{\sigma}(j)\in I\}\bigr|-\varepsilon\cdot|\mathsf{ABkt}_q|\). So we have \[\begin{align} \sum_{I\in\mathcal{N}}\mathsf{rwd}(\widetilde{A}_I) & =\sum_{I\in\mathcal{N}}\sum_{q\in[{n_{\mathsf{Abkt}}}]:I\in\mathcal{D}_q}\mathsf{rwd}(\widetilde{A}_{q,I}) =\sum_{q\in[{n_{\mathsf{Abkt}}}]}\mathsf{rwd}^{(q)}\sum_{I\in\mathcal{D}_q}\widetilde{n}_{q,I} \\ & \geq\sum_{q\in[{n_{\mathsf{Abkt}}}]}\mathsf{rwd}^{(q)} \biggl(\sum_{I\in\mathcal{D}_q}\Bigl|\bigl\{j\in\mathsf{ABkt}_q:\widetilde{\sigma}(j)\in I\bigr\}\Bigr|-\varepsilon|\mathsf{ABkt}_q|\biggr) \\ & =\mathsf{rwd}(A^{\mathsf{lrg}})-\varepsilon\cdot\sum_{q\in[{n_{\mathsf{Abkt}}}]}\mathsf{rwd}^{(q)}\cdot|\mathsf{ABkt}_q| =\mathsf{rwd}(A^{\mathsf{lrg}})-\varepsilon\cdot\mathsf{rwd}(A_1). \qedhere \end{align}\] ◻
Proof of Claim 32. This follows simply because \(\widetilde{\sigma}\) yields a feasible integer solution to 13 of objective value \(\mathsf{rwd}(A^{\mathsf{sml}})\). For every \(j\in A^{\mathsf{sml}}\), we set \(x_{ij}=1\) if \(i=\widetilde{\sigma}(j)\) and \(0\) otherwise. This clearly satisfies constraints 14 , and satisfies 15 by the definition of \(A^{\mathsf{sml}}\). We satisfy 16 because under the correct guesses, \(\sigma\) is consistent with \(\widetilde{\sigma}\), and the total work assigned by \(\widetilde{\sigma}\) to a machine \(i\in[m]-M_{\mathsf{fast}}\) is at most \(W^{\mathsf{smth}}_i\leq\widetilde{\mathsf{work}}_i\). ◻
Lemma 26. The assignment returned obtains reward at least \(\bigl(1-O(\varepsilon)\bigr)\mathit{OPT}\).
Proof. We first lower bound the reward obtained before dropping the extra machines in step [rel-dropmc]. This reward (where we are including jobs assigned to extra machines) is \[\mathsf{rwd}(\widetilde{A}^{\mathsf{fast}})+\sum_{I\in\mathcal{N}}\Bigl(\mathsf{rwd}(A^{\mathsf{giant}}_I)+\mathsf{rwd}(A'_I-\overline{A}_I)+\mathsf{rwd}(\widehat A_I)\Bigr) +\mathsf{rwd}(A^{\mathsf{sml}}). \label{totrewdineq1}\tag{17}\] In the above expression, For a machine class \(I\), the \(\mathsf{rwd}(A'_I-\overline{A}_I)\) term is the reward from jobs assigned to extra machines for \(I\) in steps [rel-sizesparse], [rel-rewdsparse]; the \(\mathsf{rwd}(\widehat A_I)\) term is the reward obtained from the large jobs assigned to machines in \(I\) in step [rel-lrgasgn] as a result of the configurations obtained for \(I\). The last term \(\mathsf{rwd}(A^{\mathsf{sml}})\) is the reward from the small jobs assigned by \(\mathsf{GAP}\) rounding (Claim 32).
Consider a machine class \(I\). We have \[\mathsf{rwd}(\widehat A_I)=\sum_{\zeta\in\mathcal{J}_I}\bigl\lceil\widetilde{N}_{I,\zeta}\bigr\rceil\cdot\mathsf{rwd}(\zeta) \geq\sum_{\zeta\in\mathcal{J}_I}\widetilde{N}_{I,\zeta}\cdot\widetilde{\mathsf{rwd}}(\zeta)\geq(1-\varepsilon)\widetilde{\mathsf{rwd}}(\overline{A}_I) \label{aiineq1}\tag{18}\] where the last inequality is due to 12 . So \[\begin{align} \mathsf{rwd}(A'_I-\overline{A}_I)+\mathsf{rwd}(\widehat A_I)&\geq\mathsf{rwd}(A'_I-A''_I)+\mathsf{rwd}(A''_I-\overline{A}_I)+(1-\varepsilon)\widetilde{\mathsf{rwd}}(\overline{A}_I) \\ & \geq\mathsf{rwd}(A'_I-A''_I)+(1-\varepsilon)\widetilde{\mathsf{rwd}}(A''_I) \geq\mathsf{rwd}(A'_I-A''_I)+(1-\varepsilon)^2\mathsf{rwd}(A''_I) \\ & \geq(1-\varepsilon)^2\mathsf{rwd}(A'_I) \end{align}\] The first two inequalities use the fact that \(\overline{A}_I\subseteq A''_I\subseteq A'_I\); the first inequality also uses 18 . The third is due to Claim 31.
Plugging the above in 17 , and since \(\widetilde{A}_I=A^{\mathsf{giant}}_I\cup A'_I\), we obtain that the total reward is at least \(\mathsf{rwd}(\widetilde{A}^{\mathsf{fast}})+\sum_{I\in\mathcal{N}}(1-\varepsilon)^2\mathsf{rwd}(\widetilde{A}_I)+\mathsf{rwd}(A^{\mathsf{sml}})\). Now using Claims 29 and 30, and since \(A_1=A^{\mathsf{fast}}\cup A^{\mathsf{lrg}}\cup A^{\mathsf{sml}}\), the total reward obtained is at least \((1-\varepsilon)^2\mathsf{rwd}(A_1)-2\varepsilon\cdot\mathsf{rwd}(A_1)\geq(1-4\varepsilon)\mathsf{rwd}(A_1)\). We have \(\mathsf{rwd}(A_1)\geq (1-4\varepsilon)\mathit{OPT}\) (see [a1ineq]), so the total reward obtained before dropping extra machines is at least \((1-8\varepsilon)\mathit{OPT}\).
When we drop machines, for a machine class \(I\), we retain the \(|I|\) largest-reward machines from the (at most) \((1+9\varepsilon)|I|\) machines used for class \(I\), so we obtain at least a \(\frac{1}{1+9\varepsilon}\)-fraction of the total reward before dropping machines. So the reward of the final assignment is at least \(\frac{1-8\varepsilon}{1+9\varepsilon}\cdot\mathit{OPT}\geq(1-17\varepsilon)\mathit{OPT}\). ◻
Lemma 27. The assignment returned is feasible, i.e., \(f(\text{resulting load vector})\leq B\).
Proof. Let \({\widetilde{\mathsf{work}}}\) be the work-vector resulting from the assignment returned. We argue that \({\widetilde{\mathsf{work}}}\leqW^{\mathsf{smth}}\). By Lemma [strucprop] [item:feasible], this implies that the resulting load vector has norm at most \(B\).
Recall that the partial assignment \(\sigma\) computed in steps [rel-ptas-start]–[rel-lrgasgn] is consistent with \(\widetilde{\sigma}\) and \(\ifmmode \settoheight{\xvec@height}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \else \settoheight{\xvec@height}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{work}}}({{\widetilde{\sigma}}})\leqW^{\mathsf{smth}}\) (Lemma [strucprop] [item:capacities]). Machines in \(M_{\mathsf{fast}}\) are only assigned jobs by \(\sigma\), so this implies that \({\widetilde{\mathsf{work}}}_i\leq \ifmmode \settoheight{\xvec@height}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \else \settoheight{\xvec@height}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{work}}}({{\widetilde{\sigma}}})_i\leqW^{\mathsf{smth}}_i\) for all \(i\in M_{\mathsf{fast}}\).
Next, consider a machine class \(I\in\mathcal{N}\) with capacity \(W\). Note that all through steps [rel-largenum]–[rel-dropmc], we are concerned with the work-vector of machines in \(I\). So \(\sigma\) being consistent with \(\widetilde{\sigma}\) means more precisely that there is a permutation \(\pi:I\mapsto I\) such that \(\ifmmode \settoheight{\xvec@height}{{{\mathsf{work}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\sigma}})} \else \settoheight{\xvec@height}{{{\mathsf{work}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\sigma}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{work}}}({{\sigma}})_i=p(\sigma^{-1}(i))\leq p\bigl(\widetilde{\sigma}^{-1}(\pi(i))\bigr)= \ifmmode \settoheight{\xvec@height}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \else \settoheight{\xvec@height}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{work}}}({{\widetilde{\sigma}}})_{\pi(i)}\). When we move jobs in \(\widetilde{A}_I\) to extra machines in steps [rel-sizesparse], [rel-rewdsparse], one job per extra machine, we ensure that these are not giant jobs for \(I\); so the work on an extra machine is at most \((1-\varepsilon)W\). In step [rel-movejobs], by design, we ensure that the work assigned to any machine \(i\in I\) is at most \(\max\bigl\{p(\sigma^{-1}(i)),(1-\varepsilon)W\bigr\}\), and the work assigned to any extra machine for \(I\) is at most \((1-\varepsilon)W\). Note that \((1-\varepsilon)W\leqW^{\mathsf{smth}}_i\) for every \(i\in I\), since \(W\) is the common value of \(\widetilde{\mathsf{work}}_i\) for all \(i\in I\). So \((1-\varepsilon)W\leq\min_{i\in I}W^{\mathsf{smth}}_i\).
This implies that for every machine retained for \(I\) in step [rel-dropmc], one can bound the work assigned to that machine by a distinct \(\ifmmode \settoheight{\xvec@height}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \else \settoheight{\xvec@height}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{work}}}({{\widetilde{\sigma}}})_i\) term, and hence a distinct \(W^{\mathsf{smth}}_i\) term, for some \(i\in I\). It follows that the sorted work-vector of the machines retained for \(I\) is coordinate-wise at most \((W^{\mathsf{smth}}_i)_{i\in I}\). Due to the sorting performed in step [rel-finalsort], this implies that \(({\widetilde{\mathsf{work}}}_i)_{i\in I}\leq(W^{\mathsf{smth}})_{i\in I}\).
This holds for every \(I\in\mathcal{N}\), so combined with \(({\widetilde{\mathsf{work}}}_i)_{i\in M_{\mathsf{fast}}}\leq(W^{\mathsf{smth}}_i)_{i\in M_{\mathsf{fast}}}\), we obtain that \({\widetilde{\mathsf{work}}}\leqW^{\mathsf{smth}}\). ◻
Proof of Lemma [wksort]. If \(\pi\) is the identity permutation, there is nothing to be shown. Let \(\omega= \ifmmode \settoheight{\xvec@height}{{{\mathsf{work}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\sigma}})} \else \settoheight{\xvec@height}{{{\mathsf{work}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\sigma}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{work}}}({{\sigma}})\). So suppose there are machines \(i,i'\in[m]\) with \(i<i'\) (so \(s_i\geq s_{i'}\)) and \(\omega_i<\omega_{i'}\). Consider the assignment \(\sigma'\), where we switch the assignments of machines \(i\) and \(i'\). That is, for \(j\in S\), we set \(\sigma'(j)=\sigma(j)\) if \(\sigma(j)\notin\{i,i'\}\); we set \(\sigma'(j)=i\) if \(\sigma(j)=i'\), and \(\sigma'(j)=i'\) if \(\sigma(j)=i\). It suffices to show that \(f( \ifmmode \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma^\prime}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma^\prime}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma^\prime}})} \else \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma^\prime}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma^\prime}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma^\prime}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{load}}}({{\sigma^\prime}}))\le f( \ifmmode \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma}})} \else \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{load}}}({{\sigma}}))\), since via a series of pairwise interchanges, one can move from the assignment \(\sigma\) to the assignment \(\pi\circ\sigma\).
We utilize Claim 28. Let \(v= \ifmmode \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma}})} \else \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{load}}}({{\sigma}})\), \(u= \ifmmode \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma'}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma'}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma'}})} \else \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma'}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma'}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma'}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{load}}}({{\sigma'}})\), and \(\kappa=\bigl(\omega_{i'}-\omega_i\bigr)/s_{i'}\). Then \(u_\ell=v_\ell\) for all \(\ell\in[m]-\{i,i'\}\). We have \[\begin{align} {1} u_i & =\frac{\sum_{j\in S:\sigma'(j)=i}p_j}{s_i}=\frac{\omega_{i'}}{s_i} \leq\frac{\omega_i}{s_i}+\frac{\omega_{i'}-\omega_i}{s_{i'}}=v_i+\kappa, \label{uiineq} \\ \text{and} \quad u_{i'} & = \frac{\omega_i}{s_{i'}}=\frac{\omega_{i'}}{s_{i'}}-\kappa=v_{i'}-\kappa\notag \end{align}\tag{19}\] where the inequality in 19 is because \(s_i\geq s_{i'}\). So by Claim 28, we have \(f(u)\leq f(v)\). ◻
We restate Lemma [strucprop] for convenience.
Proof. Consider an optimal assignment \(\sigma^*:O^*\to[m]\), and let \({ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}= \ifmmode \settoheight{\xvec@height}{{{\mathsf{work}}}({{\sigma^*}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\sigma^*}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\sigma^*}})} \else \settoheight{\xvec@height}{{{\mathsf{work}}}({{\sigma^*}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\sigma^*}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\sigma^*}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{work}}}({{\sigma^*}})\). By Claim 25, we can assume that \({ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}={ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}^{{\:\!\downarrow}}\). For the boundary case where \(K=0\), which means that \(M_{\mathsf{fast}}=[m]\), we take \(\widetilde{O}=O^*\), \(\widetilde{\sigma}=\sigma^*\) and \(W^{\mathsf{smth}}={ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}\). It is easy to verify that this satisfies [item:reward]–[item:feasible].
So assume that \(K\geq 1\). We take \(W^{\mathsf{smth}}_i={ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}_i\) for all \(i\in M_{\mathsf{fast}}\). For all \(i\in M_{K}\), set \(W^{\mathsf{smth}}_i=0\). Consider an index \(r\in[K-1]\). Let \(i'\) be the last machine in \(M_r\). For all \(i\in M_r\), set \(W^{\mathsf{smth}}_i={ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}_{i'}\), if this value is at least \(W^{\mathsf{smth}}_{i^*}/m\), and \(0\) otherwise.
This satisfies properties [sorted]–[smooth] by construction. Property [item:feasible] also holds by construction, since \(W^{\mathsf{smth}}\leq{ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}\), and so \(f(L)\leq f( \ifmmode \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma^*}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma^*}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma^*}})} \else \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma^*}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma^*}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma^*}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{load}}}({{\sigma^*}}))\leq B\).
We next define \(\widetilde{O}\) and \(\widetilde{\sigma}\) so as to satisfy [item:reward], [item:capacities]. Define the reward of a machine to be the total reward of the jobs assigned to it under \(\sigma^*\). Let \(H_{\mathsf{fast}}\subseteq M_{\mathsf{fast}}\) be the \(|M_{\mathsf{fast}}|-\frac{1}{\varepsilon^2}-1\) largest-reward machines in \(M_{\mathsf{fast}}\). Let \(H_1=M_1\). For \(r=2,\ldots,K\), define \(H_r\subseteq M_r\) to be the \(m_{r-1}=|M_{r-1}|\) largest-reward machines in \(M_r\).
Let \(\widetilde{O}\) be the jobs assigned to machines in \(H_{\mathsf{fast}}\cup\bigcup_{r=1}^{K}H_r\). Note that \(\frac{|H_{\mathsf{fast}}|}{|M_{\mathsf{fast}}|}\geq(1-\varepsilon)\) and \(\frac{|H_r|}{|M_r|}\geq(1-\varepsilon)\) for all \(r=1,\ldots,K\). This is clearly true for \(r=1\). For \(r\geq 2\), this follows because \(m_r\leq\frac{m_{r-1}}{1-\varepsilon}\). Hence, \(\mathsf{rwd}(\widetilde{O})\geq (1-\varepsilon)\mathit{OPT}\).
The assignment \(\widetilde{\sigma}\) is defined as follows. We drop all jobs assigned to machines in \(M_{\mathsf{fast}}-H_{\mathsf{fast}}\). Loop through indices \(r=1,\ldots,K\) in that order, and perform the following steps.
If \(r=1\), we move the jobs assigned to machines in \(H_1=M_1\), to machines in \(M_{\mathsf{fast}}-H_{\mathsf{fast}}\) (thus freeing up all machines in \(M_1\)). That is, for each machine \(i\in H_1\), we pick a distinct machine \(i'\in M_{\mathsf{fast}}-H_{\mathsf{fast}}\) and move all jobs assigned to \(i\), to machine \(i'\). This is always possible since \(|H_1|\leq|M_{\mathsf{fast}}|-|H_{\mathsf{fast}}|-1\). Also, after this movement, we still have at least one machine in \(M_{\mathsf{fast}}-H_{\mathsf{fast}}\) that does not have any jobs assigned to it. Let \(\overline{i}\in M_{\mathsf{fast}}-H_{\mathsf{fast}}\) be such a free machine.
If \(r>1\), we drop the jobs assigned to machines in \(M_r-H_r\), and for each machine \(i\in H_r\), pick a distinct machine \(i'\in M_{r-1}\) and move all the jobs assigned to \(i\), to machine \(i'\). Again, this is always possible since \(|H_r|\leq|M_{r-1}|\) for all \(r=2,\ldots,K\). After this movement all machines in \(M_r\) are free.
If \(r>1\) and \(W^{\mathsf{smth}}_i=0\) for machines in \(M_r\), then we move all jobs assigned to machines in \(H_{r+1}\cup H_{r+2}\cup\ldots\cup H_{K}\) to the free machine \(\overline{i}\in M_{\mathsf{fast}}-H_{\mathsf{fast}}\). Also terminate the loop here.
It is clear that \(\widetilde{\sigma}\) assigns precisely the jobs in \(H_{\mathsf{fast}}\cup\bigcup_{r=1}^{K}H_r\). We argue that [item:capacities] holds. When we move jobs from a machine \(i\in H_r\) to a machine \(i'\in M_{r-1}\) that does not have any jobs assigned to it, we are assigning \({ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}_i\) work to machine \(i'\). But note that \(W^{\mathsf{smth}}_{i'}\) is the work assigned by \(\sigma^*\) to the slowest machine in \(M_{r-1}\), which is therefore at least \({ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}_i\), since \({ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}={ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}^{{\:\!\downarrow}}\). So in this case, we have \(\ifmmode \settoheight{\xvec@height}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \else \settoheight{\xvec@height}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{work}}}({{\widetilde{\sigma}}})_{i'}\leqW^{\mathsf{smth}}_{i'}\). The other type of movement happens when, for some index \(r>1\), we assign all jobs assigned to machines in \(H_{r+1}\cup\ldots\cup H_{K}\) to the free machine in \(\overline{i}\in M_{\mathsf{fast}}-H_{\mathsf{fast}}\). But this happens because \(W^{\mathsf{smth}}_i=0\), for all machines \(i\in M_r\), which implies that the first machine in \(M_{r+1}\) has at most \({ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}_{i^*}/m\) work assigned to it under \(\sigma^*\). So machine \(\overline{i}\in M_{\mathsf{fast}}-H_{\mathsf{fast}}\) is assigned at most \({ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}_{i^*}\leq{ \ifmmode \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \else \settoheight{\xvec@height}{\mathsf{work}^*} \settodepth{\xvec@depth}{\mathsf{work}^*} \settowidth{\xvec@width}{\mathsf{work}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{work}^*}_{\overline{i}}=W^{\mathsf{smth}}_{\overline{i}}\) units of work. Thus, we have shown that \(\ifmmode \settoheight{\xvec@height}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \else \settoheight{\xvec@height}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settodepth{\xvec@depth}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \settowidth{\xvec@width}{{{\mathsf{work}}}({{\widetilde{\sigma}}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{work}}}({{\widetilde{\sigma}}})\leqW^{\mathsf{smth}}\). ◻
Recall that for a non-increasing vector \(v\in\mathbb{R}_{+}^{\mathsf{POS}_{N,\delta}}\), its expansion \(v^\mathsf{exp}\in\mathbb{R}_{+}^N\) is the vector: \(v^\mathsf{exp}_i=v_i\) for \(i\in\mathsf{POS}_{N,\delta}\) and \(v^\mathsf{exp}_i=v_{\mathsf{prev}(i)}\) for \(i\in[N]\setminus\mathsf{POS}_{N,\delta}\). Recall also that for \(u\in\mathbb{R}^N\) and \(\theta\in\mathbb{R}\), we define \(Q^{>\theta}(u):=\bigl|\{i\in[N]: u_i>\theta\}\bigr|\). The following results will be useful.
Theorem 34 (Claim 2.3 and Theorem 2.4 in [3]). Let \(u,v\in\mathbb{R}_+^N\), and \(\ell\in[N]\).
We have \(\mathsf{Top}_{\ell}(u)=\min_{t\geq 0}\bigl(\ell t+\sum_{i\in[M]}(u_i-t)^+\bigr) =\ell u^{{\:\!\downarrow}}_\ell+\sum_{i\in[M]}(u_i-u^{{\:\!\downarrow}}_\ell)^+\bigr) =\int_0^{\infty}\min\bigl\{\ell,Q^{>\theta}(u)\bigr\}d\theta\).
If \(\mathsf{Top}_{\ell}(u)\leq\alpha\mathsf{Top}_{\ell}(v)+\beta\) for all \(\ell\in[N]\), then \(h(u)\leq\alpha\cdot h(v)+\beta\cdot h(1,0,\ldots,0)\) for every monotone, symmetric norm \(h:R^N\mapsto\mathbb{R}_+\).
Proof of Lemma 1. As noted earlier, part (a) is precisely Lemma 2.8 (b) in [3].
For part (b), we mimic the proof of Lemma 2.8 (c) in [3]. We drop the subscripts \(N,\delta\) from \(\mathsf{POS}\), \(\mathsf{prev}\), \(\mathsf{next}\). Consider any index \(i\in[N]\). By Lemma 34 (a), we have \(\mathsf{Top}_{i}(\alpha)=\int_0^{\infty}\min\bigl\{i,Q^{>\theta}(\alpha)\bigr\}d\theta\). Note that \(Q^{>v_1}(\alpha)=0\), so we can cap the limit of integration at \(v_1\). Let \(\overline{\ell}=i\) if \(i\in\mathsf{POS}\) and \(\mathsf{prev}(i)\) otherwise. Observe that \(i\leq(1+\delta)\overline{\ell}\). We have \[\begin{align} \mathsf{Top}_{i}(\alpha) & \leq \int_0^{v_{\overline{\ell}}}id\theta +\sum_{\ell\in\mathsf{POS}:1<\ell\leq\overline{\ell}}\int_{v_\ell}^{v_{\mathsf{prev}(\ell)}}Q^{>\theta}(\alpha)d\theta \leq i\cdot v_{\overline{\ell}} +\sum_{\ell\in\mathsf{POS}:1<\ell\leq\overline{\ell}}(v_{\mathsf{prev}(\ell)}-v_\ell)Q^{>v_\ell}(\alpha) \notag \\ & \leq i\cdot v_{\overline{\ell}} +\sum_{\ell\in\mathsf{POS}:1<\ell\leq\overline{\ell}}(v_{\mathsf{prev}(\ell)}-v_\ell)(1+\delta)(\ell-1) \leq i\cdot v_{\overline{\ell}} +\sum_{\ell\in\mathsf{POS}:1<\ell\leq\overline{\ell}}(v_{\mathsf{prev}(\ell)}-v_\ell)(1+\delta)^2\mathsf{prev}(\ell). \end{align}\] The second inequality is because \(Q^{>\theta}(\alpha)\) is non-increasing in \(\theta\); the third follows from the conditions in the lemma statement; and the final inequality is because \(\ell-1\leq(1+\delta)\mathsf{prev}(\ell)\). Recall that \(\mathsf{prev}(1)=0\). Since \(i\leq(1+\delta)\overline{\ell}\leq(1+\delta)^2\overline{\ell}\), we can upper bound the final expression above by \((1+\delta)^2\sum_{\ell\in\mathsf{POS}:\ell\leq\overline{\ell}}v_\ell\bigl(\ell-\mathsf{prev}(\ell)\bigr)\).
Finally, observe that, since \(v\) is non-increasing, \(\sum_{\ell\in\mathsf{POS}:\ell\leq\overline{\ell}}v_\ell\bigl(\ell-\mathsf{prev}(\ell)\bigr)\) is the \(\mathsf{Top}_{\overline{\ell}}\)-norm of the vector \(w\in\mathbb{R}_{+}^N\), where \(w_j=v_j\) if \(j\in\mathsf{POS}\), and \(w_j=v_{\mathsf{next}(j)}\) if \(j\in[N]\setminus\mathsf{POS}\). We have \(w\leq v^{\mathsf{exp}}\) and \(\overline{\ell}\leq i\), so \(\sum_{\ell\in\mathsf{POS}:\ell\leq\overline{\ell}}v_\ell\bigl(\ell-\mathsf{prev}(\ell)\bigr)\leq\mathsf{Top}_{i}(v^{\mathsf{exp}})\). So we obtain that \(\mathsf{Top}_{i}(\alpha)\leq(1+\delta)^2\mathsf{Top}_{i}(v^{\mathsf{exp}})\) for all \(i\in[N]\). By Lemma 34 (b), this shows that \(h(\alpha)\leq(1+\delta)^2h(v^{\mathsf{exp}})\), and we have \((1+\delta)^2\leq 1+3\delta\) since \(\delta\leq 1\). ◻
Proof of Theorem 1. We have \(\mathsf{rwd}_e\leq\mathsf{rwd}'_e\cdot\frac{\varepsilon\cdot\mathsf{r_{max}}}{n}\leq\mathsf{rwd}_e+\frac{\varepsilon\cdot\mathsf{r_{max}}}{n}\) for all \(e\in[n]\). So for any \(T\subseteq[n]\), we have \(\mathsf{rwd}(T)\leq\mathsf{rwd}'(T)\cdot\frac{\varepsilon\cdot\mathsf{r_{max}}}{n}\leq\mathsf{rwd}(T)+\varepsilon\cdot\mathsf{r_{max}}\).
Applying the first inequality to the oprimal solution with \(\{\mathsf{rwd}_e\}_{e\in[n]}\) rewards yields \(\mathit{OPT}\leq\frac{\varepsilon\cdot\mathsf{r_{max}}}{n}\cdot\mathit{OPT}'\). Applying the second inequality to the optimal solution with \(\{\mathsf{rwd}'_e\}_{e\in[n]}\) rewards yields \(\frac{\varepsilon\cdot\mathsf{r_{max}}}{n}\cdot\mathit{OPT}'\leq\mathit{OPT}+\varepsilon\cdot\mathsf{r_{max}}\leq(1+\varepsilon)\mathit{OPT}\). This proves part (a).
For part (b), using the second inequality above and part (a), we have \[\begin{align} \mathsf{rwd}(T) & \geq\mathsf{rwd}'(T)\cdot\frac{\varepsilon\cdot\mathsf{r_{max}}}{n}-\varepsilon\cdot\mathsf{r_{max}} \geq\frac{1}{\rho}\cdot\mathit{OPT}'\cdot\frac{\varepsilon\cdot\mathsf{r_{max}}}{n}-\varepsilon\cdot\mathit{OPT}\\ & \geq\frac{1}{\rho}\cdot\mathit{OPT}-\varepsilon\cdot\mathit{OPT}. \qedhere \end{align}\] ◻
Proof of Claim 4. A sequence \(a_1,a_2,\ldots,a_k\) of nonnegative integers such that \(\sum_{i\in[k]}a_i\leq M\) can be mapped bijectively to the set of \(k+1\) integers \(a_1,a_2,\ldots,a_k,M-a_k\) from \(\{0\}\cup [M]\) that sum to \(M\). The number of such sequences of \(k+1\) integers is equal to the coefficient of \(x^M\) in the generating function \((1+x+\ldots+x^M)^{k+1}\). This is equal to the coefficient of \(x^M\) in \((1-x)^{-(k+1)}\), which is \(\binom{M+k}{M}\) using the binomial expansion. Let \(U=\max\{M,k\}\). We have \(\binom{M+k}{M}=\binom{M+k}{U}\leq\bigl(\frac{e(M+k)}{U}\bigr)^U\leq(2e)^U\).
If we have a non-increasing sequence \(a_1\geq a_2\geq \ldots \geq a_k\) of \(k\) integers from \(\llbracket{M}\rrbracket\), then we can map this bijectively to the set of \(k+1\) integers \(M-a_1,a_1-a_2,a_2-a_3,\ldots,a_k\) from \(\llbracket{M}\rrbracket\) that sum to \(M\). ◻
We briefly discuss how the machinery developed for minimum-norm covering problems can be used to obtain bicriteria guarantees for norm-budgeted packing problems where the norm budget is violated by a \((1+\varepsilon)\)-factor, for any \(\varepsilon>0\).
For \(\mathsf{NormBudgSepFL}\), we already obtain such a guarantee by combining Lemma 5 and Theorem 13: given a \(\beta\)-approximation algorithm for \(\mathsf{1FRP}\), we obtain a bicriteria \(\bigl(O(\beta),1+O(\varepsilon)\bigr)\)-approximation algorithm for \(\mathsf{NormBudgSepFL}\). So we focus on \(\mathsf{NormBudgKnap}\) and \(\mathsf{NormBudgMWIS}\), wherein \(w(T)\) is the size-weighted characteristic vector of \(T\).
We utilize the machinery from Section 2.2. Let \(\delta=\min\{\varepsilon,1\}\). We take \(\mathsf{POS}=\mathsf{POS}_{n,\delta}\). Recall that \(O^*\) denotes some fixed optimal solution. For \(u\in\mathbb{R}^n\) and \(\theta\in\mathbb{R}\), recall the notation \(Q^{>\theta}(u):=\bigl|\{i\in[n]: u_i>\theta\}\bigr|\). We may assume that \(f\) is normalized so that \(f(1,0,\ldots,0)=1\). As in the proof of Theorem 13, we can identify a polynomial-size set \(\mathcal{T}\subseteq\mathbb{R}_{+}^{\mathsf{POS}}\) containing a non-increasing vector \(\vec{t}\) such that \(\ifmmode \settoheight{\xvec@height}{{{w}}({O^*})} \settodepth{\xvec@depth}{{{w}}({O^*})} \settowidth{\xvec@width}{{{w}}({O^*})} \else \settoheight{\xvec@height}{{{w}}({O^*})} \settodepth{\xvec@depth}{{{w}}({O^*})} \settowidth{\xvec@width}{{{w}}({O^*})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({O^*})^{{\:\!\downarrow}}_\ell\leq t_\ell\leq(1+\varepsilon) \ifmmode \settoheight{\xvec@height}{{{w}}({O^*})} \settodepth{\xvec@depth}{{{w}}({O^*})} \settowidth{\xvec@width}{{{w}}({O^*})} \else \settoheight{\xvec@height}{{{w}}({O^*})} \settodepth{\xvec@depth}{{{w}}({O^*})} \settowidth{\xvec@width}{{{w}}({O^*})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({O^*})^{{\:\!\downarrow}}_\ell+\frac{\varepsilon\cdot B}{n}\). Given \(\vec{t}\), we aim to find a maximum-reward solution \(T\in\mathcal{S}\) satisfying \(Q^{>t_\ell}\bigl( \ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})\bigr)\leq\ell-1\) for all \(\ell\in\mathsf{POS}\). Lemma 1 coupled with the bounds on the \(t_\ell\)’s then implies that \(f\bigl( \ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})\bigr)\leq\bigl(1+O(\varepsilon)\bigr)B\).
Note that the constraints \(Q^{>t_\ell}\bigl( \ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})\bigr)\leq\ell-1\) for all \(\ell\in\mathsf{POS}\) can be captured by a matroid. So incorporating these constraints in:
\(\mathsf{NormBudgKnap}\), yields an (standard) \(\mathsf{MWIS}\) problem on a matroid, which can be solved exactly, so we obtain a \((1,1+\varepsilon)\)-approximation here;
\(\mathsf{NormBudgMWIS}\) on a matroid, yields a weighted matroid-intersection problem, which can be solved exactly, so we obtain a \((1,1+\varepsilon)\)-approximation here;
\(\mathsf{NormBudgMWIS}\) on a \(k\)-set system, yields an (standard) \(\mathsf{MWIS}\) problem on a \((k+1)\)-set system, which admits (slightly better than) a \((k+1)\)-approximation, so we obtain a \(\bigl(k+1,1+\varepsilon)\)-approximation here.
Fix a facility \(i\). Recall that \(\mathcal{M}_i=(\mathcal{C},\mathcal{S}_i)\), we have client-rewards \(v\in\mathbb{R}_{+}^\mathcal{C}\) and client-weights \(\mathsf{wt}\in\mathbb{R}_{+}^C\), and a budget \(t\in\mathbb{R}_{+}\). Define \(\mathcal{S}_{i,t}:=\{S\in\mathcal{S}_i: \mathsf{wt}(S)\leq t\}\). In budgeted\(\mathsf{1FRP}\), we seek a maximum-reward solution \(A\in\mathcal{S}_{i,t}\). Let \(\mathcal{A}^{\mathsf{1FRP}}\) be the given \(\beta\)-approximation algorithm for \(\mathsf{1FRP}\). Let \(V^*=\max_{S\in\mathcal{S}_{i,t}}v(S)\), and \(S^*\in\mathcal{S}_{i,t}\) be such that \(v(S^*)=V^*\). Let \(\mathsf{Val}\) be a given target value. We will show that as long as \(\mathsf{Val}\leq V^*\), we can find \(R\in\mathcal{S}_i\) such that \(v(R)\geq\frac{\mathsf{Val}}{\beta+1}\) and \(\mathsf{wt}(R)\leq(1+\varepsilon)t\); call this a “success”. We can then do binary search in the range \([0,v(\mathcal{C})]\) to find an interval \([\mathsf{Val},\mathsf{Val}+\gamma]\), such that we have success for \(\mathsf{Val}\), and we do not have success for \(\mathsf{Val}+\gamma\). It must therefore be that \(V^*<\mathsf{Val}+\gamma\) and by taking \(\gamma\) sufficiently small, but still such that \(\log\bigl(\frac{1}{\gamma}\bigr)\) is polynomially bounded in the input size, we obtain that \(V^*\leq\mathsf{Val}\).
So suppose we have a target value \(\mathsf{Val}\leq V^*\). We may assume that \(\varepsilon\leq 1\). We may assume that we know \(Q^*=\{j\in S^*: \mathsf{wt}_j\geq\varepsilont\}\) since \(|Q^*|\leq\frac{1}{\varepsilon}\). (More precisely, we run the steps below for all \(Q\in\mathcal{S}_{i,t}\) with \(|Q|\leq\frac{1}{\varepsilon}\) and \(\mathsf{wt}_j\geq\varepsilont\) for all \(j\in Q\), and return the best solution found.) Let \(\mathcal{C}'=\{j\in\mathcal{C}: \mathsf{wt}_j<\varepsilont\}\). We use \(\mathcal{A}^{\mathsf{1FRP}}\) to compute a set \(Z\in\mathcal{S}_i\) with \(Z\subseteq Q^*\cup \mathcal{C}'\) that approximately maximizes \(v(S)-\frac{\mathsf{Val}}{(\beta+1)t}\cdot\mathsf{wt}(S)\) over all \(S\in\mathcal{S}_i\) satisfying \(S\subseteq Q^*\cup\mathcal{C}'\). This can be cast as an \(\mathsf{MWIS}\) problem on the independence system \(\mathcal{M}_i\) as follows. Let \(\lambda_j:=v_j-\tfrac{\mathsf{Val}}{(\beta+1)t}\cdot \mathsf{wt}_j\) for all \(j\in Q^*\cup\mathcal{C}'\), and \(\lambda_j:=0\) otherwise. Define \(\widetilde{\lambda}_j:=\lambda_j\) if \(\lambda_j\geq 0\), and \(\widetilde{\lambda}_j:=0\) otherwise. Then the \(\mathsf{MWIS}\) problem on \(\mathcal{M}_i\) with \(\widetilde{\lambda}\) client rewards is the same as maximizing \(v(S)-\frac{\mathsf{Val}}{(\beta+1)t}\cdot\mathsf{wt}(S)\) over all \(S\in\mathcal{S}_i\) with \(S\subseteq Q^*\cup\mathcal{C}'\). This is because we can always take a solution \(S\) to this \(\mathsf{MWIS}\) problem and discard clients with \(\widetilde{\lambda}_j=0\) to obtain a set \(T\in\mathcal{S}_i\) with \(T\subseteq Q^*\cup\mathcal{C}'\), without affecting the \(\widetilde{\lambda}\)-value.
We have \(\lambda(S^*)\geq v(S^*)-\frac{\mathsf{Val}}{(\beta+1)t}\cdot\mathsf{wt}(S^*) \geq V^*-\frac{\mathsf{Val}}{\beta+1}\geq\frac{\beta}{\beta+1}\cdot\mathsf{Val}\), so since \(\mathcal{A}^{\mathsf{1FRP}}\) is a \(\beta\)-approximation algorithm for (in particular) the \(\mathsf{MWIS}\) problem on \(\mathcal{M}_i\), we obtain that \(\widetilde{\lambda}(Z)\geq\lambda(Z)\geq\frac{\mathsf{Val}}{\beta+1}\). As noted above, we may assume that \(\lambda_j>0\) for all \(j\in Z\), because otherwise, we can simply delete \(j\) from \(Z\) without decreasing the \(\widetilde{\lambda}\)-value of the set.
Now let \(R\) be a minimal subset of \(Z\) containing \(Z\cap Q^*\), with \(\mathsf{wt}(R)\geq t\). Note that this is well defined, since \(Q^*\in\mathcal{S}_{i,t}\). Since \(Z-Q^*\subseteq\mathcal{C}'\), we have \(\mathsf{wt}(R)\leq(1+\varepsilon)t\). If \(R=Z\), then \(v(R)\geq\lambda(R)=\lambda(Z)=\widetilde{\lambda}(Z)\geq\frac{\mathsf{Val}}{\beta+1}\). Otherwise, since \(\lambda_j>0\) for all \(j\in Z\), we have \(v(R)\geq\frac{\mathsf{Val}}{(\beta+1)t}\cdot\mathsf{wt}(R)\geq\frac{\mathsf{Val}}{\beta+1}\). So we always have \(v(R)\geq\frac{\mathsf{Val}}{\beta+1}\). 0◻
When the \(\mathcal{M}_i\)s are matroids, budgeted\(\mathsf{1FRP}\) amounts to finding a maximum-weight independent set subject to a knapsack constraint, which admits a PTAS [23], [24], i.e. a \((1+\varepsilon,1)\)-approximation, for any \(\varepsilon>0\). There is also a PTAS when each \(\mathcal{M}_i\) corresponds to the intersection of two matroids [23], [24].
For the \((1+\varepsilon,1+\varepsilon)\)-approximation algorithm, which we also refer to as a bicriteria PTAS, we identify a set \(A\) of jobs with \(\mathsf{rwd}(A)\geq(1-\varepsilon)^2\mathit{OPT}\) that admits an assignment satisfying the norm-budget constraint exactly. Given this, one can use the PTAS for minimum-norm load-balancing on identical machines from [3] to find an assignment for \(A\) that violates the norm=budget constraint by a \((1+\varepsilon)\)-factor. Combining the bicriteria PTAS with the PTAS for \(\mathsf{NormBudgKnap}\) using Theorem 8, yields the \((2+\varepsilon)\)-approximation for \(\mathsf{NormBudgMaxGAP}\) on identical machines.
We find \(A\) using the same approach as for norm-budgeted knapsack. Let \(\sigma^*:O^*\mapsto[m]\) be an optimal solution, and \({ \ifmmode \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \else \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{load}^*}= \ifmmode \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma^*}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma^*}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma^*}})} \else \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma^*}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma^*}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma^*}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{load}}}({{\sigma^*}})\) be the load-vector induced by \(\sigma^*\). As always, we may assume that all rewards are integers bounded by \(\frac{n}{\varepsilon}\). We may also assume that we know the maximum reward \(\mathsf{r_{max}}\) of a job in \(O^*\), and that \(\mathsf{r_{max}}\) is the maximum reward among all jobs. For an integer \(q\geq 0\), define \(\tau_q:=\frac{\mathsf{r_{max}}}{(1+\varepsilon)^q}\), and \(\mathsf{Bkt}_q:=\bigl\{j\in J:\frac{\tau_q}{1+\varepsilon}<\mathsf{rwd}_j\leq\tau_q\bigr\}\). Let \({n_{\mathsf{bkt}}}\leq O\bigl(\log\frac{n}{\varepsilon}\bigr)\) be the number of reward buckets that together cover all jobs with non-zero reward. As with norm-budgeted knapsack, assume that we have an estimate \(\widetilde{\mathsf{opt}}\) such that \(\widetilde{\mathsf{opt}}\leq\mathit{OPT}\leq(1+\varepsilon)\widetilde{\mathsf{opt}}\). By enumeration over a polynomial-size set, we may assume that we know \(\widetilde{R}_q:=\bigl\lfloor\frac{\mathsf{rwd}(O^*\cap\mathsf{Bkt}_q)}{\Delta}\bigr\rfloor\) for all \(q\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket\), where \(\Delta=\frac{\varepsilon\cdot\widetilde{\mathsf{opt}}}{{n_{\mathsf{bkt}}}}\). Define \(\widetilde{N}_q=\widetilde{R}_q\cdot\frac{\Delta}{\tau_q}\) for \(q\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket\).
Now, we claim that if we select, for each \(q\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket\), the set \(S_q\) of \(\bigl\lceil\widetilde{N}_q\bigr\rceil\) smallest-size jobs in \(\mathsf{Bkt}_q\), then the union \(A\) of these \(S_q\)-sets has the desired properties: we have \(\mathsf{rwd}(A)\geq(1-\varepsilon)^2\mathit{OPT}\), and there is an assignment \(\sigma:A\mapsto[m]\) such that \(f( \ifmmode \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma}})} \else \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{load}}}({{\sigma}}))\leq B\).
The analysis in the proof of Theorem 2 shows that the quality of the \(\widetilde{R}_q\) and \(\widetilde{N}_q\) estimates is good enough to yield \(\mathsf{rwd}(A)\geq(1-\varepsilon)^2\mathit{OPT}\), since \(\mathsf{rwd}(O^*\cap\mathsf{Bkt}_q)<(1+\varepsilon)\mathsf{rwd}(S_q)+\Delta\) for every \(q\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket\).
We also have \(\ifmmode \settoheight{\xvec@height}{{p}({S_q})} \settodepth{\xvec@depth}{{p}({S_q})} \settowidth{\xvec@width}{{p}({S_q})} \else \settoheight{\xvec@height}{{p}({S_q})} \settodepth{\xvec@depth}{{p}({S_q})} \settowidth{\xvec@width}{{p}({S_q})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {p}({S_q})\leq \ifmmode \settoheight{\xvec@height}{{p}({O^*\cap\mathsf{Bkt}_q})} \settodepth{\xvec@depth}{{p}({O^*\cap\mathsf{Bkt}_q})} \settowidth{\xvec@width}{{p}({O^*\cap\mathsf{Bkt}_q})} \else \settoheight{\xvec@height}{{p}({O^*\cap\mathsf{Bkt}_q})} \settodepth{\xvec@depth}{{p}({O^*\cap\mathsf{Bkt}_q})} \settowidth{\xvec@width}{{p}({O^*\cap\mathsf{Bkt}_q})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {p}({O^*\cap\mathsf{Bkt}_q})\) for every \(q\in\llbracket{{n_{\mathsf{bkt}}}}\rrbracket\), and so \(\ifmmode \settoheight{\xvec@height}{{p}({A})} \settodepth{\xvec@depth}{{p}({A})} \settowidth{\xvec@width}{{p}({A})} \else \settoheight{\xvec@height}{{p}({A})} \settodepth{\xvec@depth}{{p}({A})} \settowidth{\xvec@width}{{p}({A})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {p}({A})\leq \ifmmode \settoheight{\xvec@height}{{p}({O^*})} \settodepth{\xvec@depth}{{p}({O^*})} \settowidth{\xvec@width}{{p}({O^*})} \else \settoheight{\xvec@height}{{p}({O^*})} \settodepth{\xvec@depth}{{p}({O^*})} \settowidth{\xvec@width}{{p}({O^*})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {p}({O^*})\). Let \(\pi:A\mapsto O^*\) be a one-to-one mapping such that \(p_j\leq p_{\pi(j)}\) for all \(j\in A\). So, if we consider the assignment \(\sigma(j)=\sigma^*(\pi(j))\) for every \(j\in A\), then the load vector \(\ifmmode \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma}})} \else \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{load}}}({{\sigma}})\) is coordinate-wise dominated by \({{ \ifmmode \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \else \settoheight{\xvec@height}{\mathsf{load}^*} \settodepth{\xvec@depth}{\mathsf{load}^*} \settowidth{\xvec@width}{\mathsf{load}^*} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} \mathsf{load}^*}}\). This is because \(\ifmmode \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma}})} \else \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{load}}}({{\sigma}})_i=\sum_{j\in A: \sigma^*(\pi(j))=i}p_j\leq\sum_{j\in A:\sigma^*(\pi(j))=i}p_{\pi(j)}\leq \ifmmode \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma^*}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma^*}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma^*}})} \else \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma^*}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma^*}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma^*}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{load}}}({{\sigma^*}})_i\). Therefore, \(f( \ifmmode \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma}})} \else \settoheight{\xvec@height}{{{\mathsf{load}}}({{\sigma}})} \settodepth{\xvec@depth}{{{\mathsf{load}}}({{\sigma}})} \settowidth{\xvec@width}{{{\mathsf{load}}}({{\sigma}})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{\mathsf{load}}}({{\sigma}}))\leq B\). 0◻
Proof of Lemma 20. Define \(\Delta=\frac{\varepsilon\cdot\mathsf{est}}{k}\). Let \[\mathcal{R}:=\biggl\{b\in\mathbb{R}_{+}^k:\;b_r\text{ is a multiple of }\Delta\;\forall r\in[k], \quad \sum_{r=1}^kb_r\leq\Bigl(1+\tfrac{1}{\varepsilon}\Bigr)k\Delta\biggr\}.\] By Claim 4, we have \(|\mathcal{R}|\leq 2^{O(k/\varepsilon)}\) since \(\bigl(\frac{b_r}{\Delta}\bigr)_{r\in[k]}\) is a sequence of \(k\) nonnegative integers that sum up to at most \(\bigl(1+\frac{1}{\varepsilon}\bigr)k\). It is easy to give a recursive procedure that enumerates all sequences in \(\mathcal{R}\), where each leaf of the recursion tree is labeled by a distinct sequence in \(\mathcal{R}\), so elements in \(\mathcal{R}\) can be enumerated in time \(2^{O(k/\varepsilon)}\).
Define \(\widetilde{a}_r=\bigl\lfloor\frac{a_r}{\Delta}\bigr\rfloor\cdot\Delta\) for all \(r\in[k]\). Then, \(a_r-\Delta\leq\widetilde{a}_r\leq a_r\) and is a multiple of \(\Delta\) for all \(r\in[k]\), and \(\sum_{r=1}^k\widetilde{a}_r\leq\Gamma\leq(1+\varepsilon)\mathsf{est}=\bigl(1+\frac{1}{\varepsilon}\bigr)k\Delta\). Therefore, \(\widetilde{a}\in\mathcal{R}\). Also \(\sum_{r=1}^k\widetilde{a}_r\geq\sum_{r=1}^ka_r-k\Delta=\sum_{r=1}^ka_r-\varepsilon\cdot\mathsf{est}\). ◻
Proof of Claim 28. We have: (i) \(u_\ell=v_\ell\) for all \(\ell\in[m]-\{i,i'\}\), (ii) \(\max\{u_i,u_{i'}\}<v_{i'}\) and (iii) \(v_i<v_{i'}\). Let \(\pi:[m]\mapsto[m]\) be the permutation corresponding to \(v^{{\:\!\downarrow}}\), i.e., \(v_{\pi(1)}\geq v_{\pi(2)}\geq\ldots\geq v_{\pi(m)}\). Let \(\ell=\pi^{-1}(i')\). Then \(\ell<\pi^{-1}(i)\) since \(v_{i'}>v_i\). Also, for any \(j<\ell\), we have \(\pi(j)\in[m]-\{i,i'\}\) and \(u_{\pi(j)}=v_{\pi(j)}\geq v_{i'}>\max\{u_i,u_{i'}\}\). It follows that \(u^{{\:\!\downarrow}}_j=v^{{\:\!\downarrow}}_j\) for all \(j=1,\ldots,\ell-1\). Also \(u^{{\:\!\downarrow}}_\ell\leq\max\{u_i,u_{i'}\}<v_{i'}=v^{{\:\!\downarrow}}_\ell\). Hence, \(u^{{\:\!\downarrow}}\) is lexicographically smaller than \(v^{{\:\!\downarrow}}\).
To show that \(h(u)\leq h(v)\), we argue that \(\mathsf{Top}_{j}(u)\leq\mathsf{Top}_{j}(v)\) for all \(j\in[m]\). Consider any \(j\in[m]\), and let \(S\subseteq[n]\) be the coordinates of \(u\) corresponding to the first \(j\) coordinates of \(u^{{\:\!\downarrow}}\); in particular, we have \(\mathsf{Top}_{j}(u)=\sum_{r\in S}u_r\). If \(S\) contains \(i,i'\), or \(S\subseteq[m]-\{i,i'\}\), then we have \(\sum_{r\in S}u_r=\sum_{r\in S}v_r\leq\mathsf{Top}_{j}(v)\). If \(S\) contains \(i'\) but not \(i\), then \(\sum_{r\in S}u_r<\sum_{r\in S}v_r\leq\mathsf{Top}_{j}(v)\). If \(S\) contains \(i\) but not \(i'\), then taking \(T=S-\{i\}\cup\{i'\}\), we have \(\sum_{r\in S}u_r<\sum_{r\in T}v_r\leq\mathsf{Top}_{j}(v)\). ◻
Proof of Lemma 21. Let \(L^*\) be the vector \(\bigl(\max\{\Lambda_i,z^*\}\bigr)_{i\in[m]}\), where recall that \(\Lambda_i=p\bigl(\sigma^{-1}(i)\bigr)\) for all \(i\in[m]\). Clearly, \((x^*,L^*)\) is a feasible solution to ?? . (Note that the inequality \(\sum_{j\in J}p_jx^*_{ij}\leq (z^*-\Lambda_i)^+\) is tight for all \(i\in I\), since adding these inequalities gives the same quantity \(p(J_2)\) on the LHS and RHS.) Since the feasible region of ?? is closed and bounded, and \(f\) is continuous, ?? has an optimal solution. Let \((x, L)\) be an optimal solution to ?? such that \(L^{{\:\!\downarrow}}\) is lexicographically smallest among the sorted load-vectors of all optimal solutions to ?? .
If \(L^*\leq L\), then \(f(L^*)\leq f(L)\), so \((x^*,L^*)\) is also an optimal solution. So suppose \(L^*_i>L_i\) for some \(i\in I\). In this case, we arrive at a contradiction. It must be that \(L^*_i=z^*>\Lambda_{i}\). There must be some \(i'\in I\) such that \(L_{i'}>\max\{\Lambda_{i'},z^*\}>L_i\). Otherwise, \[p(J_2)=\sum_{r\in I}(L_r-\Lambda_r)<\sum_{r\in I}\bigl(\max\{\Lambda_r,z^*\}-\Lambda_r\bigr) =\sum_{r\in I}(z^*-\Lambda_r)^+=p(J_2)\] which yields a contradiction. The first equality above is because \(L_r-\Lambda_r=\sum_{j\in J_2}p_jx_{rj}\) and \(\sum_{r\in I}x_{rj}=1\) for every \(j\in J_2\); the second inequality is because \(L_i<\max\{\Lambda_i,z^*\}\); the last equality is from the definition of \(z^*\). Since \(i'\in I\) and \(L_{i'}>\max\{\Lambda_{i'},z^*\}\), there is some job \(j\in J_2\) with \(x_{i'j}>0\). We can now decrease \(x_{i'j}\) by some \(\theta>0\) and increase \(x_{ij}\) by \(\theta\), which has the effect of decreasing \(L_{i'}\) and increasing \(L_i\) by \(\kappa=p_j\theta\). We can choose \(\theta\) so that \(\kappa<L_{i'}-L_i\). So if \(L'\) denotes the new load vector, by Claim 28, we have that \(f(L')\leq f(L)\), so \(L'\) corresponds to the load vector of an optimal solution. But also \((L')^{{\:\!\downarrow}}\) is lexicographically smaller than \(L^{{\:\!\downarrow}}\) (by Claim 28), which contradicts the choice of \((x,L)\). ◻
An ordered norm is a nonnegative linear combination of \(\mathsf{Top}_{\ell}\) norms. Equivalently, an ordered norm \(f:\mathbb{R}^n\mapsto\mathbb{R}_{+}\) is specified by a non-increasing vector \(\mu\in\mathbb{R}_{+}^n\), which defines \(f(v):=\sum_{i\in[n]}\mu_iv^{{\:\!\downarrow}}_i\) for \(v\geq 0\).19
Let \(\bigl([n],\{w_i,\mathsf{rwd}_i\}_{i\in [n]},f:\mathbb{R}^n\mapsto\mathbb{R}_{+},B\bigr)\) be an instance of \(\mathsf{NormBudgKnap}\), where \(f\) is an ordered norm specified as above by a non-increasing vector \(\mu\in\mathbb{R}_{+}^n\). We first apply Theorem 1 (scaling and rounding) to obtain that \(\mathsf{rwd}_e\) is an integer and \(\mathsf{rwd}_e\leq\bigl\lceil\frac{n}{\varepsilon}\bigr\rceil\) for all \(e\in[n]\), losing a \((1-\varepsilon)\)-factor in the optimal value. Let \(\mathsf{r_{max}}\) be the maximum (scaled) reward of an item. The key observation that enables the dynamic program (DP) is that if we know that item \(e\) is the \(j\)-th largest-size item in our solution, then we can determine its norm contribution to be \(\mu_jw_e\) since we have an ordered norm.
This motivates the following DP. Order items so that \(w_1\geq\ldots\geqw_n\). For \(i,j\in\llbracket{n}\rrbracket\) and integers \(\mathsf{Val}\in[0,n\cdot\mathsf{r_{max}}]\), define \[D(i,j,\mathsf{Val})\, :=\, \min\;\bigl\{f( \ifmmode \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \else \settoheight{\xvec@height}{{{w}}({T})} \settodepth{\xvec@depth}{{{w}}({T})} \settowidth{\xvec@width}{{{w}}({T})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({T})):\;\;T\subseteq[i], \quad |T|=j, \quad \mathsf{rwd}(T)\geq\mathsf{Val}\bigr\}.\] We set \(D(i,j,\mathsf{Val})=\infty\) to denote that there is no feasible solution to the underlying problem, and use the convention that \(\infty+x=\infty\) for any \(x\in\mathbb{R}\). We can calculate the \(D(\cdot)\) entries via the following DP. \[\begin{align} {2} \text{Base cases:} \quad & \text{for all}\;i\in\llbracket{n}\rrbracket, \quad && D(i,0,\mathsf{Val})=0\;\,\text{if \mathsf{Val}=0},\quad D(i,0,\mathsf{Val})=\infty\;\text{otherwise}; \\ & && D(i,j,\mathsf{Val})=\infty\;\, \text{if }i<j. \\ \text{DP recurrence:} \quad & \text{for other}\;i,j,\mathsf{Val}, \quad && D(i,j,\mathsf{Val})=\min\bigl\{D(i-1,j-1,\mathsf{Val}-\mathsf{rwd}_i)+\mu_jw_i,\,D(i-1,j,\mathsf{Val})\bigr\}. \end{align}\]
The two terms in the RHS of the DP recurrence correspond to including item \(i\) in the solution, which means that it is the \(j\)-th largest item in the solution, or not including item \(i\). Clearly, we can calculate the \(D(\cdot)\) entries in \(O(n^3\cdot\mathsf{r_{max}})=O\bigl(\frac{n^4}{\varepsilon}\bigr)\) time. The optimum value is then found by considering the largest value \(\mathsf{Val}\) for which \(D(n,j,\mathsf{Val})\) is at most \(B\) for some \(j\in\llbracket{n}\rrbracket\), and the optimal solution can be computed by tracing back to see how \(D(n,j,\mathsf{Val})\) is computed. By Theorem 1, the optimal solution to the scaled instance yields reward at least \((1-\varepsilon)\cdot\mathit{OPT}\).
We note that this DP approach does not seem amenable to handle more-general monotone symmetric norms, even the case where the norm is the maximum of two ordered norms. For this setting, one can come up with a pseudopolynomial time algorithm, by keeping track of the budget consumption under each individual ordered norm in the DP state; but this does not translate to an approximation scheme. A monotone, symmetric norm may in general be the pointwise maximum of an arbitrary (even uncountable) collection of ordered norms, so an extension of the DP-based approach to handle this general setting seems rather infeasible.
{dalemanespinosa, cswamy}@uwaterloo.ca. Dept. of Combinatorics and Optimization, Univ. Waterloo, Waterloo, ON N2L 3G1, Canada. Supported in part by C. Swamy’s NSERC Discovery grant 2024-04532.↩︎
sibrahimpur@ethz.ch. ETH Zurich, Zurich, Switzerland.↩︎
The \(\mathsf{Top}_{\ell}\)-norm of a vector \(v\geq 0\) is defined as the sum of its \(\ell\) largest coordinates. An ordered norm is a nonnegative linear combination of \(\mathsf{Top}_{\ell}\) norms.↩︎
An exception is Kesselheim et al. [11], who do formulate a packing problem with a norm budget constraint as a means of solving an online covering problem with a norm-based objective, which is their primary problem of concern. They violate the norm budget constraint, and as we discuss under “Related work,” our work can be seen as complementary to their work. Also somewhat related is Neogi et al. [12], who consider a mechanism-design setting with multiple \(\mathsf{Top}_{\ell}\)-budget constraints; we discuss this also under “Related work.”↩︎
In non-uniform \(\mathsf{MKP}\), the capacities \(\{u_i\}_{i\in[m]}\) of the knapsacks may be different; by viewing \(u_i\) as the speed of a machine \(i\) and setting the norm budget to \(1\) (with the \(\ell_\infty\) norm), we can cast this as \(\mathsf{NormBudgMaxGAP}\) on related machines.↩︎
Given an increasing symmetric, convex function \(h:\mathbb{R}_{+}^m\mapsto\mathbb{R}_{+}\) with \(h(0)=0\), and a budget constraint \(h(x)\leq B\), consider the function \(f_h(x):=\inf\bigl\{\alpha>0: h(|x|/\alpha)\leq B\}\). It is not to hard to see that \(f_h\) is a monotone, symmetric norm, and the constraint \(h(x)\leq B\) is equivalent to the norm-budget constraint \(f_h(x)\leq 1\).↩︎
Observe that even if the individual resource constraints come from a special class of norms, say \(\ell_p\) norms, the resulting aggregated norm will not in general belong to the same class.↩︎
This is an instance of the generalized \((f^{\mathsf{in}},f^{\mathsf{out}})\)-clustering problem introduced by [7], where the inner norm \(f^{\mathsf{in}}\) used to aggregate the assignment costs of clients assigned to a facility and calculate the cost of the facility is \(\ell_1\), and the outer norm \(f^{\mathsf{out}}\) applied to the facility-cost vector is \(f\).↩︎
Their focus is on the mechanism-design setting with private item sizes, but their guarantee does not improve in the algorithmic setting where all information is public.↩︎
This is a very basic primitive that is even weaker than assuming value-oracle access to the norm \(f\), and can often be obtained for a rational vector \(v\) even when the norm value itself may be irrational. For instance for \(\ell_p\) norms, where \(p\) is an integer, we can efficiently compute \(\ell_p(v)^p\) and compare this with \(\lambda^p\).↩︎
These examples are actually \(k\)-extendible systems [25], which form a subclass of \(k\)-set systems.↩︎
More precisely, since \(\mathsf{NormBudgMatch}\) requires a norm over \(\mathbb{R}^{|E|}\), where \(E\) is the edge-set of the graph, we lift \(f\) to a norm \(f':\mathbb{R}^{m|J|}\mapsto\mathbb{R}_+\) by setting \(f'(v)=f\bigl((v^{{\:\!\downarrow}}_\ell)_{\ell=1,\ldots,m}\bigr)\).↩︎
This is the only place where we use the (sub-) homogeneity of the norm \(f\).↩︎
We are using the following Chernoff bound. Let \(X_1,\ldots,X_n\) be independent \([0,1]\) random variables with \(\sum_{i\in[n]}{\textstyle{\boldsymbol{\mathop{\mathrm{E}}}}_{{}}}\bigl[X_i\bigr]\leq\mu\). Then, for \(\theta\in[0,1]\), we have \(\Pr[\sum_{i\in[n]}X_i\geq(1+\theta)\mu]\leq e^{-\theta^2\mu/3}\).↩︎
For example, suppose \(n=1000\), and \(|O^*|=n_{\mathsf{opt}}=240\) with \(o_{240}=480\), i.e., the last item in \(O^*\) is the \(480\)-th item in our ordering of items. Then, \(\ell^{\mathsf{last}}=128\). We have \(I^*=\{o_1,o_2,o_4,o_8,o_{16},o_{32},o_{64},o_{128}\}\), and \(o_0:=0\) and \(o_{256}=1000\).↩︎
To elaborate, Lemma 17 (and Lemma 11) prescribes some structural conditions depending on an item-set \(O^*\), and actually shows that \(\ifmmode \settoheight{\xvec@height}{{{w}}({A})} \settodepth{\xvec@depth}{{{w}}({A})} \settowidth{\xvec@width}{{{w}}({A})} \else \settoheight{\xvec@height}{{{w}}({A})} \settodepth{\xvec@depth}{{{w}}({A})} \settowidth{\xvec@width}{{{w}}({A})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({A})^{{\:\!\downarrow}}\leq \ifmmode \settoheight{\xvec@height}{{{w}}({O^*})} \settodepth{\xvec@depth}{{{w}}({O^*})} \settowidth{\xvec@width}{{{w}}({O^*})} \else \settoheight{\xvec@height}{{{w}}({O^*})} \settodepth{\xvec@depth}{{{w}}({O^*})} \settowidth{\xvec@width}{{{w}}({O^*})} \fi \def\xvec@arg{} \def\xvec@dd{:} \def\xvec@d{.} \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{ \kern.05em \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,0em)--(\xvec@width-.05em,0em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,.15em); \draw (\xvec@width-.05em,0em)--(\xvec@width-.25em,-.15em); \ifx\xvec@arg\xvec@d \fill(\xvec@width*.45,.5ex) circle (.5pt); \else\ifx\xvec@arg\xvec@dd \fill(\xvec@width*.30,.5ex) circle (.5pt); \fill(\xvec@width*.65,.5ex) circle (.5pt); \fi\fi \end{tikzpicture} }}} {{w}}({O^*})^{{\:\!\downarrow}}\) for any item-set \(A\) satisfying these conditions. Also, we prove that a specific set (depending on \(O^*\)) in our portfolio \(\mathcal{C}\) obtains good reward relative to \(\mathsf{rwd}(O^*)\) and satisfies the stated conditions.↩︎
Given distinct vectors \(u,v\in\mathbb{R}^m\), we say that \(u\) is lexicographically smaller than \(v\) if for some \(i\in[m]\), we have \(u_i<v_i\) and \(u_{i'}=v_{i'}\) for all \(i'=1,\ldots,i-1\).↩︎
For \(v\in\mathbb{R}^n-\mathbb{R}_{+}^n\), we define \(f(v)=f\bigl(\{|v_i|\}_{i\in[n]}\bigr)\).↩︎