EF1 Allocation Algorithm

This tool is an implementation of

Lipton et al.'s algorithm

that produces an

EF1

allocation,

XX

, under any preference settings.

How it works

Edit the preference table below according to your question (or use our default allocation setting) and click the RUN button. This tool will then perform the algorithm and output an allocation in the form of circles on the table, that satisfies EF1. The steps of the algorithm are visualised below, showing you the transformations in the envy graph, and the reallocations of items.

The algorithm works as follows:

    Initialise all agents' allocations as empty i.e. no items are assigned yet.

    Then, for each item:

      Allocate it to any agent,

      ii

      , who no one is envious of. Visually, this is any node in the envy graph that has no incoming edges.

      This new item assignment may cause rise in new envy towards agent

      ii

      , or it could cause agent

      ii

      to no longer be envious of some agents. Update the envy graph accordingly. Visually, the direction of any edge on the envy graph indicates the direction of envy, for example, an edge pointing from

      aa

      to

      bb

      would indicate that agent

      aa

      is envious of agent

      b.b.

      Then analyse the envy graph to look for any cycles, if there exists any such cycle e.g.

      ab caa\rightarrow b \rightarrow \ c \rightarrow a

      , remove this cycle by exchanging those agents' bundles along the cycle. This means that each agent gets the bundle of whoever they are envious of in the cycle. Using the example cycle, this means that

      aa

      gets

      bb

      's bundle,

      bb

      gets

      cc

      's bundle, and

      cc

      gets

      aa

      's bundle. Visually, detected cycles will be highlighted in

      red

      .

      Repeat step 3 until there are no more cycles in the envy graph.

    Once all items are allocated and all cycles are removed, the resulting allocation will satisfy EF1.

o1o_{1}
o2o_{2}
o3o_{3}
o4o_{4}
o5o_{5}
o6o_{6}
o7o_{7}
o8o_{8}
11
22
33
44
55
66
X=X =

highlighted allocation:

X1={}X_1 = \{\}
X2={}X_2 = \{\}
X3={}X_3 = \{\}
X4={}X_4 = \{\}
X5={}X_5 = \{\}
X6={}X_6 = \{\}
u1(X1)=0u_{1}(X_{1}) = 0
u2(X2)=0u_{2}(X_{2}) = 0
u3(X3)=0u_{3}(X_{3}) = 0
u4(X4)=0u_{4}(X_{4}) = 0
u5(X5)=0u_{5}(X_{5}) = 0
u6(X6)=0u_{6}(X_{6}) = 0

Control board

EF1 Allocation Algorithm

Collaborator Info

PFP

Name

LinkedIn link

Other links

About me