We consider the
k-
Service Assignment problem (
\(k\)-SA). The input consists of a network that contains servers and clients. Associated with each client is a demand and a profit. In addition, each client
c has a
service requirement
, where
\(\kappa (c)\) is a positive integer. A client
c is
satisfied only if its demand is handled by exactly
\(\kappa (c)\) neighboring servers. The objective is to maximize the total profit of satisfied clients, while obeying the given capacity limits of the servers. We focus here on the more challenging case of hard constraints, where no profit is granted for partially satisfied clients. This models, e.g., when a client wants, for reasons of fault tolerance, a file to be stored at
\(\kappa (c)\) or more nearby servers. Other motivations from the literature include resource allocation in 4G cellular networks and machine scheduling on related machines with assignment restrictions. In the
r-restricted version of
\(k\)-SA, no client requires more than an
r-fraction of the capacity of any adjacent server. We present a (centralized) polynomial-time
-approximation algorithm for
r-restricted
\(k\)-SA. A variant of this algorithm achieves an approximation ratio of
when given a resource augmentation factor of
\(1+r\). We use the latter result to present a
-approximation algorithm for
\(k\)-SA. In the distributed setting, we present: (i) a
-approximation algorithm for
r-restricted
\(k\)-SA, (ii) a
-approximation algorithm that uses a resource augmentation factor of
\(1+r\) for
r-restricted
\(k\)-SA, both for any constant
\(\varepsilon >0\), and (iii) an
-approximation algorithm for
\(k\)-SA (in expectation). The three distributed algorithms run in
\(O(k^2 \varepsilon ^{-2} \log ^3 n)\) synchronous rounds (with high probability). In particular, this yields the first distributed
-approximation of
\(1\)-SA.