I am wondering if there is a known algorithm for solving the following.
Data: There is a number of sets containing items. An item can be a member of more than one set.
Aim: return the minimum number of sets which between them contain all of the items, and avoid returning duplicate items as much as possible. For example:
- Set 1: a
- Set 2: a, b
- Set 3: b, c
For this I would want to return sets 1 and 3. This is the fewest sets which combined contain at least 1 copy of all the items and duplicate items are kept to a minimum.
BTW - I will be looking to implement this in C#.