Envy-graph Procedure
   HOME

TheInfoList



OR:

The envy-graph procedure (also called the envy-cycles procedure) is a procedure for
fair item allocation Fair item allocation is a kind of a fair division problem in which the items to divide are ''discrete'' rather than continuous. The items have to be divided among several partners who value them differently, and each item has to be given as a whole ...
. It can be used by several people who want to divide among them several discrete items, such as heirlooms, sweets, or seats in a class. Ideally, we would like the allocation to be
envy-free Envy-freeness, also known as no-envy, is a criterion for fair division. It says that, when resources are allocated among people with equal rights, each person should receive a share that is, in their eyes, at least as good as the share received by a ...
(EF). i.e., to give each agent a bundle that he/she prefers over the bundles of all other agents. However, the items are discrete and cannot be cut, so an envy-free assignment might be impossible (for example, consider a single item and two agents). The envy-graph procedure aims to achieve the "next-best" option -- ''envy-freeness up to at most a single good'' (EF1): it finds an allocation in which the envy of every person towards every other person is bounded by the maximum marginal utility it derives from a single item. In other words, for every two people ''i'' and ''j'', there exists an item such that, if that item is removed, ''i'' does not envy ''j''. The procedure was presented by Lipton and Markakis and Mossel and Saberi and it is also described in .


Assumptions

The envy-graph procedure assumes that each person has a
cardinal utility In economics, a cardinal utility function or scale is a utility index that preserves preference orderings uniquely up to positive affine transformations. Two utility indices are related by an affine transformation if for the value u(x_i) of one ind ...
function on bundles of items. This utility function has to be
monotone Monotone refers to a sound, for example music or speech, that has a single unvaried tone. See: monophony. Monotone or monotonicity may also refer to: In economics *Monotone preferences, a property of a consumer's preference ordering. *Monotonic ...
(the utility of a set is at least as large as the utility of its subsets). However, it does ''not'' have to be additive. I.e, the items are ''not'' assumed to be
independent goods Independent goods are goods that have a zero cross elasticity of demand. Changes in the price of one good will have no effect on the demand for an independent good. Thus independent goods are neither complements nor substitutes. For example, a ...
. The agents do not have to actually report their cardinal utility: it is sufficient that they know how to rank bundles.


The procedure

# Order the items arbitrarily. # While there are unassigned items: #* Ensure that there is an ''unenvied agent'' - an agent that no other agent envies. #* Give the next item to the unenvied agent. In step 2, if there is no unenvied agent, it means that there is a
directed cycle Director may refer to: Literature * ''Director'' (magazine), a British magazine * ''The Director'' (novel), a 1971 novel by Henry Denker * ''The Director'' (play), a 2000 play by Nancy Hasty Music * Director (band), an Irish rock band * ''Di ...
in the ''envy graph'' - a
directed graph In mathematics, and more specifically in graph theory, a directed graph (or digraph) is a graph that is made up of a set of vertices connected by directed edges, often called arcs. Definition In formal terms, a directed graph is an ordered pa ...
in which each agent points to all agents he envies. Cycles can be removed by cyclic exchange of bundles. After all cycles are removed, the envy-graph must have a node with no incoming edges; this node represents an unenvied agent. The resulting allocation is not necessarily EF, but it is envy-free except one item. This is true not only in the final allocation but also in each intermediate allocation: since an item is always given to an unenvied agent, the envy of all other agents after that allocation is at most a single item.


Run-time analysis

Suppose there are ''m'' items. Each allocation of an item adds to the envy-graph at most ''n''-1 edges. Hence, at most (n-1)m edges are added overall. Each cycle-removal removes at least two edges. Hence, we need to run the cycle-removal step at most (n-1)m/2 times. Finding a cycle can be done in time O(n^2) using e.g.
depth-first search Depth-first search (DFS) is an algorithm for traversing or searching tree or graph data structures. The algorithm starts at the root node (selecting some arbitrary node as the root node in the case of a graph) and explores as far as possible alon ...
. All in all, the run-time is O(n^3 m).


Examples

