Protocol to split a common item between 2 people

1k Views Asked by At

I have a question related to the "pizza splitting" problem (split the pizza in a fair way), and I am looking for an answer of hopefully the same elegance (first splits, second chooses).

Not sure if this is the right Stack Exchange site to ask this, as it has some economics traits to it.

Problem statement: Two participants A and B buy an indivisible item to use together, for an initial price of P'. Some time passes (the "price" is now only P < P') and the two of them need to split the item: A keeps the item and pays B some money for it, or the other way around.

I am looking for a fair protocol (a bidding system perhaps?), input of which would be "what value does the item have for A and B" and the output would be "who gets the item and how much money he pays to the other".

Ideas: I thought that the item has 2 "values" for each of the participants: the maximum amount of money he would pay to keep it P_keep(), and the minimum amount he would sell it for P_sell(). Not sure whether it is always true that one of these is always larger than the other one. I am guessing this could at least be a validation of some sort: if P_keep(A) < P_sell(B) and P_keep(B) < P_sell(A) then there is no way to split this.

What should I be looking for here? Wikipedia has some articles about splitting and fair protocols, but it always seems to be the case that the value is the same for each of the participants...

A great help to me would be some insight into how P, P', P_keep() and P_sell() work, how they are e.g. ordered.

2

There are 2 best solutions below

3
On

what about this bidding system?

    #include <stdio.h>

    int moneyToPleasureA(int money){return money;}
    int moneyToPleasureB(int money){return money;}

    int main(){
        int minSellA = 90;
        int maxBuyA = 10;
        int minSellB = 20;
        int maxBuyB = 30;

        int bidA = 0;
        int bidB = 0;

        int buyPleasureA;
        int buyPleasureB;
        int sellPleasureA;
        int sellPleasureB;

        bool decisionMade=false;
        while(!decisionMade){

            buyPleasureA    = moneyToPleasureA(maxBuyA - (bidA + 1));
            buyPleasureB    = moneyToPleasureB(maxBuyB - (bidB + 1));
            sellPleasureA   = moneyToPleasureA(bidB - minSellA);
            sellPleasureB   = moneyToPleasureB(bidA - minSellB);

            int newBidA;
            int newBidB;

            if(buyPleasureA>sellPleasureA){ newBidA=bidA+1;}
            else{ 
                decisionMade=true;
                printf("B gets the item and he pays %d\n", bidB);
            }
            if(buyPleasureB>sellPleasureB){ newBidB=bidB+1;}
            else{ 
                decisionMade=true;
                printf("A gets the item and he pays %d\n", bidA);
            }

            bidA=newBidA;
            bidB=newBidB;
        }

        return 0;
    }

Each turn, each of A and B is given the chance to bid 1 more dollar to buy the item or to take the money the other person is offering, selling the item. The decision is taken depending on what would give him more pleasure, selling the item for the current money offer or buying it for 1 more dollar.

0
On

First, recognize that $P'$ has no relevance. Whether the value has increased or decreased from initial purchase, we are dealing with the situation today. If there is a market for the item, it doesn't matter who gets it. That one should pay the other $\frac P2$. Each can (by buying or selling the item) get to the other state (item - $\frac P2$,no item + $\frac P2$).

If the item is irreplaceable, it may have different values to the two people and $P$ doesn't matter. Let the value to A be $a$ and the value to B be $b$. We may as well assume $a \ge b$. A will be happier than today if he gets the item and pays less than $\frac a2$. B will be happier than today if he gives up the item and receives at least $\frac b2$. Anywhere in that range is an improvement over the current situation, and negotiation skill will determine the settling point. The natural thing is to suggest A should pay $\frac {a+b}4$ and get the item. Discovering that value is not easy. You can ask them each to write down what their valuation is and average them. The problem is that if A writes a somewhat smaller number than his true value, he pays less, while if B writes a number higher than his true value he receives more. If they both do, you might get back to the correct result, or (if carried to an extreme) give the item to the wrong person.