2017-10-06 4 views
0

Ich habe etwa 1 Million Sätze mit jeweils rund 30 Elementen. Für jedes Set möchte ich alle Subsets bis zur Größe "k" erzeugen, wobei k etwa 3 oder 4 oder 5 ist. Ich bin neu in Guava und habe mich entschieden, es zu versuchen. Ich habe die powerSet-Methode (https://google.github.io/guava/releases/21.0/api/docs/com/google/common/collect/Sets.html) gefunden, die alle Teilmengen für jeden meiner Sätze erzeugt.Subsets der Größe "k" mit Guava

Ich kann durch jedes Power Set durchlaufen und nehme nur die Teilmengen, die kleiner oder gleich "k" sind. Aber da die Power-Sets die Größe 2^30 haben, scheint das sehr ineffizient zu sein.

Ich dachte, dass Guava eine Methode haben würde, die mir erlauben würde, eine Menge aller Teilmengen der Größe k zu erzeugen, aber ich kann sie nicht finden. Fehle ich etwas?

+1

Was möchten Sie danach mit Ergebnissen tun? Brauchen Sie 'Set'-Interface-Funktionen oder ist' Iterable' OK für Ihren Anwendungsfall? – Xaerxess

+0

Iterable ist ok, danke – Andrew

Antwort

3

"Eine Menge aller Teilmengen der Größe k" ist Sets.combinations.

(Ich glaube nicht, wir haben eine direkte Möglichkeit, alle Teilmengen der Größe k oder weniger zu generieren, aber wie Sie darauf hinweisen, ist es einfach zu bauen, dass combinations - wenn Sie alles in einem einzigen Set wollen , wie Xaerxess fragt, müssen Sie die Set selbst erstellen.)

+0

Großartig, danke – Andrew

Verwandte Themen