A submodular agent has a utility function that is a
submodular set function. This means that the agent's utility has
decreasing marginals. Submodular utilities are more general than gross-substitute utilities.
Hardness Welfare maximization with submodular agents is NP-hard. Moreover, it cannot be approximated to a factor better than (1-1/e)≈0.632 unless P=NP. Moreover, a better than (1-1/e) approximation would require an exponential number of queries to a
value oracle, regardless of whether P=NP.
Greedy algorithm The maximum welfare can be approximated by the following polynomial-time
greedy algorithm: • Initialize
X1 =
X2 = ... =
Xn = empty. • For every item
g (in an arbitrary order): • Compute, for each agent
i, his
marginal utility for
g, defined as:
ui(
Xi+
g) -
ui(
Xi). • Give item
g to an agent with the largest marginal utility. Lehman, Lehman and Nisan regarding the maximization of a single submodular valuation over a matroid). The proof idea is as follows. Suppose the algorithm allocates an item
g to some agent
i. This contributes to the welfare some amount
v, which is marginal utility of
g for
i at that point. Suppose that, in the optimal solution,
g should be given to another agent, say
k. Consider how the welfare changes if we move
g from i to
k: • The utility of
k increases by his marginal utility of
g, which at most
v by the greedy selection. • The marginal utility of the
remaining bundle of
i increases by at most
v. This follows from submodularity: the marginal utility of
g, when added to the remaining bundle, cannot be higher than its marginal utility when the algorithm processed it. So, for every contribution of
v to the algorithm welfare, the potential contribution to the optimal welfare could be at most 2
v. Therefore, the optimal welfare is at most 2 times the algorithm welfare. The factor of 2 is tight for the greedy algorithm. For example, suppose there are two items x,y and the valuations are: The optimal allocation is Alice: {y}, George: {x}, with welfare 2. But if the greedy algorithm allocates x first, it might allocate it to Alice. Then, regardless of how y is allocated, the welfare is only 1.
Algorithms using a value oracle A
value oracle is an oracle that, given a set of items, returns the agent's value to this set. In this model: • Dobzinski and Schapira present a polytime n/(2n-1)-approximation algorithm, and an (1-1/e)≈0.632-approximation algorithm for the special case in which the agents' utilities are set-coverage functions. •
Vondrak and Calinescu, Chekuri, Pal and Vondrak present a randomized polytime algorithm that finds a (1-1/e)-approximation
with high probability. Their algorithm uses a continuous-greedy algorithm - an algorithm that extends a
fractional bundle (a bundle that contains a fraction
pj of each item
j) in a greedy direction (similarly to
gradient descent). Their algorithm needs to compute the value of fractional bundles, defined as the expected value of the bundle attained when each item
j is selected independently with probability
pj. In general, computing the value of a fractional bundle might require 2
m calls to a value oracle; however, it can be computed approximately
with high probability by
random sampling. This leads to a
randomized algorithm that attains a (1-1/e)-approximation with high probability. In cases when fractional bundles can be evaluated efficiently (e.g. when utility functions are set-coverage functions), the algorithm can be made deterministic. described a different local search based algorithm that is deterministic and guarantees (1-1/e-\epsilon)-approximation in polynomial time for any constant \epsilon > 0. The welfare maximization problem (with
n different submodular functions) can be reduced to the problem of maximizing a
single submodular set function subject to a
matroid constraint: improve this to (1-1/e+ε) for some small positive ε (this does not contradict the above hardness result, since the hardness result uses only a value oracle; in the hardness examples, the demand oracle itself would require exponentially many queries). == Subadditive agents ==