Ich suche nach einer Pythonic-Methode, um alle paarweise eindeutige eindeutige Paarungen (wo eine Paarung ist ein System, bestehend aus Paaren, und paarweise-eindeutige bedeutet, dass (a,b) ≠ (b,a)
) für ein Set mit geraden Nummer n
Artikel.Python: Alle Pairwise-Unique Pairings erzeugen
Ich mag den Code aus here:
for perm in itertools.permutations(range(n)):
print zip(perm[::2], perm[1::2])
außer dass es erzeugt alle auftrags einzigartig, paarweise einzigartige Paarungen oder (n/2)!
mal mehr Paarungen als ich (Redundanz) wollen, die, obwohl ich filtern out, wirklich mein Programm im großen Maßstab n
.
Das heißt, für n = 4
, ich bin auf der Suche nach der folgenden Ausgabe (12 einzigartige Paarungen):
[(0, 1), (2, 3)]
[(0, 1), (3, 2)]
[(1, 0), (2, 3)]
[(1, 0), (3, 2)]
[(1, 2), (0, 3)]
[(1, 2), (3, 0)]
[(1, 3), (0, 2)]
[(2, 0), (1, 3)]
[(2, 0), (3, 1)]
[(3, 1), (0, 2)]
[(0, 3), (2, 1)]
[(3, 0), (2, 1)]
Beachten Sie, dass (a,b) ≠ (b,a)
.
Ist das möglich? Ich bin auch in Ordnung mit einer Funktion, die die 3 nicht paarweisen eindeutigen Paarungen für n = 4
erzeugt, wo (a,b) = (b,a)
, wie es ist einfach zu vervielfachen, was ich brauche von dort. Mein Hauptziel ist es, die überflüssigen Permutationen in der Reihenfolge der Paare in der Paarung zu vermeiden.
Vielen Dank im Voraus für Ihre Hilfe und Vorschläge-ich schätze es wirklich.
Bitte erklären Sie die "Einzigartigkeit" der Paarungen. Warum ist [(0, 2), (3, 1)] nicht und [(0, 3), (2, 1)] ist in Ihrer Liste? –
@RobertLujo Die Gleichheit der Paare hängt von der Reihenfolge der gepaarten Elemente ab, aber die Gleichheit der Paarungen hängt nicht von der Reihenfolge der Paare innerhalb dieser Paarung ab. Das heißt, (a, b) ≠ (b, a) 'aber' [(a, b), (c, d)] = [(c, d), (a, b)] '. Für die spezifischen Fälle, die Sie angeben, wird "[(0, 2), (3, 1)]" durch "[(3, 1), (0, 2)]" dargestellt. Auf der anderen Seite ist "[(0, 3), (2, 1)]" die einzige Darstellung von sich selbst. – Arman
@Arman: Durch diese Definitionen der Paar- und Paarungsgleichheit sind die "12 eindeutigen Paarungen", die Sie in Ihrer Frage auflisten, nicht die einzigen 12, da viele Äquivalente haben, die sich nur in der Reihenfolge der Paare unterscheiden. Wenn das stimmt, ist es meiner Meinung nach etwas irreführend, sie als "einzigartig" zu bezeichnen. Diese Defs erklären auch nicht, warum "[(0, 3), (2, 1)]" die einzige Darstellung von sich selbst ist ", denn nicht" [(2, 1), (0, 3)] 'ein anderer, gleichgültiger? – martineau