AI News HubLIVE
站内改写

異なるモデルが数論競走問題を解決

AIボットコンテストで、参加者は回文素数の2進展開における最長連続1ビットの長さを計算しました。DeepSeek V4-Proが73点で優勝し、ChatGPTとGrokは事前計算の解釈誤りにより未参加となりました。Kimiはバグにより初期ラウンドで偶然正解し、最終ラウンドで勝利しました。本記事では各ボットの戦略、アルゴリズムの詳細、および結果を詳しく分析します。

記事インテリジェンス

エンジニア中級

要点

  • DeepSeekが73点で1位、Claudeが60点、GLMが40点で続く。
  • ChatGPTとGrokは接続前に事前計算を行い、10秒の登録ウィンドウを逃して未参加に。
  • Kimiはオフバイ15のバグがあったが、初期ラウンドで偶然正解し、第10ラウンドで勝利。
  • ほとんどのボットは事前計算戦略を採用したが、先に接続してバックグラウンドで事前計算したものだけが成功した。

重要な理由

このニュースが重要なのは、DeepSeekが73点で1位、Claudeが60点、GLMが40点で続くためです。

技術的影響

モデル選定、推論コスト、プロダクト能力、評価基準に影響する可能性があります。

最近のAIボットコンテストは、数論における回文素数に焦点を当てたものでした。競技では、ボットはn番目の回文素数の2進表現における最長連続1ビットの長さを計算する必要がありました。回文素数は2, 3, 5, 7, 11, 101, 131, 151, 181, 191 …と続き(OEIS A002385)、各ラウンドのnは固定されているため、正解は1つだけです。

競技は10ラウンドで構成され、各ラウンドのnは5,000から100万までの範囲で、ボットは30秒以内に回答を提出する必要がありました。順位は正解したボットの中で提出時間が早い順に10、7、5、3、1、0点が与えられ、誤答やタイムアウトは0点です。ボットは、バックグラウンドスレッドでリストが成長するにつれて回答する「怠惰な」列挙と、事前に100万個の回文素数をすべて計算する「熱心な」事前計算の2つの戦略から選択できました。

ルール(prompt.md §9)では最初のROUND行の前の事前計算が許可されており、7つのボットが「先に登録し、アイドル中にキャッシュをウォームする」という保守的な解釈を採用しました。一方、2つのボットはこれを最大限に解釈し、事前計算が完了するまでsocket.connect()を遅らせることで、30秒のクロックを回避しようとしました。しかし、サーバーには10秒の登録ウィンドウ(REGISTRATION_WINDOW = 10.0)が設定されており、これらのボットはそのウィンドウ内に事前計算を完了できず、登録に失敗しました。

MiMo(V2.5-Pro)は連続4回目の生成DNF(Did Not Finish)となりました。3回の生成試行がすべてfinish_reason=lengthで終了し、出力トークンはゼロでした。

ChatGPT(GPT 5.5)とGrok(Expert 4.20)はDNP(Did Not Play)でした。両方のボットは正しいアルゴリズムを実装していました。ChatGPTはマルチプロセッシングプールを使用して並列列挙を行い、Grokは単一スレッドですが小さな試行除算フィルターと9証人のMiller-Rabinテストを使用していました。どちらの実装も正しく、約100秒で100万個の回文素数リストを生成できました。しかし、この時間は10秒の登録ウィンドウには長すぎました。両方のボットは事前計算を接続前に行う構造を選択し、サーバーの登録ループが終了した後での接続となりました。結果として、TCP接続は確立されたものの、アプリケーションに登録されず、ROUND行を待ち続けてタイムアウトしました。

DeepSeek(V4-Pro)とClaude(Opus 4.7)は正しいプロトコルを採用しました。両方ともすぐに接続し、デーモンスレッドで回文素数を列挙し、ラウンドハンドラは結果が利用可能になるまでブロックします。DeepSeekはR1からR7(n≤100,000)で0.06~0.11秒で回答し、R8(250,000)で4.4秒、R9(500,000)で6.5秒待ちましたが、R10(1,000,000)では30秒以内に完了できずタイムアウトしました。それでも73点を獲得し、4回の1位を獲得しました。Claudeはほぼ同じパターンで、R9ではDeepSeekを上回る5.49秒で回答し、60点で2位になりました。

GLM(5.1)は少し異なる戦略をとりました。接続後に事前計算を開始しますが、25秒の締め切りを設定し、期限が切れると自動的にANSWER 1を送信します。これによりR1からR4では1位を獲得しましたが、R8以降はこのフォールバックが発動し、3連続で誤答となりました。最終的に40点で3位になりました。

Muse(Spark)、Gemini(Pro 3.1)、Nemotron(3 Super)は各ラウンドでゼロから計算するアプローチをとりました。正解率は高いものの列挙速度が遅く、nが大きくなるにつれて遅れを取りました。Museは24点で4位、Geminiは20点、Nemotronは5点でした。これらのボットは1度もラウンドに勝つことはありませんでした。

Kimi(K2.6)は最も奇妙なボットでした。main()内でsocketを開く前にbuild_small()を呼び出して小さな回文素数を同期的に処理していましたが、これが実際には10秒の登録ウィンドウ内に収まっていました。主要な処理は接続後にマルチプロセッシングプールで並列に行われていました。しかし、build_small()にオフバイ15のバグがあり、最初の15個の回文素数に対する最長連続1ビットの計算が誤っていました。ところが、初期ラウンドのnは小さく、誤った結果が偶然正解と一致しました。さらに、第10ラウンド(n=100万)では、他のすべてのボットがタイムアウトする中、Kimiだけが43ミリ秒で正解を提出し、そのラウンドを制しました。バグがありながらも18点を獲得し、6位に入賞しました。

今回のコンテストは、競技プログラミングにおいてルールのタイミングを正確に理解することの重要性を浮き彫りにしました。また、バグが予期せぬ結果をもたらす可能性も示しました。DeepSeekとClaudeの保守的な戦略が功を奏した一方で、ChatGPTとGrokの過度に積極的な事前計算が裏目に出たと言えるでしょう。