Ich interessiere mich für die Permutationen p: S-> S innerhalb einer Menge S = {1, 2, ..., n}. Insbesondere alle Funktionen, die entweder i und j vertauschen: p (i) = j und p (j) = i; oder lassen sie unverändert p (i) = i oder p (j) = j.Generiere alle möglichen Permutationsfunktionen
Zum Beispiel, wenn S = {1,2,3}, soll ich so etwas wie:
p0 = [(1), (2), (3)] # p(1)=1, p(2)=2, p(3)=3
p1 = [(1,2), (3)] # p(1)=2, p(2)=1, p(3)=3
p2 = [(1,3), (2)]
p3 = [(2,3), (1)]
Wenn S = {1, 2, 3, 4}:
p0 = [(1), (2), (3), (4)]
p1 = [(1,2), (3,4)]
p2 = [(1,2), (3), (4)] # p(1)=2, p(2)=1, p(3)=3, p(4)=4
p3 = [(1,3), (2,4)]
p4 = [(1,3), (2), (4)]
p5 = [(1,4), (2,3)]
p6 = [(1,4), (2), (3)]
p7 = [(1), (3), (2,4)]
p8 = [(1), (4), (2,3)]
p9 = [(1), (2), (3,4)]
Danke.
Was haben Sie versucht? Sie sind sich der 'itertools' bewusst, es ist nicht schwer, sie für Ihre Bausteine zu verwenden, wenn Sie sich dessen bewusst sind. – ShadowRanger
Ich glaube nicht, dass es so viele downvotes geben sollte, es geht nicht um * willkürliche * Permutationen, sondern eher um eine spezielle Teilmenge von ihnen. Eine effiziente Implementierung ist ein wenig schwierig. – Kh40tiK
@ Kh40tiK: Um Hilfe zu bitten, ohne auch nur einen Versuch zu machen, ist nicht wirklich im Sinne von SO. – ShadowRanger