私は2タプルのリストを持っており、そのリストからできるだけ多くの3タプルを生成したいと考えています。例:今、私はこのリストから生成可能な巡回3タプルの最大量を見つけるしたいと思います2タプルのリストから3タプルの最大数を生成する
a = [(1, 2), (1, 3), ..., (1, 9), (2, 3), ..., (8, 9)]
すなわち
#!/usr/bin/python
import itertools
a = list(itertools.combinations([1,2,3,4,5,6,7,8,9], 2))
、そのような3つのタプルは次のようになります。
(1,2),(2,3),(1,3) -> (1,2,3)
各2タプルは1回のみ使用できます。私はブルートフォースのアプローチを使うことができると思いますが、もっとスマートな方法でやり遂げることができると感じています。何かご意見は?
関心のある人にとって、問題はスケジューリングの問題です。 nチームはシーズン中に一度お互いにプレイしなければなりません。シーズンはいくつかのトーナメントで構成されています。トーナメントは3チーム全員がお互いにプレーしている理想的なトーナメントです(トーナメントで合計3試合)。目標は2つのチームだけでトーナメントを回避することです。
あなたはこれを関連付けることができます[グラフのサイクル](http://www.geeksforgeeks.org/detect-cycle-undirected-graph/)? –
私は推測していますが、無向グラフのエッジでこれを考えると、完全なグラフ(https://en.wikipedia.org/wiki/Complete_graph)を扱っています。このグラフでは、できるだけ多くの3サイクルを見つけたいと考えています。 – Lennart