Aufzählung aller möglichen zweigliedrigen Gruppenkonstellationen

8

Ich suche nach einer Möglichkeit, alle möglichen Zwei-Gruppen-Konstellationen für n Mitglieder aufzuzählen.

Z. B. für n = 4 Mitglieder sind die folgenden 3 einzigartigen Gruppenkonstellationen möglich (bitte beachten Sie, dass weder die Reihenfolge der Mitglieder innerhalb einer Gruppe noch die Gruppenreihenfolge von Bedeutung ist):

%Vor%

Z. B. für n = 6 Mitglieder sind die 15 einzigartigen Konstellationen möglich:

%Vor%

Für n Mitglieder kann die Anzahl der eindeutigen Gruppen als

berechnet werden %Vor%

wobei (n, k) der Binomialkoef ist.

Für n = 4 haben wir

%Vor%

mögliche Zwei-Gruppen-Gruppenkonstellationen. Für n = 6 ist es

%Vor%

Eine Enumeration der Gruppen von Hand ist nicht möglich für mehr als n = 6 Mitglieder. Gibt es eine einfache Möglichkeit, eine Liste / einen Datenrahmen mit allen möglichen Gruppenkonstellationen zu erhalten?

    
phx 16.01.2012, 21:26
quelle

4 Antworten

4

Das sieht so aus:

%Vor%

Ausgabe:

%Vor%

Erzeugt 105 Einträge für constellations(8) , die gemäß der Formel ausgecheckt werden.
Im Wesentlichen nehme ich nur die Kombinationen des ersten Elements mit jedem anderen Element und übergebe dann den Rest in die Rekursion - dies stellt sicher, dass keine wiederholten Gruppen vorhanden sind.

    
tzaman 16.01.2012, 22:46
quelle
4

Das R-Paket partitions wurde geschrieben, um Fragen wie Ihre zu beantworten, was (in mathematischen Begriffen) das Aufzählen aller möglichen Partitionen von eine Menge von sechs Elementen in drei Äquivalenzklassen mit jeweils zwei Elementen.

Das Paket bietet zwei Funktionen - setparts() und listParts() -, die alle Partitionen auflisten. Die Funktionen unterscheiden sich nur in dem Format, in dem sie diese Ergebnisse zurückgeben.

Hier zeige ich die Ausgabe der Funktion listParts() , hauptsächlich weil das gedruckte Format, das es zurückgibt, näher an dem ist, was Sie in der ursprünglichen Frage eingeschlossen haben:

%Vor%     
Josh O'Brien 17.01.2012 03:38
quelle
1

Wenn Sie alle Partitionen von 1: n zu Paaren aufzählen wollen, können Sie das rekursiv tun. Hier ist eine R-Lösung.

%Vor%     
Vincent Zoonekynd 16.01.2012 22:46
quelle
1

Ich kam auf:

%Vor%

Läuft:

%Vor%

Ich habe:

%Vor%

Performance: Dies kann mit besseren Algorithmen für have_same und have_common noch verbessert werden.

Aber ich habe trotzdem ein bisschen Zeit mit timit gemacht und ich habe:

%Vor%     
Rik Poggi 16.01.2012 22:49
quelle

Tags und Links