I got a problem which I do not know how to solve:
I have a set of sets A = {A_1, A_2, ..., A_n} and I have a set B.
The target now is to remove as few elements as possible from B (creating B'), such that, after removing the elements for all 1 <= i <= n, A_i is not a subset of B'.
For example, if we have A_1 = {1,2}, A_2 = {1,3,4}, A_3={2,5}, and B={1,2,3,4,5}, we could e.g. remove 1 and 2 from B (that would yield B'={3,4,5}, which is not a superset of one of the A_i).
Is there an algorithm for determining the (minimal number of) elements to be removed?
It sounds like you want to remove the minimal hitting set of
AfromB(this is closely related to the vertex cover problem).A hitting set for some set-of-sets
Ais itself a set such that it contains at least one element from each set inA(it “hits” each set). The minimal hitting set is the smallest such hitting set. So, if you have an MHS for your set-of-setsA, you have an element from each set inA. Removing this fromBmeans no set inAcan be a subset ofB.All you need to do is calculate the MHS for (A1, A2, … An), then remove that from
B. Unfortunately, finding the MHS is an NP-complete problem. Knowing that though, you have a few options: