>> Nikhil Devanur: So welcome, everyone. It's my... Vasilis Gkatzelis. Vasilis is a postdoc in Berkeley currently,...

advertisement
>> Nikhil Devanur: So welcome, everyone. It's my pleasure to introduce
Vasilis Gkatzelis. Vasilis is a postdoc in Berkeley currently, and he'll be
a faculty at Drexel soon, and recently has done some very interesting work in
algorithmic game theory, and in particular how to allocate goods to agents in
a fair manner. So he'll talk about approximating Nash social welfare, which
is one measure of fairness. So over to Vasilis.
>> Vasilis Gkatzelis: Thank you, everyone. So I'm going to talk about how
to approximate the Nash social welfare with indivisible items. So the goal
here will be that we'll have a set of indivisible items that we want to
allocate to a set of participants and, as Nikhil mentioned, the Nash social
welfare is a measure of fairness. We're going to try to maximize fairness
and some notion of efficiency at the same time. And this is joint work with
Richard Cole at NYU.
So let me dive right into the specifics of the model. So we want to
distribute a collection of items among a set of agents, and each agent
assume has additive valuations. So let me define this right away. So
have -- in this case let's say we have these five items and we have an
I. So the fact that agent has additive valuations means that we can
represent his preferences using a vector of just five numbers, one for
item.
Let's
means
would
value
we
we
agent
each
say these are the numbers: 15, 2, 4, 5 and 3. In this case, this
that if we allocate the first item to the agent, his value probably
be 15. If on the other hand we allocated item 2 to the player, his
would be 2.
The part where additive makes more sense is where you have more than one
items. When the player is allocated two items, 2 and 3 let's say, then his
value is the sum of these two, which is where additive comes from. And you
can imagine if he gets 2, 3 and 4, his value is 11; 2, 3, 4 and 5, his value
would be 14. You just sum up the corresponding numbers.
And the important thing that these numbers tell us is that, for example, in
this case, if you had to choose between giving this player this one item or
the bundle of items 2, 3, 4 sand 5, this says the player actually prefers the
first item. So it tells us in a concise way what the preferences of the
player are.
And we're going to assume that this is a case throughout the talk; that the
valuations are additive. So this is, of course, more interesting when you
have more than one agents that are creating for these items, and you're
trying to find a way to distribute. Essentially your distributing value
across the players.
And we're going to be denoting the set of agents by N and the set of items by
M. And the items are indivisible. This means you cannot cut an item in half
or in smaller pieces and give it to more than one players.
And also that for each agent we're going to be using a variable, XIJ, which
is either 0,1 because of the indivisibility, which is an indicator variable
regarding whether agent I will actually get item J or not. Okay. So
formally this could be a matching -- sorry, an assignment of the items.
Since I mentioned.
So we're not going to be talking about matching the items to agents. An
agent can get more than one items. And for each agent I, the valuation of
the player is going to be denoted like this. Okay? So it's just the sum
over all items of XIJ times VIJ, whether the player got the item times his
value for that item.
Make sense? I'm going really slow, but just to make sure.
fundamental setting.
This is a
So the question here is over all -- this is your design space. You can
choose over all these possible ways of allocating the items. The agent, the
question is which one do you want. And we're going to be shooting for
fairness, making sure the allocation of the items is fair and in some sense
also efficient.
And when people talk about efficiency in this setting, the first thing that
comes to mind is what is called the utilitarian social welfare; that is, I'm
going to try to allocate the items in a way that maximizes the sum of the
values of the players. So the aggregate happiness, the aggregate value, the
sum of the values.
Which, if you look at this setting, can you imagine what that would be?
There are more than one ways to do this, maximize social welfare here, but
this is one of them. Right?
So this maximizes social welfare. You can see that the sum of the values
would be maximized in this way. So clearly this is extremely unfair. Right?
So one player gets nothing; the other player gets everything.
So just maximizing this, you contain social welfare alone, can be really
unfair as an outcome. So our goal will be to introduce fairness into this.
And the standard way that people have been approaching fairness is what is
called the egalitarian social welfare. And that is our goal in this case
would be to maximize over all allocations the minimum value across all
players. So, in other words, try to make the least happy person as happy as
possible.
And you might have seen this. This is a well-studied problem, exactly the
setting I've just described, the additive valuations in this objective, and
it's called the Santa Claus problem, is one way in which you might have heard
of it before, and there's a long line of results. But in this general
setting there's still a big gap in terms of the approximability of this
problem.
But given this objective, can you figure out what that would do in this
allocation, that same instance as before. If you try to maximize the
minimum.
>>:
[inaudible].
>> Vasilis Gkatzelis: Exactly. So it's extreme in the other sense. It
gives all the items to the hard-to-satisfy agent, and the other agent gets
just one item. So in some sense this is an extreme notion of fairness that's
trying to satisfy maybe a person who's really hard to satisfy and sacrificing
efficiency.
Our goal here will be to find a balance between the two, and what we're going
to be trying to maximize is the Nash social welfare objective, which is the
geometric mean of the values. Okay? And before I explain why this is a
well-motivated objective, let's see what it would do in that same instance
again. And let's start from the max min allocation that we had before.
So you can verify easily that this is actually not maximizing the geometric
meaning in the following way. If we get seven item -- item 7 and we take it
from agent 1 and give it to agent 2, agent 2 doubles his value, whereas agent
1 doesn't have -- it's still not losing as much. So that would be actually
an improving change. So would this one. So would this one. And, in fact,
this is the product maximizing or geometric mean maximizing allocation.
So, intuitively, in this instance, you can see how it balances. It tries to
distribute value in a balanced way. But let me make it a bit more concrete.
So this objective, the Nash social welfare objective, satisfies some highly
desired properties.
One of them, which I think is really important, especially in this setting
where there's no payments, it's just an allocation, it satisfies
scale-freeness. That means that the outcome does not depend on what scale
the VIJ values are reported in. So if I take for every player I some
parameter, some positive value alpha I, and multiply all the VIJs by the same
value, this will not change the outcome in any way. Right?
And this is very important because usually when there's monetary payments,
you can express the values in the sense that this is -- the value means how
much would you be willing to pay for this item. But once there's no values,
this means nothing really. The scale might not necessarily be -- have any
specific meaning.
So if I multiply all my values by a big constant and that changes the
outcome, this is a bit tricky. There's no real reason why that should
happen.
And it's easy to verify also that if you think about the previous two
objectives, the utilitarian and the egalitarian social welfare, they both
heavily depend on the scale. In the utilitarian, you would want to scale
upwards, in the egalitarian you would want to scale downwards, whereas in the
product it doesn't matter.
And this is the real information. The real information that you're trying to
get from the participants is the relative preferences across items. The
scale doesn't matter. So this is the objective that satisfies this, and that
avoids this interpersonal comparability of individuals' preferences. This
means numbers, the scale of 1 should be comparable to the other in a
particular way.
And the second good thing is that it strikes a balance between fairness and
efficiency. And you can see one way to see it is this; that this is the
generalized mean. And if you take P going to minus infinity, you get max
min. If you take P equals 1, you get the average, the utilitarian social
welfare. And for P equals 0, you actually get the geometric mean. In some
sense it lies between these two extremes. It still tries to balance value,
but it's not going to do it in a really abundant and efficient way.
And another reason why it's -- this is interesting is that the same objective
has been discovered by many different communities. It is the objective
optimized by the Nash bargaining solution. It is the proportional fairness
objective in networking. It's also the competitive equilibrium for equal
incomes objective, or the Fisher market objective.
So in many different communities -- economics, networking, and others -- this
arises naturally. And as I'm going to be mentioning later, maximizing the
product is equivalent to maximizing the sum of the logs. Maybe this sounds
more intuitive. You've seen it somewhere. Okay. So hopefully I've
convinced you that this is an interesting objective to understand and
optimize.
So let me formally define our problem. So let X star be the integral
allocation maximizing the Nash social welfare. Our goal is going to be to
design an algorithm computing an integral allocation X that satisfies this:
The geometric mean of the optimal is at most some raw factor of what we get.
>>: [inaudible] approximation, why -- what makes more sense, the geometric
mean or say the sum of logs?
>> Vasilis Gkatzelis: So you're saying -- I mean, if you get the geometric
mean approximation, a multiplicative one like this, you get an additive false
at the same time for some log. So it's a stronger ->>:
Makes sense to get [inaudible] approximation sum of logs?
>> Vasilis Gkatzelis: So I'm not sure that there would be -- I mean, yeah, I
think in some sense that log transformation is a bit less intuitive, what
happens and what you should be [inaudible] this. And here essentially you
know that, for example, if you get every player half the value they should be
getting, you get a half approximation.
Essentially I think the log kind of messes things up. But I'm not sure what
the right thing would be. I don't know why it would be wrong to aim for log.
But this in some sense is stronger.
>>: So the other thing is like if you want -- if you get zero, will you get
zero on both? Like ->>:
Yeah, log or -- log zero P minus.
>> Vasilis Gkatzelis:
it would be zero.
>>:
Zero.
Okay.
Yeah.
Yeah.
Yeah, but you don't want that either way.
Here
Okay.
>> Vasilis Gkatzelis: But, yeah, at some point we started thinking about the
sum of the logs because it's a modular function. So we're thinking like, oh,
maybe I could do like a greedy-like allocation rule, but it's messy. It
didn't seem like all the greedy-type approaches that we tried didn't seem to
make sense. And that would only give a multiplicative in it. But maybe
it's -- yeah.
So the best known algorithm before our work was growing linearly with a
number of items.
>>:
So what is NR?
>> Vasilis Gkatzelis:
>>:
Gwen?
>> Vasilis Gkatzelis:
>>:
Oh, Nguyen.
And Rothe.
Nguyen.
Oh, okay.
>> Vasilis Gkatzelis:
>>:
Yes.
What is N?
>> Vasilis Gkatzelis:
>>:
Nguyen and Rothe.
That's how it's [inaudible].
I see.
And?
Rothe.
Oh.
>> Vasilis Gkatzelis:
And after our --
>>: What was the context in which they [inaudible]?
[inaudible]?
>> Vasilis Gkatzelis:
Same problem, yes.
They just wanted
>>:
I see.
>> Vasilis Gkatzelis: And the problem was very recently shown to be APX-hard
after our talk at TED Talk.
>>:
[inaudible]?
>> Vasilis Gkatzelis: I'm not sure. He's a student at CMU.
remember the name. It's an archive, the paper.
I'm not sure I
Okay. So our main result is that we propose an algorithm that achieves a
small constant approximation factor, 2.889, which at least to us was a bit
surprising that you actually can do that. And, yeah, the talk is going to be
around how we achieved that approximation, how -- the problems that we had to
face.
So formally we can write this -- the problem that we want solved is exactly
this one. We want to maximize the geometric mean subject to the valuations
which are additive, and we don't want to overallocate any item and the XIJs
are between 0 and 1.
And the first observation is if you take a log of the objective, as I
mentioned before, you get the problem of maximizing the sum of the logs of
the utilities, which is convex, so it's getting better because the previous
one was horrendous. And if you relax the integrality, then what you actually
get is the Eisenberg-Gale problem, which has been well studied and we can
solve this.
So the first reaction is great, let's solve this program and then try to
round it and get a good approximation algorithm. Unfortunately this fails
miserably because the integrality gap of this program is unbounded.
And let me give you an example. It's an easy example to consider, but just
to get a sense of why this happens. This is just an observation. That if
you have these items, M items and N agents, but every agent has a very, very
strong preference, let's imagine this V being arbitrarily high, a really,
really strong preference for the first item, then in a fractional solution
the players can share the top item. And that gives ->>:
[inaudible] only one item that you could --
>> Vasilis Gkatzelis: That too. But I just want -- this is kind of -- the
reason I avoid this instance is because it's kind of the product would be
zero anyway. So, sure, yeah, the integrality gap, that instance is kind of
easy to solve. But you can imagine even if these other items have some small
value, it might be hard to figure out whether you can actually achieve it.
But, yes, even just having one item would also give you the integrality gap.
So, yeah, they can share it and get a high value, share essentially the high
value, but in reality only one of them will get it.
there's no way they can actually get this to work.
So it's clear that
So what this shows is that there's no way to prove, using this as an upper
bound, the fractional objective value as an upper bound, to prove a good
approximation.
>>: So just to be clear, suppose [inaudible] suppose the values are either
like zero, like some values are zero, some are not zero.
>> Vasilis Gkatzelis:
>>:
And I want to check whether the answer is zero or not.
>> Vasilis Gkatzelis:
>>:
Yes.
We achieve a [inaudible], yeah.
[inaudible].
>> Vasilis Gkatzelis:
>>:
Mm-hmm.
Your [inaudible], right?
>> Vasilis Gkatzelis:
>>:
Yes.
Yeah, yeah.
Yeah.
But how [inaudible] but your current program cannot do it?
>> Vasilis Gkatzelis:
No, we're not going to use that program.
Yes.
>>: Yes. But that's [inaudible] that's a matching, right? You're doing
[inaudible] matching, like I just want to say there's a matching, of course,
and [inaudible] zero, nonzero, right?
>> Vasilis Gkatzelis:
>>:
Yeah.
[inaudible].
>>: So can you go back to the [inaudible]?
them, right? That's yes?
>> Vasilis Gkatzelis:
>>:
Yes.
So [inaudible] you can remove
Yes, it's just for [inaudible].
Okay.
>> Vasilis Gkatzelis: So, okay, so what our solution is going to revolve
around and the intuition will come from is the fact that, in fact, this
program we're just looking at has a very natural interpretation as a market
equilibrium. And you don't need to know exactly what I mean by that. I'm
going to explain how this works.
You can imagine if you take this instance that each agent is allocated a
budget of 1, $1 of money that has no value beyond this particular setting.
The goal is to spend all of this money. And there are prices. For each item
there's a price, PJ. I'm not going to at this point tell you yet how we come
up with these prices. These are the duals of the program. But let's say we
have them.
So once I give these prices, and you can imagine the agents arriving one
after the other. Think of agent 1 arriving. What are the preferences? He
has a value of 15 for the first item; zero for everything else. Clearly he
wants to spend his money in the best way possible, which is spending it all
on the first item. Right? So he can spend his $1 on this item, and he buys
a third of that item.
Then the second player arrives and you can verify that the value per price
ratio is the same for these two items for the players. So he's indifferent
between these two. However he spends his money between the two is fine.
I'm going to intentionally tie-break upwards in this case and have him spend
his money optimally again the way he would to get the best he could get using
that -- those prices and buy the second third of that item.
And we continue the same way. If the third player arrives, you can verify
the maximum bang per buck items, the ones that have the best value per price
ratio, are 1, 3, 4 and 5. So, again, I will tie-break upwards and let him
buy the remaining third of that item.
Conveniently, when the last player arrives, he likes all these items equally,
and the sum of these prices are 1, so he can buy them all, and that's
perfect. So that's market clearing.
So the very nice thing about this is that what we require is that every
player is spending his money on his -- to buy his best bundle given the
prices. All the items are fully allocated and all the players are spending
all of their money. Once you have these properties, you know just by even
showing you this, you know that this allocation maximizes a product. Okay.
So the issue -- and let me make another point now. So before I made the
point that the integrality gap of this program is high, now I'm going to less
formally try to convince you that apart from -- so in that sense the program
fails to give us a good upper bound because it gives you high integrality
gap.
But I'm going to argue here that somehow it also doesn't give you a good
fractional solution to round from. So if you look at this one, you know that
since the top player has no other alternative, he really only likes the first
item, he will essentially get it. If you want to maximize, he should be
getting that item. But there's also player 2 and player 3 that in this
fractional solution, all you know about them is that they're getting a third
of that item as well.
But if you look at their preferences, they're very different with -- they're
absolutely different with respect to their preferences other than that first
item. So knowing that they will not be getting that first item, you have no
information about how to distinguish how to round one and how to round the
other. So these two are very different. But in terms of your fractional
allocation, they're the same. So you can imagine if I make this even more
expensive that there will be more and more information lost inside this
fractional location. Okay?
And based on this intuition, what we do, so we started from the
Eisenberg-Gale program, we moved into the market equilibrium interpretation.
What we're going to do now is to tweak the market equilibrium interpretation
to get a different equilibrium that reveals more information and helps us get
a good upper bound. Right? We're not going to use this; we're going to use
a different one.
In order to do that, the main
how much spending can go into
outcome that we aim for. The
one dollar to be spent on any
is the most that can be spent
defining.
trick that we use is we apply a constraint on
any item. And this is the spending-restricted
spending-restricted equilibrium allows at most
item. Right? So one player's worth of budget
on any item in this new equilibrium that I'm
So in this case this fractional solution that we saw before violates this.
There are three players spending one dollar. So there's a total of $3 going
into this item. So this is not allowed in this new constraint that we
introduced. So in order to get an equilibrium that satisfies this additional
constraint, we have to keep -- you can imagine that if I disallowed player 2
or player 3, if they arrived in the same order, I disallowed them to spend
their money on 1, then they wouldn't be able to spend. The prices, all the
other prices, are too little. There will be too much demand for the other
items.
So in order to find this, we actually keep increasing the prices. And we can
discuss how we figure out these new prices later on, but we come up with
these new prices. And you can verify that these prices satisfy the
additional constraint plus most of the ones we had before.
In particular, this is a new market equilibrium in the following sense:
Player 1 arrives, still his preferred item is the first one. Right? So he
spends his money there. That means nobody else can spend on that item
anymore because there's $1 spending going into it.
>>:
But its price is $10 or -- in this picture, so whatever --
>> Vasilis Gkatzelis: Yeah, so the prices can be higher.
this is not fully allocated. So there's a price ->>:
It's a fraction allocation?
So in this case
>> Vasilis Gkatzelis: Yes, it's still a fraction allocation. So you're
buying one-tenth in this case. But the players still prefers one-tenth of
item 1 than anything else.
>>:
But nobody else can know --
>> Vasilis Gkatzelis: Yes. So not -- yes. Yes. So the rest of it will be
unallocated. In the fractional solution. But we only use it as a guide.
We're not going to -- so then the second player arrives. He's equally again
interested in the first and the second item.
>>: So the restriction that nobody spends more than $1 on item 1, it's not
really restricting the optimization problem for the buyer?
>> Vasilis Gkatzelis:
>>:
I'm still -- the players --
[inaudible].
>> Vasilis Gkatzelis:
>>:
Yes.
Exactly.
[inaudible] buying the optimal binder.
>> Vasilis Gkatzelis: The players are the
And we have to allow them to be able to do
constraint. Exactly. And you can verify,
now, that in fact here I can combine their
constraint.
still buying their optimal bundle.
that while satisfying the
and this is what I'm verifying
preferences with the additional
So player 2 arrives. He's indifferent between these two items. And now I
will let him buy this one, which means nobody else can spend on item 2 either
now.
Third player arrives. He is indifferent between these items. I'm going to
choose let's say this way of him spending his money, which means he pays
two-thirds, gets all of this, and one-third, he gets half of this. And the
last player arrives. He's interested in all these items, and there's a way
again to spend his money.
Okay. So to be more precise, the constraint that I want is if the price of
the item is higher than 1, the spending has to be 1 exactly. If the price of
the item is less than 1, then I want it to be fully allocated. So the
spending on it is exactly the price.
And what I verified with this example again in this new outcome is that every
player again buys his favorite bundle of items, spends all of his money, but
instead of the items being fully allocated, I have this new constraint now;
that the spending cannot be more than 1. Which means maybe some of them are
not fully allocated. Okay?
So this will be at the center of our result. We use this fractional
solution, this spending-restricted outcome, in order to come up with an upper
bound and a rounding algorithm. And the intuition -- one thing that I want
to mention compared ->>:
[inaudible].
>> Vasilis Gkatzelis:
>>:
Excuse me?
Like I'm not sure that it [inaudible].
>> Vasilis Gkatzelis: So up until -- like the answer to why they exist is
that we have an algorithm for computing it. But I just -- a few hours ago I
realized there's also a convex program for computing this solution. And
these ->>: [inaudible] put this restriction that I like won't collect more than $1
for each?
>>:
[inaudible] different convex [inaudible].
>> Vasilis Gkatzelis: Yeah. It's a different convex program. But yeah. We
didn't know that. So I'm going to come back to that later on, how to reach
these prices.
But what I wanted to notice here is that remember these players I mentioned
we had no information about, why the previous fractional solution was not a
good guide for the rounding algorithm? You can see here that by applying
this spending constraint I forced these players to spend on less demanded
items. I pushed the demand to lower items.
And now you see that player 2 and player 3 have revealed much more about
their preferences than before. Now I can tell them apart. I can tell that
player 2 wants item 2, player 3 wants item 3 or 4. So as we're going to
show, this help us round and get a good approximation.
Okay. So the main contributions that we get are the following. First that
the spending-restricted outcome, what I just described, is computable in
polynomial time. In order to do this, we actually used some algorithms that
were known -- combinatorial algorithms that were known for computing the
solution of the Eisenberg-Gale program by Devanur, et al. But apparently
there are different ways of doing it now.
And the second one is that the spending-restricted outcome implies a better
upper bound for the optimal solution, and finally that the
spending-restricted outcome reveals useful information for rounding, which is
kind of more of an intuitive point that I just made before.
>>:
What do you mean by the second point?
>> Vasilis Gkatzelis: That it implies a bound where -- which has low -which approximates opt in a better way. Yeah. I mean, we can actually
prove -- we have an upper bound that we can prove a good approximation with,
whereas the previous one there was no hope.
>>:
Like it's not even clear to me what the upper bound is.
>> Vasilis Gkatzelis:
>>:
Yes.
I'm going to describe this.
[inaudible].
>> Vasilis Gkatzelis:
a good bound.
Yeah.
But since we can prove a constant factor, it's
>>: No, no, I don't care what good.
other bound is.
>> Vasilis Gkatzelis:
>>:
Yeah.
I just want clear [inaudible] some
Yeah.
[inaudible] different question.
>> Vasilis Gkatzelis: Yeah. So, okay, so first of all, when it comes to
computing the spending-restricted outcome, the issue is that the spending
constraint that I applied, I said there's the amount of spending that can go
into any item is at most 1. The spending is neither the primal nor the dual
variable. It's a combination of the two.
So, in fact, where we used to have the sum of the XIJs being equal to 1,
everything is fully allocated, we're now replacing it with this. The sum of
the XIJ times PJ is the minimum of 1 and PJ. Right? So XIJ is a primal; PJ
is a dual. So the thing is that this constraint that we introduced, we
didn't know how to write it as one convex program anymore. It was not clear
that we can just introduce this constraint in here anymore.
So in order to achieve this, we use those combinatorial algorithms that I
mentioned before where this constraint just fits in perfectly. And in fact
we get a strong polynomial algorithm out of it, which is still of some value.
>>:
So what is J, and J's [inaudible]?
>> Vasilis Gkatzelis: Yes. So for every item J, you know that the XIJ -- so
this is the amount of spending that some or all agents, XIJ is how much the
agent gets of that item, PJ is how much the price is. So XIJ times PJ is how
much the agents spend on that item. So if you sum over all agents, it's the
total spending on that item. And you want this to be at most to be the
minimum of 1 and the price. Okay.
So that's the first thing. I'm going to come back to this later on if you
want to discuss this. But I guess the more interesting thing --
>>: Go back again.
objective.
>> Vasilis Gkatzelis:
>>:
So it's not clear to me why this is a bound on the
It's not a bound.
It's not a bound.
[inaudible] restating the --
>> Vasilis Gkatzelis: Just restating what we computed. What I'm saying, the
outcome that we're trying to find can be described in this way. It's like
the constraint we're introducing doesn't fit with a known program that we're
using program, the Eisenberg-Gale program, is all I'm saying. So it's not
clear how to compute it ->> Vasilis Gkatzelis: That's not what I'm asking.
be using the objective of any program.
>>:
The upper bound will not
Okay.
>> Vasilis Gkatzelis: Yes. So in order to get the upper bound, we'll be
getting it in an indirect way using this solution. And this is the next
slide. So if you look at this instance, the first -- yeah. So the first
thing I'm going to do -- so this is proof by -- the upper bound is proof by
picture a bit. But if you want, I can just take it and figure everything out
if you're interested.
But the question here is we have this -- right. So I mentioned that the
valuations, the scale of the values doesn't matter. Right? So I can scale
upwards or downwards, however I want. So for convenience, in order to
express our upper bound, I will scale everything so that every player's value
for his -- the item he's being allocated is equal to the price. Right?
Essentially I'm multiplying by the inverse of this MBB, the maximum bang per
buck ratio, your value divided by their price. I'm multiplying by this, and
we get this. So the -- essentially you get 10, which is as much as you
spend.
So you know that after doing this, you're either -- your value for an item is
either the price or less than that. It's the price -- it's one of your
favorite items. It's less than that if it's not one of your favorite items.
So right now, after this multiplication, the scaling of the values, I know
that everybody's value for an item is at most the price of the item. Okay?
And I haven't changed anything. It's still well defined.
And then the second thing we're doing is we're saying here are the highly
priced items, everything that has a price higher than 1, and the low priced
items, the ones I have priced less than 1.
Roughly speaking, just to give you a sense of what we're doing, to get the
upper bound, we're going to argue -- to show -- we're going to prove an upper
bound for the case that H is integral, L is fractional. Right? We're going
to assume these items are divisible. But H, the items in the H, the
important ones, are indivisible. And we're going to prove an upper bound for
that case. Okay?
So partially relaxing the allocation space. And using this, we're showing -and this is the tricky part. This is why I scale the values, so that we can
express the upper bound as a function of the prices. So what we're showing
is that the spending-restricted prices, P bar, the ones I just computed in
the spending-restricted outcome, and the scaled valuations, VI, the ones I
just described having scaled in the way, the product of the values in the
optimal solution is at most the product of the prices in H. So in this case
it's at most 10 times four-thirds. And I'm going to explain why this is the
case.
Roughly speaking, the reason why this is the case is the best thing you can
do is allocate the important items, each one to a distinct agent. And then
the best you can hope to do for the other items is give a value of 1 for
everyone else. Everyone who doesn't get an item from H, the best you can
hope to do is give them a value of 1, in which case you get this product from
the players that get an item in H and 1s from everyone else.
>>:
So if H is NP, then you're saying this [inaudible].
>> Vasilis Gkatzelis:
>>:
Is -- yes.
P is 1.
>> Vasilis Gkatzelis: Because everybody, the best you could ever do is give
everyone 1. Because if you can think of that -- that's the easy case because
then the sum of the prices is N. Right? Actually this is actually a good
point. This probably helps. If H is empty, then the sum of the prices is N,
the total spending. Right? And it's also the social welfare. The total
value you could ever get, the maximum value you could get is that. Right?
And ->>:
What about scaling again?
>> Vasilis Gkatzelis:
So that --
>>:
Forgive me, I did not understand the scaling.
>>:
[inaudible].
>>:
Can you go back?
>> Vasilis Gkatzelis: Yes. So we scale the prices so that your value -essentially by the inverse of your MBB ratio.
>>:
Scale what, prices?
>> Vasilis Gkatzelis: The maximum bang per buck ratio. So you make sure the
value for everyone is equal to the price of the item he's allocated.
>>:
So you'd just like to know --
>>:
So you're scaling the values --
>> Vasilis Gkatzelis:
>>:
[inaudible].
>> Vasilis Gkatzelis:
>>:
So VIJ divided by this ratio, the max --
Over all J of VJ -- V -- sorry --
[inaudible].
>> Vasilis Gkatzelis:
>>:
Right.
Max of [inaudible].
>> Vasilis Gkatzelis:
>>:
So you have -- so VIJ prime is equal to --
VIJ would be ordered by [inaudible].
>> Vasilis Gkatzelis:
>>:
Yes.
[inaudible].
>> Vasilis Gkatzelis:
>>:
Yes, the values.
Of over J prime, VIJ prime over PJ prime.
[inaudible].
>> Vasilis Gkatzelis: All multiplied by the inverse, right? So that means
that all the items that satisfy this, that belong, that actually maximize my
ratio, I'm going to have a value for them equal to the price. For everything
else I'm going to have a value less than the price.
>>:
Okay.
Yes.
>> Vasilis Gkatzelis: The only reason we're doing it, I mean, it sounds like
a tricky thing, but the only reason I'm doing it is to be able to express the
upper bound as a function of the prices. Because we don't know who will get
what. All we know is that's the best you could ever hope for.
And then what I'm saying is that, okay, so for the case that you mentioned,
if the H is empty, the sum of the prices is N. Right? It's the total
spending, how much money everybody's spending. So everyone, the best you
could ever do is give everyone a value of 1.
>>:
At most.
>> Vasilis Gkatzelis: Yes. So just to make it even simpler, to prove that
this is true, I will go back to the values, and I'm going to increase all of
them so that everyone's value for every item is equal to the price. Right?
So if anything, I'm increasing the left-hand side. I'm making it harder for
me to prove it. So I'm increasing everyone's price so that they're
identical. Everyone's value, sorry, so that they're identical. They all
value every item equally. So that's a harder thing to prove.
The thing is, and maybe that's easier to grasp, every player is the same.
Maximizing the product is the same as maximizing the minimum. Okay? So
we -- in this instance I have now constructed. You just want to maximize the
minimum.
And back to the incident I was saying. If H
get -- the best minimum you could get is 1.
is nonempty, the best we could get for these
get the top items, it's, you know, the value
that clear?
is empty, the best
That's why this is
guys is 1, and for
they get from that
you could
easy. If H
the guys who
top item. Is
So essentially it's a mixed thing. We're saying all the items in H we're
going -- the best thing you could ever do, because they already get a value
higher than 1, right ->>:
Why is it a product of those things because they might --
>>: Well, it's a product of the values. The value of the agents that get
something in H. So if an agent gets something from H, his value is equal to
the price. And everyone -- so essentially it's the values are the prices in
H times 1, 1, 1, 1 for everyone who doesn't get an item.
>>:
But I could get markable items, right?
>> Vasilis Gkatzelis:
>>:
But that would make it worse.
Why?
>> Vasilis Gkatzelis: Because these guys are already well off. The guys who
get any -- any agent who gets an item in H already has a value higher than 1.
So since you're trying to do max-min, you shouldn't give them anything else.
So exactly. This is a perfect question. Because the best that you could
do -- so I just argue that here we want to do max-min, right? So anyone who
gets an item in H gets a value 1 -- gets a value higher than 1. So it's
fine. These guys are fine.
And there are -- so there are N minus H people who do not get that. And the
sum of the prices, the last thing to observe, is that the sum of the prices
in L are also N minus H. Do you see that? Because the spending on the items
in H is one for each item. So the spending here, which is equal to the sum
of the prices, is actually N minus H.
So what I just argued is everyone who doesn't get an item in H, there are at
least N minus H such people, and they need to share this total value. So the
best you could ever hope for is give them one H.
>>:
Why is it [inaudible] maximum and the minimum?
>> Vasilis Gkatzelis:
>>:
Yeah.
>> Vasilis Gkatzelis:
>>:
I mean, it's true.
Let me see.
I don't know that I have a good argument
What for?
>> Vasilis Gkatzelis:
>>:
If they're identical?
[inaudible].
>> Vasilis Gkatzelis:
for it. But ->>:
The maximum as the geometric mean?
Why maximum is --
[inaudible] maximum in the [inaudible] because you [inaudible].
>> Vasilis Gkatzelis: Yeah, because the sum is fixed. Yeah. So you have a
set of values. The social welfare is fixed. So you're maximizing the sum -the product of values. You're maximizing the minimum of values that sum up
to the same thing. So the best thing you could do is make them -- you're
maximizing the product of values of a fixed sum. So the best you could do is
balance them so they're equal. That's the argument.
So if you have a fixed sum, essentially you're redistributing the same social
welfare. So I've bounded the social welfare. I'm saying social welfare is
the sum of the values of these prices. And then the question is how do I
distribute it to make the product maximized. So the product is maximized
when they're all equal. Yeah.
So this comes from exactly this argument; that the players who do not get an
item in H are at least N minus H. The sum of the prices here are exactly N
minus H. So the best you could hope for for these people is that they get a
value of 1, even if these items were divisible. Right? That's the best we
could ever hope for.
And that's where we use integrality; that the top items we cannot divide, so
one player gets each. So that's where you get the product for the items in
H. And that's the upper bound. So it's not -- to answer your previous
question, doesn't come from the program directly. It's kind of a partial
relaxation of the -- using the solution.
>>:
And what do you use a program for, like the previous program --
>>:
The program gives PJ back.
>>:
Oh --
>> Vasilis Gkatzelis: Exactly. We get the solution -- actually, we use it
in two ways. First we use it to get the upper bound, and we use it for the
solution, right, for the fractional solution.
>>:
For the rounding?
>> Vasilis Gkatzelis:
For the rounding.
>>: I see. So you took the competitive equilibrium prices and you put it in
the new convex program and then you took the PJ bar.
>> Vasilis Gkatzelis: No, no. So we didn't solve it using a convex program.
We introduced this constraint and defined a new notion of equilibrium, which
we explain how to compute in a totally different way, using a combinatorial
algorithm. I haven't discussed this.
>>:
Oh.
I see.
>> Vasilis Gkatzelis: But once we compute this, we use the prices as a
signal of how to define an upper bound, and then we also use the -- both the
prices and the allocation for the rounding algorithm, which is the next
slide. Okay? So this is the upper bound, this product and the prices.
So roughly speaking, if I could design an algorithm that of course matches
these expensive items to different people each, to distinct people, and then
the other thing rounds in a smooth way so the value is will distributed, then
maybe I could hope to get a good approximation. And this is more or less
what the algorithm does.
So one thing I didn't mention is that you can always make sure that this
spending graph, these edges, they never -- there's never a cycle in this
graph. That's easy by just redistributing it. So essentially you can
redistribute the spending and make sure you're only spending on the -there's no cycle in this thing.
It's not very important, but I'm going to be using the fact that there's a -this is going to be a forest, the solution is going to be a forest. And the
way we do it is -- the way we round is we take every tree in this forest,
choose an arbitrary agent and set it to be the root. And let's say this is
agent A. And in the solution, in this fractional solution, he's spending
money on some -- getting fractions of some of the resources of the items.
And these resources are also being computed for by other agents and so on.
So you have this alternating sequence. And you get a tree like this one.
And we're only going to be rounding using these edges. That layer is only --
an agent is only likely to get an item if there's -- if he's spending
something on that item in the fractional solution. In this fractional
solution.
So of course the first step of the spending-restricted rounding algorithm is
to compute the spending-restricted outcome, which we can discuss later. But
once you have this, you have these graphs. And what is the first easy step
of the rounding? I just told you that I'm only going to round using these
edges. The leafs, right? The item leafs. There's no other option.
So the first thing is allocate the leaf items upwards to their -- to the
agents that are the only ones spending them. So that's easy. We do that.
The second step is to allocate the low priced items. And here we've chosen
by low price, because that's -- that was a convenient number for rounding,
the ones that have priced less than half. So any item that has priced less
than half, we're also going to round it upwards to the parent agent. And
that's where we use a tree. We try to make it consistent rounding, always
upwards.
And in this case you look at all the prices, there's only one this year that
has price less than a half. We take it and round it upwards. Right? And
then after we're done with this step, everything that remains -- essentially
we kind of got rid of the less ->>:
What is A and what is R?
>> Vasilis Gkatzelis: Agent resource. I didn't want to use I because I use
it as an index for the -- but yeah. Agents and resources.
>>:
And the leaf are agents?
>> Vasilis Gkatzelis: Right now, yes. But I did it before, right? Yeah,
I'm sorry. So the resources allocated the leaf items, not the leaf agents.
And then allocate also the low priced items.
>>:
So is it easy to see it's a forest?
>> Vasilis Gkatzelis: Yes. Because you don't care. Essentially it's a
tie-breaking issue, right? You have a set of MBB items. You can just
redistribute and it's fine. So now I've gotten rid of the less important
things. And I'm -- what's remaining is everything has a price less -- at
least half. So everyone who gets an item of the remaining ones actually gets
half, you know, gets a half value, right?
>>:
Can you just show matching?
>> Vasilis Gkatzelis: So that would be fine. So if I could -- if I could do
a half value for everyone, that would be great. What we show is actually we
cannot match everyone, but we can match most of the people that are left.
And in order to do this, what is interesting is in this last step I'm going
to do a matching. I'm matching the remaining agents to items. Each agent
gets one of these items. Because they are the important ones. Nobody should
be getting more than one of those. And you might ask how do you do that, how
do you match. There are many different ways to match.
The interesting thing is actually that last step, you can do it optimally
because you can just say VI of XP is the value of I based on the first couple
of steps, the value he already has, and then you can just change the VIJ to
log of VI XP, the value he already has plus VIJ and do a maximum weight.
Yeah. And add dummy items of value, that much, and run a maximum weight
matching algorithm.
So the thing is, if you have unit demand, the problem is easy. It's maximum
weight matching algorithm. But the problem becomes harder when you want more
than one items. But in this case, at this point, we only want to match
people so we can do it optimally.
And what we prove is essentially that everybody who gets an item in this
space is fine. So if everybody got one, we would definitely get a 2
approximation, because all the really important ones, the ones in H, go to a
different player. Each and everybody else would get a value of half. We
cannot do that. We cannot make sure everybody gets one of these items. What
we're showing that in this matching there exists a matching where even the
ones who do not -- the ones who do not get an item must have received
substantial enough value from the first two steps. So they're fine. And
instead of a 2 approximation -- sorry. And this is the matching. Instead of
2 approximation, that's why we get a bit. Although, although with a tighter
analysis, we now believe we might have a 2 approximation here.
>>:
So this [inaudible].
>>:
Sorry.
>>: So the second step is dependent on your choice of A, but it's almost
saying that doesn't matter?
>> Vasilis Gkatzelis:
>>:
Yes.
Yes.
And the leaf --
[inaudible].
>> Vasilis Gkatzelis: You're right, you're right, you're right. Yeah,
you're right. It doesn't matter. It's arbitrary. So essentially all we
want is to make sure that at the end really you want -- we end up having some
components at the end, and we want to make sure that everyone -- there always
exists someone who receives value. If he doesn't get one of the items, he
must have received value from his children items. So no matter what the
ordering, there exists such a person. Sorry.
>>: No, then, I mean, the mysterious stuff is like the second step, right?
I don't see like if you [inaudible] matched in the third step, like why would
you say that he got a lot of small items? Is there ->> Vasilis Gkatzelis:
end.
>>:
There always exists one within each component at the
Log VI of XP.
>> Vasilis Gkatzelis: No, but you're talking about the proof, right, about
how we can argue there exists someone. Because we always round upwards. And
we're saying essentially it's because of, again, the scaling; that the sum of
the prices is equal to the number of players, right? If all the items -- if
I -- if I got all the items that I was spending on, then the prices of these
items would have been -- so the sum of the prices are of the items that we
were spending on are at least as much as the number of players in that
component, right?
So that's the argument. If for some reason somebody doesn't get anything,
that means that he must have been rounded something before. I mean, it's
not -- it's a delicate argument, but there always exists someone. That's the
core of the -- okay? And that's -- yeah.
So really to summarize, I mean, the idea is that you get this market
equilibrium, we apply this constraint, we compute this different market
equilibrium which reveals more information, we use it in two ways. We use it
in order to get this upper bound by treating the highly priced items as
important and indivisible and then allowing fractional relaxation on the less
important items.
And then the rounding goes along the same lines; that it tries to keep -- it
uses the prices again as a signal of keeping the highly priced items for the
end, for the matching, and trying to be balanced in the way to distribute the
nonimportant items.
>>:
So the right answer should be 2, right?
>> Vasilis Gkatzelis: So we haven't verified everything, but we think with a
tighter analysis the answer is still yes. Yeah. This was a first kind of
rough analysis that gave us this. So let me wrap up with one quick, a quick
discussion on how we compute this. So because I think I actually like this.
It's based on Nikhil's work, and it's kind of how we can actually compute the
market equilibrium in a combinatorial way.
And the nice thing is that if you're given a vector of prices P, then you can
write -- you can have the following network here. You have a sync, here are
all the agents, all the items, and a source -- sorry, a source and a sync.
And then the capacities of the edges from the source to the agents are one
equal to the budget. The capacities of the edges from the items to the sync
are the prices, the current price of the items, and then you have edges here
if the item
And what is
agent I and
for agent I
is one of the favorite items, the maximum bang per buck items.
-- yeah, this is what the second bullet says, that IJ between
J exists if and only if item J is the maximum bang per buck item
at the current prices.
And if you compute a max-flow in this network, and it just so happens that
all these capacities are saturated, you're using all these capacities in
full, what does it mean, that you're fine, everybody's spending all of their
budget on their favorite items and all the items are fully allocated. So
that will be fine. The tricky thing is, of course, how do you find the
prices. And it's very delicate. And once you change the prices, you're
really affecting this structure over here. You can change it dramatically,
right?
So if you change the prices, you change the structure. So how this works is
you start from low prices where essentially not all the left -- these edges
over here are not used to capacity, not everyone is spending [inaudible] and
then you have overdemanded items here. And then you gradually in parallel
increase some of the prices. And the reason why you do it in parallel by the
same multiplicative factor is to maintain these edges here. And you
gradually increase this in a very careful way, and then you have to make sure
this primal dual approach eventually completes in a polynomial number of
steps. And this is what Nikhil, et al., showed in their paper, how to
actually do this in polynomial time. That there's a way of doing this in
polynomial time.
What is great about this combinatorial algorithm is, if you think about it,
the flow is spending. What I just described, this maximum flow, is
essentially pushing spending through from the source to the sync. So all we
need to do for our constraint, although it wasn't easy to introduce it into
the convex program is just ->>:
[inaudible].
>> Vasilis Gkatzelis: Yeah. Instead of having the prices here, just have
the minimum of the price in one. Right? So we just change this to capacity.
So we introduce a new capacity constraint which is at most one. So
essentially the same approach works by just introducing, because they fit
perfectly. These capacity constraints that we have on the spending, the
spending is really the variable here in the flow. And this is how we
computed it. But as I mentioned before, now there's also a convex program to
compute this.
>>:
[inaudible].
>>:
Yeah, yeah, I [inaudible].
>> Vasilis Gkatzelis:
>>:
Yeah, you have to make sure.
It's a delicate process.
Otherwise I don't see like how can just put this thing.
>> Vasilis Gkatzelis: Yeah, I don't know.
team has to make sure that --
Yeah, you have to -- the parallel
>>: You have to do it in parallel and make sure the events that take place,
you know, because if you increase someone that one interested in something
else and ->> Vasilis Gkatzelis:
>>:
This is a gradient design.
This is a DPSP.
>> Nikhil Devanur:
That's it.
[applause]
>> Nikhil Devanur:
Questions?
>>: Again [inaudible] I somehow -- supposing [inaudible] I can just
calculate like a matching, right, is it a matching? Let's say [inaudible].
>> Vasilis Gkatzelis:
Maximum weight matching.
>>: So about this max weight [inaudible] if the value is zero or nonzero,
right, [inaudible] the agents on one side, the items on the other [inaudible]
I don't care of the value.
>> Vasilis Gkatzelis:
>>:
To check if it's zero or not, yeah, you could do.
Yeah, I just want every nonzero pair --
>> Vasilis Gkatzelis: But it does need to be zero, right? That's why I'm
saying. If you have one item, sure, it's going to be zero. That's why my
example has more items. It's not zero. It's low or high, right? If you
have any items.
>> Vasilis Gkatzelis: Yeah, yeah, yeah. But I'm just saying if it
[inaudible] like this matching. But we know the matching portal. So
intuitively you should -- the program should be stronger than that. You just
don't want to just take matching. If there is one, you want to also have
value on solutions, right? But I'm saying the current solution cannot even
detect zero as a nonzero.
>> Vasilis Gkatzelis: But that you can do easily, right?
run this as a first step to verify if zero ->>: Yeah, yeah, but I don't want to do that.
right? The [inaudible] should do it.
>>:
I mean, the [inaudible].
So first you can
The upper bound should do it,
>>:
[inaudible].
>>:
So how [inaudible] zero?
>> Vasilis Gkatzelis: Yeah.
if it detects [inaudible].
>>:
What step did it detect?
I guess, I mean, you can just -- I don't know
It has to, if you want --
>> Vasilis Gkatzelis: Yeah. No, I mean, you can run -- that's what I said.
I mean, we're assuming this is not -- this is not an interesting case.
[multiple people speaking at once]
>>:
What will happen is in that case the outcome of [inaudible] --
>>:
Is also zero.
>>:
-- will also be zero.
>> Vasilis Gkatzelis:
>>:
Yeah, yeah, but [inaudible] whatever the price is, there is something.
>> Vasilis Gkatzelis:
new ->>:
Yeah.
The number -- the prices are not unique for this
Or zero [inaudible] put zero actually.
>> Vasilis Gkatzelis:
By the way, that's actually interesting.
[multiple people speaking at once]
>>:
PJ will go to infinity.
>> Vasilis Gkatzelis:
Yeah.
PJ will go to infinity actually.
And the PJ in the solution --
>>:
[inaudible] whole set basically [inaudible].
>>:
Yeah.
>>:
That's basically the solution.
>> Vasilis Gkatzelis: And the prices -- the prices are not unique that give
you this spending-restricted equilibrium. I don't know if your programs like
give particular prices, but you can multiply all the ones in H, you can
increase them further. You can [inaudible] and still doesn't change
anything.
In some cases, for example, this bidder who only likes that item, you can -so it's not really unique. If you increase the prices -- we're not using the
numbers of the prices, right, we're only using which ones are bigger than 1
and which are not. So otherwise it doesn't really matter.
>>: Why did you [inaudible] two dimensions. Can you formulate the problem
in two? Like I don't know. I don't know what ->>:
Another thing is do you prove it for a particular scaling of values?
>>: We are expressing the upper bound. No, we're not proving it for a
particular. This scaling doesn't matter. We're just -- the thing is we
couldn't express the upper bound as a function of the player's value. We
don't know what goes to whom. So we're expressing it as a function of the
prices instead.
>>:
The scaling doesn't matter for the allocation.
>> Vasilis Gkatzelis: Or the approximation. Or the approximation.
we scaled both up, and it doesn't matter. It simplifies, right?
>>:
Oh, it doesn't [inaudible].
>> Vasilis Gkatzelis:
>>:
Because
It doesn't.
It doesn't affect the approximation.
Okay, okay, okay.
>> Vasilis Gkatzelis: So yeah. The scaling is just a convenient way to
express the upper bound in a succinct way.
>>: And one more question. So in your algorithm, did you show it only for
this K set of budgets are 1 and this upper bounds are 1?
>> Vasilis Gkatzelis: Yes. Budgets are 1. Different budgets, I'm not sure
that it's -- we thought about it, but it's not clear how it [inaudible].
>>:
[inaudible].
>>: [inaudible] the algorithm equal [inaudible] the budgets are equal and
this upper bound on the prices for all the budgets are 1.
>>:
[inaudible].
>> Vasilis Gkatzelis:
This one.
>>:
To finding this SR outcome.
>>:
Okay.
>>:
All the budgets are to be 1 and [inaudible].
>> Vasilis Gkatzelis: I'm not -- I'm not sure about the algorithm. I meant
the rounding. I mean, the capacity. Because the capacity constraint that we
have is essentially a budget worth ->>:
This is a question [inaudible] algorithm itself.
>> Vasilis Gkatzelis:
You mean --
>>: Computing the [inaudible] algorithm [inaudible] upper bound also
being -- budgets may be different, but maybe the upper bounds, you need them
to be all ->> Vasilis Gkatzelis: I don't think we use that. I mean, we didn't look
into that because even if we could compute that, it wasn't useful for the -didn't seem to be useful for the [inaudible]. But I don't think there was
anything particularly specific to equal budgets. And it seemed to be fitting
nicely with what already existed. It wasn't ->> Nikhil Devanur:
Okay.
>> Vasilis Gkatzelis:
[applause]
Thanks.
Thank you.
Download