Sto cercando un modo per enumerare tutte le possibili costellazioni di gruppo di due membri per n membri.Enumerazione di tutte le possibili costellazioni di gruppo a due membri
esempio, per n = 4 membri i seguenti 3 costellazioni gruppo uniche sono possibili (si noti che né l'ordine dei membri di un gruppo, né l'ordine gruppo è di importanza):
((1,2), (3,4))
((1,3), (2,4))
((1,4), (2,3))
Eg, per n = 6 membri 15 costellazioni uniche possibili:
((1,2), (3,4), (5,6))
((1,2), (5,4), (3,6))
((1,2), (6,4), (5,3))
((1,3), (2,4), (5,6))
((1,3), (2,6), (5,4))
((1,3), (2,5), (4,6))
((1,4), (3,2), (5,6))
((1,4), (3,5), (2,6))
((1,4), (3,6), (5,2))
((1,5), (3,4), (2,6))
((1,5), (3,2), (4,6))
((1,5), (3,6), (2,4))
((1,6), (3,4), (5,2))
((1,6), (3,5), (2,4))
((1,6), (3,2), (5,4))
per n membri numero di gruppi unici può essere calcolato come
choose(n,2)*choose(n-2,2)*...*choose(2,2)/factorial(n/2),
dove scegliere (n, k) è il coefficiente binomiale.
Per n = 4 abbiamo
choose(4,2)/factorial(4/2) = 3
possibili costellazioni gruppo di due componenti. Per n = 6 è
choose(6,2)*choose(4,2)/factorial(6/2) = 15.
Un enumaration dei gruppi a mano non è fattibile per più di n = 6 membri. C'è un modo semplice per ottenere una lista/dataframe con tutte le possibili costellazioni di gruppo?
io non sono sicuro di esattamente come fare ma guardate itertools: http://docs.python.org/library/itertools.html – robert
Pensavo di averlo capito ma ora mi rendo conto di no. La tua lista di 15 include sia ((3,2), (1,4), (5,6)) e ((1,4), (3,2), (5,6)), sia diversi altre coppie che il mio codice considerava equivalenti. Cosa mi manca? – DSM
Sì, sembra che la lista nell'OP non sia corretta. Tuttavia, c'è una lista unica di quindici che soddisfa le condizioni date; guarda la mia risposta – tzaman