Ich habe eine Liste von 2-Tupeln und möchte so viele 3-Tupel wie möglich aus dieser Liste erzeugen. Beispiel:Erzeugen einer maximalen Anzahl von 3-Tupeln aus einer Liste von 2-Tupeln
#!/usr/bin/python
import itertools
a = list(itertools.combinations([1,2,3,4,5,6,7,8,9], 2))
dh
a = [(1, 2), (1, 3), ..., (1, 9), (2, 3), ..., (8, 9)]
Nun würde Ich mag die maximale Menge an zyklischen 3-Tupel finden, die aus dieser Liste erzeugt werden kann, würde ein solches 3-Tupel sein:
(1,2),(2,3),(1,3) -> (1,2,3)
Jedes 2-Tupel kann nur einmal verwendet werden. Ich nehme an, ich könnte einen Brute-Force-Ansatz verwenden, aber ich habe das Gefühl, dass es viel klüger gemacht werden kann. Irgendwelche Gedanken?
Für alle Interessierten ist das Problem ein Zeitplanproblem. n Teams sollten während einer Saison einmal gegeneinander spielen. Eine Saison besteht aus einer Reihe von Turnieren, idealerweise besteht ein Turnier aus 3 Teams, in denen alle 3 Teams gegeneinander spielen (insgesamt 3 Spiele in einem solchen Turnier). Ziel ist es, Turniere mit nur zwei Mannschaften zu vermeiden.
Können Sie diese beziehen sich auf [ Zyklen in einer Grafik] (http://www.geeksforgeeks.org/detect-cycle-undirected-graph/)? –
Ich nehme an, aber wenn wir uns das in Form von Kanten in einem ungerichteten Graphen vorstellen, haben wir es mit einem vollständigen Graphen zu tun: https://en.wikipedia.org/wiki/Complete_graph. Wir möchten dann in diesem Graph so viele 3-Zyklen wie möglich finden. – Lennart