スイス式トーナメント



2/17(日)に行われた『沼田小学生将棋名人戦』で 『スイス式トーナメント(以後、スイス式)』を採用しました。 今回使ったスイス式の考え方、計算方法について説明します。


スイス式とは、一口で言うと 『上位集団と下位集団の対戦を省くことで対戦数を減らした総当たり戦』 と言うことができます。

総当たり戦では、最上位のものと最下位の対戦まですべての組み合わせが実行されます。 もし、上位の数人の順番さえわかればいいのなら、 最上位と最下位の対戦は必要ありません。 ほとんどの大会が優勝、準優勝、三位程度を必要とし、 それ以降の順番は必要としていません。

スイス式は、一回戦を除き、 二回戦以降の組み合わせはできるだけ上位と下位の組み合わせを無くすことで、 戦いの回数を減らします。

時間があるなら(選手の体力の問題は別にして)総当たり戦が理想的です。 しかし一般には試合時間は限られていて、 参加者が多いときは総当たり戦は採用できません。

かと言って、安易に勝ち抜き戦を採用すれば、 結果の公平性が大きく損なわれます。 極端な話、一回戦で一番強い選手と二番目に強い選手が対戦すれば、 二番目に強い選手は 一回戦敗退 となり、 公平性など見る影もありません。 大人の大会なら『くじ運もあるさ』で片付けられますが、 子供の大会では使いたくない方式です。 「くじ運」で済ませられるなら、 乱暴な言い方ですが、 試合など不要で くじ引き で優勝や準優勝を決めたっていいわけです。


一番強い選手が優勝し、二番目の選手は二位となり、三番目が三位になるのが理想とすると、
総当たり戦 > スイス式 >> 勝ち抜き戦
が優れた方式の順であることがお分かりいただけたと思います。

スイス式は何回戦やればいいか? 最低値は『勝ち抜き戦と同じ回数』です。 つまり、
2n ≧ 参加者数
を満足する整数値 n の最小値が必要な回数になります。

次に、組み合わせ方です。 1回戦は情報 0 なのでランダムに組み合わせます。 2回戦以降は、そこまでの成績の 強い順 に組み合わせます。 勿論、対戦済みは一つ飛ばして組を作ります。

ここで重要なことは、 強い順 の判定方法です。 単純には 勝ち星の多い順 ですが、 それではやや大雑把になってしまいます。

本当に強い選手、強そうにに思える選手は次のどちらでしょうか?
  1. 弱い選手ばかりと対戦して勝ってる選手
  2. 強い選手とばかり当たりながら勝ち進んでいる選手
後者が強いように思えます。 少なくとも後者のほうが強い可能性は高いでしょう。

スイス式では強さの判定法がいくつか挙げられています。
  1. 勝った数
  2. 対戦した相手の勝数(こんな強い相手と当たってるんだぞ)
  3. 勝った相手の勝数(こんな強い相手に勝ってるんだぞ)
  4. ・・・その他いろいろ
計算方法はいろいろありますが、上の(1)(2)(3)を採用すると、 n回まで進んだときの得点 T は、
T = 勝数x10000 + 対戦相手の勝数x100 + 勝った相手の勝数
となります。 x10000 とか x100 とか x1 で優先順が付きます。 ここで、100倍ずつ格差をつけているのは、 例えば、対戦した相手の勝数を合計すると 10を超すことがあります。 格差を 10倍にしていると、このとき上位の優先項目と混同してしまいます。 それを防ぐ目的で x100 としています。

上の計算を用いて n回戦まで戦って得られる結果は、
1位と最下位は勝ち抜き戦並みの精度
つまり、勝ち抜き戦と同じように、一番強い選手がトップにきます。 2位、3位はどうでしょう? 理論上 2番目に強い選手がきちんと 2位に入るでしょうか? 3番目は?

シミュレーション結果(このページの最後に置きます)では、
  1. 優勝は [No1](*1) に決まります
     (*1) [No.1] = 『一番強い人』の意、以下同
  2. 準優勝は [No.2]と[No.3] が大半になります
     ([No.2] = 50%、[No.3] = 40%)
  3. 三位に [No.3] が来るのは半分です(50%)
  4. 四位は、[No.4]=30%、[No.5]=50%、[N0/6]=10%、[No.7]=10%
ここで、もう一回回数を増やす、つまり n+1 回対戦することでこの不具合は劇的に改善されます。
  1. 1位、2位は [N0.1]、[No2]が 100% になります
  2. 3位は高い確率( = 70%)で [No.3] が入ります
  3. 4位は改善が見られません
それでもまだ 3位に No.4 以下の選手が入ることが時々起こります。 理想的には +2回余計に対戦を組めば、完璧に近い結果を得ることができます。 それでも、それ以降はやはりあるべき順番には並びません。 そこが総当たり戦との違いになります。


今回の大会では、 計算は上記判定法の(1),(2)で計算しました。 高学年は 11人なので最低 4回戦、低学年は 19人なので最低 5回戦必要になります。 3位くらいまでは正しい順が予想されるようにしたかったので、 高学年=6回戦、低学年=8回戦を考えていましたが、 時間の都合で高学年 = 5回戦、低学年 = 6回戦で打ち切りました (時間により途中で打ち切ることもあると予め宣言していました)。

それでも、かなり公平な結果が得られていると確信しています。


以下は、ソフトによるシミュレーション結果です。
  • 11人によるスイス式を想定
  • 参加者の強さは、参加者番号1が最強で、以下番号2=強さ2、番号3=強さ3、・・・となっていて、 強い者が弱い者に必ず勝つとする(実戦では下位が上位に勝ったりする)
  • 競技者11人の場合の最低協議回数=4 なので、4回戦戦った場合と 5回戦の場合の違いを見る
  • 10回試行
test # 1位 2位 3位 4位
4回戦 5回戦 4回戦 5回戦 4回戦 5回戦 4回戦 5回戦
1 1 1 5 2 2 5 4 3
2 1 1 2 2 3 3 4 5
3 1 1 2 2 3 3 5 5
4 1 1 2 2 3 4 5 3
5 1 1 2 2 3 3 5 4,5
6 1 1 3 2 2 3 5 4
7 1 1 3 2 2 3 5 5
8 1 1 3 2 2 4 4 3
9 1 1 3 2 2 3 7 4
10 1 1 2 2 3 3,4 6 -
  • 表中の数字は 1位、2位、・・・に実力何番の者が入ったかを示す。
  • 数字が2ヶ並ぶのは同着を表す。
  • このシミュレーションでは、1回戦多い設定にすることで、
    • 優勝と準優勝にはそれぞれ #1、#2 が 100%の確率で入ることが判る。

    • 三位に #3が入る確率は 70%、 また #3 が 4位以内に入る確率は 100%である。

    ここで、#1 は実力 1位 を表す。 以下同。

  • スイス式は、選手の実力を高い精度で結果に結びつけることがお分かり頂ける思います。
  • 【注意】少ない対戦数で高い精度を実現するには、 毎回終了時に選手の得点計算し、 得点順に並び替えることが必要です。 一回戦終わる毎に、 勝った数、対戦した相手の勝ち星などを考慮した計算を行うことが必要です。