Étant donné un ensemble S = {s i: {z j: z ∈ N}}, ce qui est un algorithme efficace pour calculer les ensembles uniques d'intersections de les sous-ensembles de S?Computing intersections uniques des sous-ensembles
Pour l'arrière-plan, je suis confronté à plusieurs versions de ce problème, certaines plus grandes que d'autres. Dans le plus petit | S | ≈ 1,000, | s i | ≈ 10 000 et les valeurs sont des codes postaux.
petit exemple pour plus de clarté:
Input: S = {{},{1},{2,3},{3,4,5,6,7,8,9,10}} Output: {{},{1},{2,3},{3,4,5,6,7,8,9,10},{3}}
| S | = 4 et il y a 2 = 16 sous-ensembles de S. Cependant, il existe seulement cinq ensembles uniques d'intersections de sous-ensembles. Les quatre premiers sont les membres de S eux-mêmes. Le cinquième est {3}. L'ensemble vide est déjà membre de S. Les 10 autres intersections produisent également des ensembles vides.
Je pense que ce que vous cherchez est juste un algorithme d'intersection simple, jetez un oeil à [algorithme d'intersection linéaire] (http://stackoverflow.com/questions/4642172/computing-set-intersection-in- linéaire) – amas
@amas il y a 2^n sous-ensembles de S et S a plus de 1000 éléments. Un algorithme d'intersection O (n) n'aide pas. L'intersection n'est pas l'enjeu de l'OMI, c'est décider quelles intersections ne pas faire. – Sim
désolé 4 que, peut-être je n'ai pas compris le problème. Pouvez-vous donner plus de détails? – amas