はじめに
自作したテニスダブルスの組み合わせ最適化プログラムが、ついに「完全解」を導き出した。表1 が、4コート16人8ラウンドという条件下で、これ以上改善の余地がない数学的に完璧な組み合わせだ。
この発見は筆者にとってでっかい喜びであったが、この組み合わせ表を一見しただけでは、その「完璧さ」は伝わりにくいだろう。本稿では、この組み合わせがなぜ「最適」と言えるのか、その数学的な構造を解き明かしていく。
最適な組み合わせとは
本稿で「最適」という言葉を使うにあたり、まずはその定義を明確にしておく必要がある。テニスサークルのような場で、参加者全員が心から満足する組み合わせとは、以下の2つの条件を最大限に満たすものだと考えられる。
条件1:ペアの多様性
第一に、「誰とペアを組むか」という点である。何度も同じ人とばかりペアを組むのでは、交流が生まれにくく、楽しみも半減してしまう。
したがって、理想的な組み合わせとは、参加者が毎試合、異なるパートナーとペアを組むことである。8試合を行うのであれば、8人の異なるプレイヤーとペアを組むのが最も多様性が高い状態と言える。
条件2:対戦の公平性
第二に、「誰と対戦するか」という公平性である。特定の相手とばかり何度も対戦したり、逆に一度も対戦しない相手がいたりすると、不公平感が生まれる。
理想は、すべてのプレイヤーができるだけ多くの異なる相手と、均等な回数だけ対戦することである。これを数学的に考えると、16人の場合、自分以外の対戦相手は15人存在する。8試合で対戦する相手の延べ人数は 8試合 × 2人 = 16人
となる。
これを公平に分配するには、16 ÷ 15 = 1 あまり 1
より、「14人の相手と1回ずつ対戦し、特定の1人の相手とだけ2回対戦する」のが、数学的に最も公平な状態となる。
まとめ:本稿における「最適解」の定義
以上の考察から、本稿における「最適解」とは、以下の2つの条件を完全に満たす組み合わせと定義する。
- ペアの重複が一切ないこと。
- 全プレイヤーの対戦回数が、数学的に最も公平な分布になっていること。
次の章では、発見した組み合わせが、これらの厳しい条件をクリアしていることをデータで証明していく。
なぜ「最適」なのか
前章で定義した2つの条件、「ペアの多様性」と「対戦の公平性」に基づき、発見した組み合わせ(表1)がなぜ「最適」なのかを定量的に検証していく。
検証1:ペアの多様性は完璧か?
まず、ペアリングの重複について検証する。8試合を通じて、各プレイヤーが何人の異なるパートナーとペアを組んでいるかを分析した。
その結果、全16プレイヤーが、8試合でそれぞれ8人の異なるプレイヤーとペアを組んでいることが確認できた。以下にプレイヤー1とプレイヤー2の例を示す。
-
プレイヤー1のペア相手:
{2, 3, 4, 5, 6, 10, 11, 14}
(8人) -
プレイヤー2のペア相手:
{1, 4, 3, 6, 5, 9, 13, 12}
(8人)
これは他の全プレイヤーについても同様であり、ペアの重複は一切発生していない。 8試合で8人の異なるパートナーと組むというのは、数学的に達成可能な最大値である。
よって、条件1「ペアの多様性」は完璧に満たされている。
検証2:対戦の公平性は完璧か?
次に、対戦回数の公平性を検証する。前章で述べた通り、数学的に最も公平な状態は「14人の相手と1回ずつ、1人の相手とだけ2回対戦する」という分布である。
発見した組み合わせについて、全プレイヤーの対戦回数を集計した結果、驚くべきことに、全16プレイヤーがこの理想的な回数分布を寸分違わず達成していることが判明した。
例えば、プレイヤー1の対戦相手とその回数は以下の通りである。
-
2回対戦する相手:
{16}
(1人) -
1回対戦する相手:
{2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
(14人)
この完璧な分布は、プレイヤー1だけでなく、他の全プレイヤーにおいても同様に成り立っている。
よって、条件2「対戦の公平性」もまた、完璧に満たされている。
驚異的な事実:7ラウンドでも最適性は保たれる
さらに驚くべきは、この組み合わせの完成度の高さである。我々のサークルでは、時間の都合で7ラウンドで終了することもある。そこで、この組み合わせを7ラウンドで打ち切った場合の状態を分析した。
7試合での理想的な対戦回数は、「14人の相手と1回ずつ対戦し、1人とは対戦しない」という状態である。分析の結果、7ラウンド終了時点でも、全プレイヤーがこの理想的な対戦分布を達成していることがわかった。ペアリングの重複はもちろんない。
つまり、この組み合わせは8ラウンドで完璧なだけでなく、途中の7ラウンドで中断しても、その時点での公平性が完璧に保たれるという、極めて高度な構造を持っているのだ。
結論
以上の検証から、発見した組み合わせは、ペアの多様性と対戦の公平性の両面において、数学的に達成可能な限界を極めた、まぎれもない「最適解」であることが証明された。
おわりに
本稿では、自作のプログラムが導き出した「最適解」が、なぜ数学的に完璧と言えるのかを解説した。ペアの多様性と対戦の公平性という2つの指標において、この組み合わせが数学的な限界を達成していることをご理解いただけたかと思う。
この解の存在は、おそらく組み合わせデザイン理論の分野では既に知られていたものだろう。実際、調べてみると「ホイストトーナメント」といった関連する問題が存在する。しかし、そのような専門知識を持たない状態から、純粋な探索アルゴリズム、つまり「コンピュータの力任せの計算」によってこの美しい構造にたどり着けたという事実は、私にとって大きな驚きと知的な興奮をもたらしてくれた。
「良い評価関数」と「圧倒的な計算速度」さえあれば、一見無謀に見える全探索も、人間の知性が長年かけて構築してきた理論に匹敵する「答え」を見つけ出す力がある。今回の発見は、その可能性を改めて教えてくれた。
自分の書いたコードが、単なる便利ツールに留まらず、こうした数学的な美しさや秩序の世界を垣間見せてくれる。これこそが、プログラミングという探求の最大の醍醐味ではないだろうか。
この記事が、皆さんの身近な問題をプログラムで解決してみよう、そしてその先に待つかもしれない思わぬ発見を楽しんでみよう、というきっかけになれば幸いである。
最後までお読みいただき、ありがとうございました。