スポーツ リーグのスケジューラを作成しようとしています。チームをグループでスケジュールして、すべてのチームがグループごとに 1 つのゲームを取得できるようにしたいと考えています。私がやろうとしていることは、コンピューター サイエンスの既存の問題だと思いますが、それが何と呼ばれているのかわかりません。それに関する情報を見つけるのに苦労しています。いずれにせよ、状況は次のとおりです。
A = {1,2,3,...,n}
team のセットとそれらの team のペアのセットがあるとしましょうB = {(1,2), (1,3), (2,4), (6,9),...}
。B には、A からのチームのすべての可能な組み合わせがあるわけではありません。A には偶数のチームがあると仮定します。私のプログラムは、A のすべてのチームが S に 1 回だけ出現するように、B のサブセット (そのサブセットを S と呼びましょう) を作成しようとしています。これは、ペアを B から S に 1 つずつ移動することによって行われます。すでにいくつかのペアが S に配置されているとしましょう。現在の状況で S を正常に作成できるかどうかを確認するにはどうすればよいですか?
例:
A = {1,2,3,4}, B = {(1,2), (1,3), (1,4), (3,4)}
If after one move, S = {(1,2)}, then it can be completed by moving (3,4).
If after one move, S = {(1,3)}, then it cannot be completed.
更新: このアルゴリズムは、スケジュール ジェネレーターで使用するヒューリスティックの 1 つです。目標は、各チームがウェーブごとに 1 つのゲームを持つ「ウェーブ」にスケジュールを暗黙的に分割することです。たとえば、16 チームのプールがあり、各チームがプール内の他のチームと 5 試合を行うとします。理想的なスケジュールでは、すべてのチームが少なくとも 1 つのゲームを行う前に、どのチームも 2 番目のゲームを行わないようにします。スケジューラーはゲームを 1 つずつ選択し、日付を割り当てます。したがって、この「ウェーブ」でスケジュールされたゲームをスケジューラーに追跡させ、現在のウェーブで各チームが 1 回だけプレイするのを妨げるようなゲームを決して選択しないようにするという考え方です。スケジューラーは他の多くのヒューリスティックも使用するため、ゲームを明示的に順序付けして順番に実行することはできません。
これが不明確であるか、あまり厳密でない場合は申し訳ありません。ご不明な点がございましたら、お気軽にお問い合わせください。さらに説明できるよう最善を尽くします。