プロが教える店舗&オフィスのセキュリティ対策術

nチームのサッカーのリーグ戦を行います。
(1)各チームは1日1回試合します。相手チームとは1回づつ試合しますので、各チームともn-1回試合します。総試合数はn(n-1)/2です。
(2)グラウンドはn/2 面用意します。nが奇数の場合は(n-1)/2 面で試合のないチームが発生します。
(3)なので、必要日数はnが偶数の時はn-1日 奇数の場合はn日必要です。
例 n=5 チームa,b,c,d,e
日程:グラウンド1,グラウンド2,休み
1日目:a-b,c-d,e
2日目:a-c,b-e,d
3日目:a-d,c-e,b
4日目:a-e,b-d,c
5日目:b-c,d-e,a

問題はnを与えて上記組合せ日程表を作るアルゴリズムを作りたいと思っています。
解は複数ありますが、1つ出せばOKです。ただし、
解の条件:どのチームもそれぞれのグラウンドの使用回数はできるだけ等しくする。(直感的には等しくなる解があると思っています)
上記例ではチームaはグラウンド1でばかり試合をしていますが、ほしいのはどのチームもグラウンド1で2試合、グラウンド2で2試合となるような組合せ表です。
上記条件を除いて組合せを作った後、条件を満たすように入れ替えていく等の2段階のアルゴリズムでもかまいません。
一発(変な表現ですが)で出す方法ももちろん歓迎です。皆さんのお知恵をいただきたいのでよろしく。

A 回答 (1件)

日本棋院から依頼されて,ねんりんぴっくというお年寄りの方のための囲碁の対戦組み合わせ作成ソフトを作ったことがあります。


そのときの経験だと,Nの上限がいくつかで,最適なアルゴリズムが違うかもしれないということです。
Nが無限大に近い場合まででも最適解を出せるアルゴリズムは難しくても、
上限が決まっている場合に最適解を出せるアルゴリズムは簡単な場合があります。

上限を提示していただけると幸いです。
    • good
    • 0
この回答へのお礼

おお!プロの方ですか、それは心強い! 上限は30で願いします。

お礼日時:2012/01/29 09:54

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