Wie kann ich alle Partitionen einer Liste in Mathematica erhalten?

8

Bei der Partitionierung einer Liste meine ich eine Menge von Teilmengen der Listenelemente, so dass der Schnittpunkt jedes einzelnen Paares von Teilmengen leer ist und die Vereinigung aller Teilmengen gleich der ursprünglichen Liste ist.

Wenn meine Eingabeliste beispielsweise {1,π,x} ist, möchte ich eine Funktion, die

zurückgibt %Vor%     
Michael 29.11.2011, 01:53
quelle

2 Antworten

12

Verwendung von angepasstem Code von Ссылка

%Vor%

Oder, nicht überraschend, das Combinatorica -Paket hat diese Funktion ( SetPartitions ) bereits!

%Vor%

überprüfen Sie, dass beide das gleiche Ergebnis (aber in verschiedenen Aufträgen) zurückgeben

%Vor%     
Mr.Wizard 29.11.2011, 02:12
quelle
2

Ich würde mit einem Powerset des Sets beginnen ( Subsets[x] verwenden) und dann diejenigen filtern, wo Union[x] der Menge ist nicht die ursprüngliche Menge.

Ein bisschen langsam, aber ich finde es intuitiv.

    
Blender 29.11.2011 01:58
quelle

Tags und Links