An efficient code to determine if a set is a subset of another set
- by Edward
I am looking for an efficient way to determine if a set is a subset of another set in Matlab or Mathematica.
Example:
Set A = [1 2 3 4]
Set B = [4 3]
Set C = [3 4 1]
Set D = [4 3 2 1]
The output should be: Set A
Sets B and C belong to set A because A contains all of their elements, therefore, they can be deleted (the order of elements in a set doesn't matter). Set D has the same elements as set A and since set A precedes set D, I would like to simply keep set A and delete set D.
So there are two essential rules:
1. Delete a set if it is a subset of another set
2. Delete a set if its elements are the same as those of a preceding set
My Matlab code is not very efficient at doing this - it mostly consists of nested loops.
Suggestions are very welcome!
Additional explanation: the issue is that with a large number of sets there will be a very large number of pairwise comparisons.