トーナメントの対戦をスケジュールするための既知のアルゴリズムはありますか?


10

トーナメントのスケジューリングアルゴリズムがすでに存在していて、それを使用したり、少しだけ適応したりできるかどうか疑問に思っています。

これが私の要件です:

  • 可変数のチーム/クラブに属する可変数の対戦相手は、それぞれ対戦相手とペアにする必要があります
  • 2人の対戦相手が同じクラブに所属することはできません
  • プレーヤーの数が奇数の場合、そのうちの1人がランダムに選択され、さようならを取得します

この種の要件セットに関連するアルゴリズムがあれば幸いです。

編集:これを最大1回実行するだけで、トーナメントの最初の「ラウンド」の対戦を作成できます。


最大一致を調べたい場合があります。
スビック

回答:



1

20秒前のWikipediaでの短い時間から、まず除去戦略を決定する必要があるようです。ウィキペディアを参照してください:

  1. スイスシステム
  2. シングルエリミネーショントーナメント
  3. ダブルエリミネーショントーナメント

シングルエリミネーションの記事では、シーディング手法(探しているアルゴリズム)がかなり一般的に説明されており、かなりアルゴリズムではありません、役立つように見えました。


私はスイスを好みます。それはダブル/シングルのエリミネーションとは異なり、ミドルランキングを与え、Nエリミネーショントーナメントと同じラウンド数で上位Nのプレーヤーを見つけます。
Mooing Duck

1

私が行っているようにこれを作り上げると、最初のマッチングアルゴリズムは非常に単純なようです:

While two or more clubs have at least one member not paired  
    select the two clubs with the most unpaired members
    select a random unpaired member from each club
    pair those members

1人が残っている場合、1人の例外を除いて、ランダムな人になります。1つのクラブに、対戦するすべてのプレーヤーを合わせたよりも多くのメンバーがいる場合、残りは常にそのクラブからのものになります。現実的には、これは非常にまれな状況であり、他のクラブから購入を選択すると、さらに多くの人々が残ります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.