Lets say I have a finite set of items like the following:{$a_1, a_2, ... , a_n$}And I have a finite list of sets of these items. For example:[{$a_1$}, {$a_1, a_2$}, {$a_1, a_2, a_3$}, {$a_1, a_3$}, {$a_2$}, {$a_2$}, {$a_2$}, {$a_3$}]I then take one item from each set. For example, in the above case, I could do:$a_1$ <- {$a_1$}$a_2$ <- {$a_1, a_2$}$a_1$ <- {$a_1, a_3$}$a_2$ <- {$a_2$}$a_2$ <- {$a_2$}$a_2$ <- {$a_2$}$a_1$ <- {$a_1, a_2, a_3$}$a_3$ <- {$a_3$}  In this case, the totals are:$a_1$: 3$a_2$: 4$a_3$: 1  And the minimum is 1.But lets say I want to maximise the minimum. I could instead select the items like:$a_1$ <- {$a_1$}$a_2$ <- {$a_1, a_2$}$a_3$ <- {$a_1, a_3$} (changed)$a_2$ <- {$a_2$}$a_2$ <- {$a_2$}$a_2$ <- {$a_2$}$a_1$ <- {$a_1, a_2, a_3$}$a_3$ <- {$a_3$}  And the totals are:$a_1$: 2$a_2$: 4$a_3$: 2  And the minimum is 2.Lets say also I allow the items to be assigned in a weighted way. Like the following:$a_1$ <- {$a_1$}$a_1$ <- {$a_1, a_2$} (changed)$a_3$ <- {$a_1, a_3$}$a_2$ <- {$a_2$}$a_2$ <- {$a_2$}$a_2$ <- {$a_2$}$a_1: 0.5, a_3: 0.5$ <- {$a_1, a_2, a_3$} (changed)$a_3$ <- {$a_3$}  And the totals are:$a_1$: 2.5$a_2$: 3$a_3$: 2.5  And the minimum is 2.5.We can't evenly assign the items in these sets because three of them only contain {$a_2$}. So what's a fast algorithm for doing the above, i.e. finding the maximum minimum? I need something exact, not an approximation.
Assigning items as evenly as possible
ds.algorithms