概要
スイスアルゴリズムは、可能な限り再戦を避けながら、実力が最も近い選手同士を対戦させるように設計されています。一般的なスイス形式では、1勝0敗の選手同士、0勝1敗の選手同士が対戦します。これが2勝0敗同士、1勝1敗同士、というように、指定されたラウンド数が終わるまで繰り返されます。
ただし、ポイントの設定方法によっては、同じ戦績の選手同士が必ずしも対戦するとは限りません。このアルゴリズムは、それまでのラウンドで獲得したポイント数を基準に選手の「実力」を判断するため、カスタムのポイント値を設定すると、戦績の異なる選手同士が対戦することがあります。
選手の実力はシードによって表されます。最も実力のある選手が最も高いシードを持ち、2番目に実力のある選手が2番目に高いシードを持つ、というようになります。主催者はシードをどの程度細かく設定するかを自由に決められます。
シードについてさらに詳しく説明すると、ラウンド1では、シード順の後半グループの中で最も高いシードの選手と第1シードの選手が組み合わされます。例えば選手が10人いる場合、シード1対シード6、シード2対シード7、というように組み合わされます。イベントに参加した選手は、それ以外の要素は考慮されず、エントリー順に追加されます。
また、以下は大会設定のBracket Setup セクションにあるスイスフェーズ設定の画像です。
組み合わせの詳細
それでは、組み合わせの具体的な仕組みについて説明します。start.ggでは、できるだけ多くの選手を組み合わせられるようにMaximum Bipartite Graph(最大二部マッチング)アルゴリズムを使用しています。まず同じポイント階層内で選手同士を組み合わせようとし、その次にシードを対戦カードの優先基準として使用します。
例えば、シード1、シード2、シード3、シード4が同じポイント階層にいるとします。理論上はシード1対シード4、シード2対シード3という組み合わせも成立します。しかし、選手の組み合わせの際にシードを次の優先基準として使うことで、シード1対シード3、シード2対シード4のような、より均衡した対戦カードが作られます。
ポイント階層の人数は必ずしもちょうど良い数になるとは限らず、また再戦をできるだけ避けるため、以下で説明するようにグループを上下に統合していきます。この場合も、前述のとおり、統合されたグループ内で組み合わせを作る際にはシードを次の優先基準として使用し、最も均衡した対戦カードを作成します。シードグループを上下に統合する手順は以下のとおりです。
選手をポイントの多い順に並び替えます
選手の人数が奇数の場合は「不戦勝(bye)」を1つ追加します
選手をポイントごとにグループ分けし、人数が奇数のグループがあれば、そのグループの最後の選手を次のグループへ移動します(これにより、すべてのグループが偶数人数になります)
各グループの選手について、これまで対戦したことのない相手同士が組み合わされるようなペアリングを探します:
これで有効な組み合わせが見つからない場合は、このグループを次のグループと統合します。
リストの最後のグループで組み合わせが見つからない場合は、それより前のグループの組み合わせを一旦解除し、現在のグループと統合していきます。
リスト全体を通しても再戦を避けた組み合わせが作成できない場合は、この時点で再戦を許可した上で最初からやり直します(推奨されるラウンド数を使用していれば、これが起こることは極めてまれです)。
順位はポイント数を基準に決定され、同点の場合のタイブレークとしては、まず同点選手同士の直接対決(H2H)、次に対戦相手の合計ポイント(strength of schedule)が使用されます。別のタイブレーク方式を使いたい場合、主催者(TO)は手動で最終順位を確定できます。

