EF1 Allocation Algorithm
This tool is an implementation of
Lipton et al.'s algorithmthat produces an
EF1allocation,
, 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:
Then, for each item:
Allocate it to any agent,
, 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
, or it could cause agent
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
to
would indicate that agent
is envious of agent
Then analyse the envy graph to look for any cycles, if there exists any such cycle e.g.
, 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
gets
's bundle,
gets
's bundle, and
gets
'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.
highlighted allocation:
Control board
EF1 Allocation Algorithm
Collaborator Info
Name
LinkedIn link
Other links
About me