7. Conclusion
In this paper we have addressed the problem of designing mechanisms to fairly allocate indivisible goods to a set of agents. While previously this question has been mostly investigated in the context of assignment problems, in which agents can receive at most one such good [6], the domain considered here is combinatorial: agents may receive more than one object and have preferences over the possible sets of goods that they may receive. Unlike for other proposals in which payments ensuring fairness are arranged for a given efficient allocation [33,34], the approach advocated here is distributed: agents locally implement mutually beneficial reallocations of goods (furthering the efficiency of the allocation), while the payment rule updates the payments after each deal in a way that ensures fairness at the end of the process. That is, in this approach the quests for efficiency and fairness are intimately interleaved. The first contribution of this paper has been to provide simple conditions under which any sequence of such reallocative steps can be guaranteed to converge to a fair outcome. The fairness criteria considered are proportionality and envy-freeness. As the problem is combinatorial in nature, the approach necessitates that agents can potentially agree on complex deals, and the process itself can involve a large number of steps. If we assume, however, that preferences are modular (additive), then negotiation can be conducted by means of very simple deals, and the length of the process will be linearly bounded [29]. Note that the proposed mechanism never requires heavy central computation: only some simple redistribution of the social surplus (in terms of money) is performed at the global level.