2016-06-06 10 views
1

Ich möchte verschiedene Teilmengen für eine Menge erstellen, die definiert ist, und speichern Sie sie für die spätere Verwendung in meiner Modellierung. Zum Beispiel, wenn ich C = {1,2,3} habe, gibt es einen effizienten Weg, SC = {{1}, {2}, {3}, {1,2}, {1,3} zu erhalten, {2,3}, {1,2,3}} und später in einer Abhängigkeit verwenden?So generieren Sie Teilmengen

Es ist speziell zu lösen nicht verbundene Schaltungen in der Traveling Salesman Problem (so dass jeder Vorschlag, es zu lösen ist alternativ gut aufgenommen). Vielen Dank!

Antwort

-1

public IEnumerable<IEnumerable<T>> GetPowerSet<T>(List<T> list) { return from m in Enumerable.Range(0, 1 << list.Count) select from i in Enumerable.Range(0, list.Count) where (m & (1 << i)) != 0 select list[i]; }

Das sollte funktionieren.

-1

Berühmte Einzeiler in Haskell:

> filterM (const [True, False]) [1,2,3] 
[[1,2,3],[1,2],[1,3],[1],[2,3],[2],[3],[]]