In these examples the preferences go from 1-3 where the higher the number the higher the preference. Also a, b and c are people while X, Y and Z are objects. 1) With 3 people and 3 objects, every possible allocation will be a different result. This case happens when each of the three people have the same preferences. There are six different ways to allocate the objects: In the beginning because no one has anything then all of them are unenvied agents and this is the same in all the cases. In case of a tie, we break ties between unenvied agents in lexicographic order. # Let's start off by giving the X object to a. After that both b and c and unenvied agents. So now let's give the Y object to b. After that c is an unenvied agent. So now let's give the last object Z to c. Now c is jealous of b and a, b is jealous of a and a is not jealous of anybody and now since there is no envy cycle and no more objects to hand out then the procedure ends and the final result is a gets X, b gets Y and c gets Z. # Let's start off by giving the X object to a. After that both b and c and unenvied agents. So now let's give the Z object to b. After that c is an unenvied agent. So now let's give the last object Y to c. Now c is jealous of a, b is jealous of a and c and a is not jealous of anybody and now since there is no envy cycle and no more objects to hand out then the procedure ends and the final result is a gets X, b gets Z and c gets Y. # Let's start off by giving the Y object to a. After that both b and c and unenvied agents. So now let's give the X object to b. After that c is an unenvied agent. So now let's give the last object Z to c. Now c is jealous of a and b, a is jealous of b and b is not jealous of anybody and now since there is no envy cycle and no more objects to hand out then the procedure ends and the final result is a gets Y, b gets X and c gets Z. # Let's start off by giving the Y object to a. After that both b and c and unenvied agents. So now let's give the Z object to b. After that c is an unenvied agent. So now let's give the last object X to c. Now a is jealous of c, b is jealous of a and c and c is not jealous of anybody and now since there is no envy cycle and no more objects to hand out then the procedure ends and the final result is a gets Y, b gets Z and c gets X. # Let's start off by giving the Z object to a. After that both b and c and unenvied agents. So now let's give the X object to b. After that c is an unenvied agent. So now let's give the last object Y to c. Now c is jealous of b, a is jealous of b and c and b is not jealous of anybody and now since there is no envy cycle and no more objects to hand out then the procedure ends and the final result is a gets Z, b gets X and c gets Y. # Let's start off by giving the Z object to a. After that both b and c and unenvied agents. So now let's give the Y object to b. After that c is an unenvied agent. So now let's give the last object X to c. Now b is jealous of c, a is jealous of b and c and c is not jealous of anybody and now since there is no envy cycle and no more objects to hand out then the procedure ends and the final result is a gets Z, b gets Y and c gets X. 2) With 3 people and 3 objects, every possible allocation will be the same result. This case happens when each of the three people have completely different preferences, because each person has something else they prefer no matter what they will get what they want. There are six different ways to allocate the objects: In the beginning because no one has anything then all of them are unenvied agents and this is the same in all the cases. In case of a tie, we break ties between unenvied agents in lexicographic order. # Let's start off by giving the X object to a. After that both b and c and unenvied agents. So now let's give the Y object to b. After that c is an unenvied agent. So now let's give the last object Z to c. Now a, b and c are all not jealous of anybody and now since there is no envy cycle and no more objects to hand out then the procedure ends and the final result is a gets X, b gets Y and c gets Z. # Let's start off by giving the X object to a. After that both b and c and unenvied agents. So now let's give the Z object to b. After that c is an unenvied agent. So now let's give the last object Y to c. Now c is jealous of b, b is jealous of c and a is not jealous of anybody. Since there is an envy cycle between b and c, they will switch objects and now b gets Y and c gets Z. And now since there is no envy cycle and no more objects to hand out then the procedure ends and the final result is a gets X, b gets Y and c gets Z. # Let's start off by giving the Y object to a. After that both b and c and unenvied agents. So now let's give the X object to b. After that c is an unenvied agent. So now let's give the last object Z to c. Now b is jealous of a, a is jealous of b and c is not jealous of anybody. Since there is an envy cycle between b and c, they will switch objects and now a gets X and b gets Y. And now since there is no envy cycle and no more objects to hand out then the procedure ends and the final result is a gets X, b gets Y and c gets Z. # Let's start off by giving the Y object to a. After that both b and c and unenvied agents. So now let's give the Z object to b. After that c is an unenvied agent. So now let's give the last object X to c. Now b is jealous of a, a is jealous of c and c is jealous of b. Since there is an envy cycle between a, b and c, they will rotate objects against the direction of jealousy and now a gets X, b gets Y and c gets Z. And now since there is no envy cycle and no more objects to hand out then the procedure ends and the final result is a gets X, b gets Y and c gets Z. # Let's start off by giving the Z object to a. After that both b and c and unenvied agents. So now let's give the X object to b. After that c is an unenvied agent. So now let's give the last object Y to c. Now b is jealous of a and c, a is jealous of b and c and c is jealous of b and a. Since there is an envy cycle between a, b and c they will rotate objects against the direction of jealousy and now a gets X and b gets Y and c gets Z. And now since there is no envy cycle and no more objects to hand out then the procedure ends and the final result is a gets X, b gets Y and c gets Z. # Let's start off by giving the Z object to a. After that both b and c and unenvied agents. So now let's give the Y object to b. After that c is an unenvied agent. So now let's give the last object X to c. Now c is jealous of a, a is jealous of c and b is not jealous of anybody. Since there is an envy cycle between a and c, they will switch objects and now a gets X and c gets Z. And now since there is no envy cycle and no more objects to hand out then the procedure ends and the final result is a gets X, b gets Y and c gets Z. 3) With 3 people and 3 objects, any other situation then the first and second example will give between 1 and 6 results. So for that to happen you just need at least two people to have same preference on one object or at most for two people to have different preferences on the same object. There are six different ways to allocate the objects: In the beginning because no one has anything then all of them are unenvied agents and this is the same in all the cases. In case of a tie, we break ties between unenvied agents in lexicographic order. # Let's start off by giving the X object to a. After that both b and c and unenvied agents. So now let's give the Y object to b. After that c is an unenvied agent. So now let's give the last object Z to c. Now a is not jealous of anybody, b is jealous of a and c and c is not jealous of anybody, now since there is no envy cycle and no more objects to hand out then the procedure ends and the final result is a gets X, b gets Y and c gets Z. # Let's start off by giving the X object to a. After that both b and c and unenvied agents. So now let's give the Z object to b. After that c is an unenvied agent. So now let's give the last object Y to c. Now a is not jealous of anybody, b is jealous of a and c is jealous of b, now since there is no envy cycle and no more objects to hand out then the procedure ends and the final result is a gets X, b gets Z and c gets Y. # Let's start off by giving the Y object to a. After that both b and c and unenvied agents. So now let's give the X object to b. After that c is an unenvied agent. So now let's give the last object Z to c. Now b and c are not jealous of anybody and a is jealous of b, now since there is no envy cycle and no more objects to hand out then the procedure ends and the final result is a gets Y, b gets X and c gets Z. # Let's start off by giving the Y object to a. After that both b and c and unenvied agents. So now let's give the Z object to b. After that c is an unenvied agent. So now let's give the last object X to c. Now a is jealous of c, b is jealous of c and c is jealous of a and b so there are two envy cycles, one between a and c and another between b and c. Because the tie breaker is by lexicographic order, the procedure does the a and c envy cycle first then a and c will switch then a is not jealous of anybody, b is jealous of a and c is jealous of b and now since there is no envy cycle and no more objects to hand out then the procedure ends and the final result is a gets X, b gets Z and c gets Y. # Let's start off by giving the Z object to a. After that both b and c and unenvied agents. So now let's give the X object to b. After that c is an unenvied agent. So now let's give the last object Y to c. Now a is jealous of b and c, b is not jealous of anybody and c is jealous of a. Since there is an envy cycle between a and c they will switch objects and now a gets Y and c gets Z, now since there is no envy cycle and no more objects to hand out then the procedure ends and the final result is a gets Y, b gets X and c gets Z. # Let's start off by giving the Z object to a. After that both b and c and unenvied agents. So now let's give the Y object to b. After that c is an unenvied agent. So now let's give the last object X to c. Now b is jealous of a and c, a is jealous of b and c and c is jealous of b and a. Since there is an envy cycle between a, b and c they will rotate objects against the direction of jealousy. However, because there are 2 envy cycles between a, b and c there could be two options. Because the tie breaker is by lexicographic order, a gets X from c, b gets Z from a and c gets Y from b so the outcome would be a gets X, b gets Z and c gets Y. And now since there is no envy cycle and no more objects to hand out then the procedure ends and the final result is a gets X, b gets Z and c gets Y.


