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?
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.
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:
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%