2017-10-06 4 views
0

J'ai environ 1 million de jeux chacun avec environ 30 éléments. Pour chaque ensemble, je veux générer tous les sous-ensembles jusqu'à la taille "k" où k va être quelque chose comme 3 ou 4 ou 5. Je suis nouveau à Guava et j'ai décidé de l'essayer. J'ai trouvé la méthode powerSet (https://google.github.io/guava/releases/21.0/api/docs/com/google/common/collect/Sets.html) qui va générer tous les sous-ensembles pour chacun de mes ensembles.Sous-ensembles de la taille "k" en utilisant la goyave

Je peux faire une boucle sur chaque groupe d'alimentation et ne prendre que les sous-ensembles dont la taille est inférieure ou égale à "k". Mais puisque les ensembles de puissance ont la taille 2^30, ceci semble très inefficace.

Je pensais que Guava aurait une méthode qui me permettrait de générer un ensemble de tous les sous-ensembles de taille k mais je ne le trouve pas. Est-ce que je manque quelque chose?

+1

Que voulez-vous faire avec les résultats après? Avez-vous besoin des fonctions d'interface 'Set' ou est-ce que' Iterable' est OK pour votre cas d'utilisation? – Xaerxess

+0

Iterable est ok, merci – Andrew

Répondre

3

"Un ensemble de tous les sous-ensembles de taille k" est Sets.combinations.

(Je ne pense pas que nous ayons un moyen direct de générer tous les sous-ensembles de taille k ou moins, mais comme vous le faites remarquer, il est facile de construire cela à partir de Set , comme le demande Xaerxess, vous devrez vous-même construire le Set.)

+0

Super, merci – Andrew