Extensions

The envy-graph algorithm guarantees EF1 when the items are ''goods'' (- the marginal value of each item is positive for all agents). However, when there are both goods and chores, it does not guarantee EF1. An adaptation called ''generalized envy-graph'' guarantees EF1 even with a mixture of goods and chores. It works whenever the valuations are ''doubly-monotonic'', that is: each agent can partition the items into two subsets: one subset contains goods (- items whose marginal utility is always positive) and the other contains chores (- items whose marginal utility is always negative). When agents have cardinality constraints (i.e., for each category of items, there is an upper bound on the number of items each agent an get from this category), the envy-graph algorithm might fail. However, combining it with the round-robin protocol gives an algorithm that finds allocations that are both EF1 and satisfy the cardinality constraints. When the agents have assignment valuations (aka OXS valuations), there is an extension of the envy-graph algorithm called "Algorithm H", in which the next allocation to an unenvied agent is selected such that agent-item utility is maximized. There is no formal proof to the properties of this algorithm, but it fares well on realistic data.


See also

*
Envy-free item allocation Envy-free (EF) item allocation is a fair item allocation problem, in which the fairness criterion is envy-freeness - each agent should receive a bundle that they believe to be at least as good as the bundle of any other agent. Since the items are i ...
*
Greedy number partitioning In computer science, greedy number partitioning is a class of greedy algorithms for multiway number partitioning. The input to the algorithm is a set ''S'' of numbers, and a parameter ''k''. The required output is a partition of ''S'' into ''k'' su ...
- can be viewed a special case of the envy-graph algorithm for the case when all agents have identical valuations. *
Decreasing Demand procedure The Decreasing Demand procedure is a procedure for fair item allocation. It yields a Pareto-efficient division that maximizes the rank of the agent with the lowest rank. This corresponds to the Rawlsian justice criterion of taking care of the wo ...
and
undercut procedure The undercut procedure is a procedure for fair item assignment between two people. It provably finds a complete envy-free item assignment whenever such assignment exists. It was presented by Brams and Kilgour and Klamler and simplified and extende ...
- two additional procedures based on the ordinal ranking of bundles.


References

{{reflist Fair division protocols