• 締切済み

総当りのリーグ戦の日程作成方法

スポーツで、総当りのリーグ戦をするとします。 たとえばA~Fの6チームでやる場合、 1日目 A対B、C対D、E対F 2日目 B対C、D対E、F対A … というように、毎日全てのチームが試合をし、 かつ同じチームとは1試合しか試合をしないようにして 5日でこのリーグ戦を終わらせるようにする日程のつくり方って、何か決まった方法があるんでしょうか? 6チームくらいだと、何回か適当にやってみるとできるのですが、もっと大きい数になった場合にも、一般的に可能なのですか? もしやり方があるのでしたら、教えてください!

みんなの回答

  • stomachman
  • ベストアンサー率57% (1014/1775)
回答No.3

●チームの数が偶数の場合を考えることにします。 チームに番号を付けて1,2,......,2Nとします。1日にN試合をするわけです。 総当たりなので、試合の回数はN(2N-1)で、これをN箇所で同時開催するのだから、(2N-1)日掛かります。 2N×2Nの対称行列Aで、チームx対yの対戦日付をA[x,y]と表すことにします。この行列A(対角線を除く)に、1~(2N-1)の日付をそれぞれN個づつ埋めることができれば良い。 ただし、どの行、どの列にも同じ数字が来てはいけない。 そのように埋めることができればオッケーですね。 チームが14ある場合(N=7)の例を示します。  X  1  2  3  4  5  6  7  8  9 10 11 12 13  1  X  3  4  5  6  7  8  9 10 11 12 13  2  2  3  X  5  6  7  8  9 10 11 12 13  1  4  3  4  5  X  7  8  9 10 11 12 13  1  2  6  4  5  6  7  X  9 10 11 12 13  1  2  3  8  5  6  7  8  9  X 11 12 13  1  2  3  4 10  6  7  8  9 10 11  X 13  1  2  3  4  5 12  7  8  9 10 11 12 13  X  2  3  4  5  6  1  8  9 10 11 12 13  1  2  X  4  5  6  7  3  9 10 11 12 13  1  2  3  4  X  6  7  8  5 10 11 12 13  1  2  3  4  5  6  X  8  9  7 11 12 13  1  2  3  4  5  6  7  8  X 10  9 12 13  1  2  3  4  5  6  7  8  9 10  X 11 13  2  4  6  8 10 12  1  3  5  7  9 11  X もう要領はお分かりでしょう。 右端の列と一番下の行だけがちょっと例外になります。 ●ではチームの数が奇数の場合には? 「幽霊チーム」をもうひとつ追加して偶数にしてしまえば良いのです。 幽霊チームとの対戦日とは、休養日という意味です。 ●なお、この他にもやり方はありそうです。全部調べ上げるのは面白い問題になりますね。

  • hinebot
  • ベストアンサー率37% (1123/2963)
回答No.2

長文になりました。お許しを。 条件を満たすには、全チーム数が偶数であることはいいですよね。 今チーム数をNとします。 1対1で2チームづつ試合するわけですから、1日に消化できる試合数はN/2となります。 一方、全試合数は、総当りですから、自分を除く全チームと試合する必要があるわけで1チームあたり(N-1)試合、NチームですからN(N-1) ここで互いにダブっているから、2で割って N(N-1)/2試合となります。 よって、全試合消化には N(N-1)/2 ÷N/2 = N-1 日必要になるわけです。 ここまではいいですね。 次に1日の組み合わせを考えるのは、Nチームを1列に並べる並べ方を考えることと同じです。つまり、N!通りの並べ方があるわけです。 (!は階乗の記号です。 n!= n*(n-1)*(n-2)*…*3*2*1 です。) このN!通りの中から、重ならないようにN-1通り分を選ぶことになるわけです。 8チームだと、8!、最初の1チームを固定しても7!=5040通り から7通り分を選ぶ作業になります。 一般解はわかりませんが、8チームぐらいなら、やっつけでもできます。考え方は同じでしょうね。(多分) 以下、私のやり方です。 チームをA~Hとします。8チームですから7日間必要で、まず1日目とAチームの日程を 決めてしまいます。 1日目 A-B C-D E-F G-H 2日目 A-C 3日目 A-D 4日目 A-E 5日目 A-F 6日目 A-G 7日目 A-H 次にBチームの日程を決めます。重なりに気をつけて順番に並べてしまいます。 1日目 A-B C-D E-F G-H 2日目 A-C B-D 3日目 A-D B-E 4日目 A-E B-F 5日目 A-F B-G 6日目 A-G B-H 7日目 A-H B-C ここまではいいですね。次はCチームです。すでにCが組まれている1日目/2日目/7日目以外に入れます。 1日目 A-B C-D E-F G-H 2日目 A-C B-D 3日目 A-D B-E C- 4日目 A-E B-F C- 5日目 A-F B-G C- 6日目 A-G B-H C- 7日目 A-H B-C ここで、Cの対戦相手のE,F,G,Hについて考えます。 C-Eは5日目か6日目しか入れません。 もし、C-Eを6日目に当てると残る2チームがD-Hとなり、6日目にはB-Hが組まれているのでHが重なるので不可です。よってC-Eは5日目となります。 次にC-Fは4日目以外は入れますが、上述の通りC-Eが5日目で確定したので3日目か6日目になります。3日目に入れると3日目の残るカードがG-Hとなり、1日目と重なるのでC-Fは6日目と決まります。 同様に考えて、Cチームの日程が以下のように決まります。 1日目 A-B C-D E-F G-H 2日目 A-C B-D 3日目 A-D B-E C-G 4日目 A-E B-F C-H 5日目 A-F B-G C-E 6日目 A-G B-H C-F 7日目 A-H B-C Dチーム以下についても同様に考察すると 1日目 A-B C-D E-F G-H 2日目 A-C B-D E-H F-G 3日目 A-D B-E C-G F-H 4日目 A-E B-F C-H D-G 5日目 A-F B-G C-E D-H 6日目 A-G B-H C-F D-E 7日目 A-H B-C D-F E-G と決めることができます。

回答No.1

>6チームくらいだと、何回か適当にやってみるとできるのですが、… 本当に?

noname#2111
質問者

補足

1日目: A-B C-D E-F 2日目: A-C B-E D-F 3日目: A-D B-F C-E 4日目: A-E B-D C-F 5日目: A-F B-C D-E と、今適当にやってみたのですが、 全チームが毎日試合をして、かつ各チームと1試合ずつして、5日で日程が終わります。 KaitoTVGAMEKOZOUさんは多分スポーツなど殆どしないし、見ないかたなのでしょうけど。 以前、バレーボールのW杯かなんかでも8チームくらいでこれをやってました。来年のサッカーW杯予選は、4チームでこれをやりますよね。 この日程の作り方に何かコツがあるのかなーと思ったんですが。 #8チームだと結構難しいです。

関連するQ&A