アプリ版:「スタンプのみでお礼する」機能のリリースについて

スポーツで、総当りのリーグ戦をするとします。
たとえばA~Fの6チームでやる場合、
1日目 A対B、C対D、E対F
2日目 B対C、D対E、F対A


というように、毎日全てのチームが試合をし、
かつ同じチームとは1試合しか試合をしないようにして
5日でこのリーグ戦を終わらせるようにする日程のつくり方って、何か決まった方法があるんでしょうか?

6チームくらいだと、何回か適当にやってみるとできるのですが、もっと大きい数になった場合にも、一般的に可能なのですか?
もしやり方があるのでしたら、教えてください!

A 回答 (3件)

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


本当に?

この回答への補足

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チームだと結構難しいです。

補足日時:2001/12/21 08:50
    • good
    • 0

長文になりました。

お許しを。

条件を満たすには、全チーム数が偶数であることはいいですよね。
今チーム数を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

と決めることができます。
    • good
    • 1

●チームの数が偶数の場合を考えることにします。


チームに番号を付けて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 910111213
 1 X 3 4 5 6 7 8 910111213 2
 2 3 X 5 6 7 8 910111213 1 4
 3 4 5 X 7 8 910111213 1 2 6
 4 5 6 7 X 910111213 1 2 3 8
 5 6 7 8 9 X111213 1 2 3 410
 6 7 8 91011 X13 1 2 3 4 512
 7 8 910111213 X 2 3 4 5 6 1
 8 910111213 1 2 X 4 5 6 7 3
 910111213 1 2 3 4 X 6 7 8 5
10111213 1 2 3 4 5 6 X 8 9 7
111213 1 2 3 4 5 6 7 8 X10 9
1213 1 2 3 4 5 6 7 8 910 X11
13 2 4 6 81012 1 3 5 7 911 X

もう要領はお分かりでしょう。 右端の列と一番下の行だけがちょっと例外になります。
●ではチームの数が奇数の場合には?
「幽霊チーム」をもうひとつ追加して偶数にしてしまえば良いのです。 幽霊チームとの対戦日とは、休養日という意味です。

●なお、この他にもやり方はありそうです。全部調べ上げるのは面白い問題になりますね。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!