chokudaiのブログ

chokudai(高橋直大)のブログです

競技プログラミングと生成AIの今 2025/07/02版

前回の更新から2年半が経過し、競技プログラミング/AtCoderと、生成AIの関係も大きく変わりました。競技プログラミングの伝道師として、ここを誤魔化すのは非常に良くないと考えていますし、出来るだけ客観的な事実を用いて現状を説明したいと思います。

長くて読めない人へのまとめ
  • o1の登場で以前よりとても強くなった。参加者の中でも上位に入るように。
  • Algorithm / Heuristic両部門でそこそこ強い。人類最強には程遠いが、少なくともコンテスト参加者の中央値よりはかなり上。普通の参加者が追いつくのは難しくなった。
  • AtCoderは、OpenAIを世界最高峰の大会に招待し、AI vs 人間を開催する
  • AIがAtCoderを攻略すると、様々な最適化問題を自動で解決できるようになる可能性が高い。そのためAtCoderは、SakanaAIと協力して、AHCのベンチマークを作成した。
  • AtCoderの今後の経営戦略は、これまでと大きく変える必要があり、今のところ何とかそれなりの成果が出ている

 

生成AIの現在の実力

AtCoderには、現在、Algorithm部門とHeuristic部門があります。双方の実力について説明していきたいと思っています。

Algorithm部門

Algorithm部門は、「早く多く問題を解く部門」です。正解が決まっている問題が出題され、これらを早く正確に実装するコンテストです。

  • 例題1(簡単): 整数Nが与えられます。N以下の素数はいくつありますか?
    • 例: N=20が与えられた時、条件を満たすのは2,3,5,7,11,13,17,19なので8こ
  • 例題2(難しい): 整数Nが与えられます。Nの倍数のうち、10進数表記をした時、桁の和が最小となる数の、桁の和は値はいくつになりますか?
    • 例: N=73の時、73×137=10001であり、1+0+0+0+1=2が最小

いずれもN≦200,000で、実行時間制限は2秒を想定しています。

現状の概略

以前の状況とは大きく異なり、o1などの推論モデルが出現したことで、問題を解く能力は飛躍的に上昇しました。今は初級者レベルということはなく、上級者とも戦えるのではないか、というのが一般的な見解です。様々な視点から情報が出ているので紹介していきます。

OpenAIの公式発表

OpenAIは、o3の発表において、参加者の中で、上位0.2%程度の実力を発揮したとしています。

Codeforcesにおける分析

この発表におけるCodeforcesの2700というレートは、有志によるRating converterを使用すると、AtCoderにおいては2628 (橙相当) ということが分かります。

 

LiveCodeBench Proによる反論

LiveCodeBenchによると、現行のCodeforcesベンチマークには問題があり、学習済みでないと思われるデータに絞り性能調査をすると、Codeforces2150程度である、という分析が出ています。これはAtCoderに変換すると1901 (青)相当になります。

LiveCodeBenchの分析
実開発におけるアルゴリズム開発の可否

現状のAIは、「一番可能性が高そうな出力をする」というロジックになっているため、競技プログラミングにおいては、常に答えを出力します。そのため、「間違えているだろうから自分で提出しない」ということはできません。

そのため、競技プログラミングの問題を解く際においては、それで多くの問題を解くことが出来ますが、実際の開発において、適切にアルゴリズムやデータ構造を活用できるかと言われると、かなり性能が落ちる印象です。(感覚でしかないですが、水色程度に感じています。要検証)

このあたりはAIの使い方で改善することはできますが、少なくとも、競プロ上位勢と同様に効率的なコードが実開発においても書ける、という状況には、現状なっていないようです。

まとめ

AtCoderのコンテスト参加者のレーティング分布と、これまで紹介したランク帯を合わせるとこんな感じになります。

AtCoder参加者分布とAIの実力

どこを「今の実力」とするかは難しいですが、共通して言えるのは、

  • 並の参加者よりは十分に強い
  • 人類最強まではかなり差がある

ということは確実に言えるのではないでしょうか?

AtCoderの対応

AtCoderでは、これに対し、AIの使用制限を、コンテストによって分けています。

  • AtCoder Beginner Contest / AtCoder Regular Contestでは禁止
  • AtCoder Grand ContestではAIの無制限利用可

簡単な問題では、問題文を張り付けるだけで答えが出てしまうので、AIありの環境では技術差も出ず、競技として成立しないため、一律禁止とします。(ただしコーディングの補助は許可されています。)

一方、AtCoder Grand Contestでは、AIがそのまま解ける問題は出題されないため、AIをガンガン使用して良い、という状況です。これは今後のAIの進化によって、さらに柔軟に対応する予定です。

 

Heuristic部門

Heuristic部門は、最適解が到底出ないような問題に対し、出来るだけ最適化を試みるようなコンテストです。

例:クレーン5台を操作し、出来るだけ早く所定の順番に荷物を運ぶ問題。

SakanaAIおよびAtCoderの分析

AtCoderでは、SakanaAIと協力し、AHC(AtCoder Heuristic Contest)のAI向けベンチマークを公開し、また、SakanaAIの作成したソルバーであるALE-Agentの作成支援を行いました。

実用的なアルゴリズムエンジニアリングの自動化へ:ALE-BenchおよびALE-Agentの開発

 

生成AIの一発出力における結果は、今のところあまり良い結果ではありません。

一発提出における性能(最初に正解判定が出るまで)

このタイプのコンテストは、悪い成績を取ることによってレーティングが下がらないシステムを採用しているため、途中で参加をやめてしまう事例などもあり、「上位50%」が必ずしも実力の中央値であるとは言えません。そうしたHuman Averageよりも低いパフォーマンスを示しており、かなり悪い結果と言って良いです。

 

AIに計算結果を与え、繰り返し実行すると、かなり結果が変わります。

AIに繰り返し実行させた結果

有力モデルに対し、結果のフィードバックを行い、改善を繰り返し指示すると、以上のように、それなりの成果を出します。o4-mini-high以外の上位モデルはHuman Averageと同程度、o4-mini-highは、上位22.3%と、そこそこの成果が出ているのが分かります。

(Ratingは、コンテストに出場すれば出場するほど有利になる指標であり、AIは全てのコンテストに出ている想定になってしまっているので、Average Perfを参考にしています)

 

ただ繰り返すだけではなく、エンジニアAIのようなものを使ったら、以下のようになります。

AIを用いてAIを利用した結果

OpenHandsのような一般的なエンジニアAIにおいては、あまり良い結果が出ませんでした。(これは繰り返し回数が少なく止まってしまうのが原因だと思われます)

SakanaAIが作成したALE-AgentというAIはかなりの成果を出しており、Average perfで上位6.8%という極めて良い結果を出しています。しかし、指標のshortとlongにおいて、極めて大きな差があり、longはあまり性能が出ていないことが分かります。

 

short/longは、コンテスト開催時間であり、shortは4時間、longは10日間程度となります。その分、問題の複雑性が変わっており、longの方が複雑な問題が出題されています。AIに上手く繰り返し改善させると、シンプルな最適化問題については良い成果が得られやすいが、複雑な問題になると性能がまだ出ていない、ということが分かります。

AtCoderの対応

Heuristicコンテストについては、short部門に限れば、AIで十分な計算資源を使うと、上位が取れる可能性があることが分かりました。そのため、AtCoderでは、AHCの新しいルールを制定し、「APIスクリプト等を用いて、生成AIに多数の出力を自動生成させること」を禁止しました。単純にClaude Codeなどを使う分にはこれに該当しません。

詳細: 

AtCoder Heuristic Contest 生成AI利用ルール - 20250616版 - AtCoderInfo

まとめ

制限時間の短いコンテストにおいて、AIは上位を獲得できますが、長いコンテストにおいては今のところかなり苦戦しています。

実務などの最適化問題はさらに複雑であることが多いため、AIでヒューリスティック最適化を行うのは現状苦しいのではないかと思われます。

 

AIはいつ人間を越えるのか?

OpenAIは、実は2016年から、「競技プログラミングにおいて優勝できるAIを作る」を目標に掲げています。

Special projects | OpenAI

競技プログラミングにおいて、いつAIが人間を越えるのか」は、多くの人が注目する話題であり、AtCoderとしては、その瞬間をきちんとわかるようにしたい、という思いがあります。

そこで、AtCoderでは、AtCoderが世界上位12人を招待するAtCoder World Tour FinalsにOpenAIを招待し、エキシビジョンとして、人間と同じ問題をAIに解いてもらうことにしました!

 

prtimes.jp

 

現時点の情報において、AIが人間に勝つようには到底見えません。ですが、毎年続けることで、いずれAIが人間を負かす未来が来ると思っています。僕は5年後の予想ですが、近年のAIへの投資状況を見ると、もっと早いかもしれません。

AtCoderは逃げません。きちんとAIとの対決の場を毎年用意し、「人間とAIのどちらが強いのか」が明確にわかる環境を作ります。

(AI会社さんの方に断られちゃったら実現しないこともあるので、その時はご了承ください……。)

 

AtCoderは、競技プログラミングをesportsのように楽しんでもらうことに挑戦しており、これまで「企業対抗Team Battle」という形で、Youtubeで配信してきました。OpenAIとのエキシビジョンマッチも、このような形で配信するつもりでいます。興味がある方は、ぜひ配信をご覧ください!

こちらが企業対抗Team Battleの動画になります。

www.youtube.com

 

AIがAtCoderを攻略すると?

AIがAtCoderを攻略すると何が嬉しいのか。様々な事が改善されると思いますが、最も分かりやすいのは、世の中に存在する様々な最適化問題が解決できることです。

会社のニュースの半分以上がAtCoderで埋まっている、「ALGO ARTIS」って変な会社があります。この会社のアルゴリズムエンジニアは全員AtCoder出身らしいので、そちらの会社の事例をいくつか紹介します。

ALGO ARTISの最新ニュース

事例紹介 | ALGO ARTIS

事例紹介ページによると、大体こんな感じです。

  • コスモ石油の内航船の配船計画の自動作成
    • 業務効率が20%改善、燃料消費量5%の削減
  •  関西電力における燃料運用計画最適化ソリューションを開発
    • 運用コストの低減および計画策定時間の短縮
  • 日本触媒における生産計画の自動作成
    • 切り替え回数の削減や在庫不足の抑制・計画作成時間の短縮

このように、様々な業種において、スケジューリングや生産計画などが存在し、これらを効率化することで、経費や作業時間の削減をすることが出来ます。

現状のAIには、こうした開発を行うことは難しいですが、ALE-Benchが活用され、Heuristic部門でAIが人間に迫るようになれば、こうした問題解決にもかなり繋がるのではないか、と考えています。

 

AtCoderの経営について

弊社はプログラミングコンテスト開催を生業とする企業です。AIに競技プログラミングが出来てしまうと、売上がなくなってしまうのではないか?と心配する人はそれなりにいると思います。

ここからはどうしてもポジショントークっぽくなってしまうので、先に数字だけ出しておきますと、AtCoder13期目の決算(2025/05)における純利益は、創業以来初めての1億円越えであり、一応現時点での経営状態は良いです。ですが、14期目に同様な利益を上げられるとは思っておらず、15期目に向けて投資を重視しようかと考えている状態です。

 

競技プログラミングの採用における価値について

AtCoderのメインとする事業はコンテスト開催であり、その主催をしてくれる企業がいることで、AtCoderの経営は成り立っています。AtCoderとして販売しているのは、

  • 参加者が毎週10000人オーバーと非常に多いAtCoder Beginner Contest
  • 参加者1000人程度だが最適化を競い合うAtCoder Heuristic Contest

の2種類のコンテストが主戦力となっています。

AtCoder Heuristic Contestの開催企業を見てみましょう。

AtCoder Heuristic Contestの開催企業

先ほど紹介したALGO ARTISの他にも、最適化事業を行うMC Digital(三菱商事の子会社)や、FUTURE、Asprova、THIRD、トヨタ自動車や、検索などにおいて高速な計算能力が求められるリクルートなど、極めて最適化/高速化に近いジャンルの企業が並んでいます。

 

一方、AtCoder Beginner Contestはどうでしょう?

AtCoder Beginner Contestの開催企業

こちらは、少し意外な企業が並んでいるのかな?と思います。パナソニックオムロンなどの製造業、鹿島建設なんかはすごく意外だと思います。

 

これらは、各企業が何を求めてコンテストを開催しているかによって差が出ています。

  • Heuristicコンテストを開催したい企業
    • 最適化や高速化におけるトップクラスの人材が欲しい
  • Beginnerコンテストを開催したい企業
    • 会社がIT人材を求めていることをとにかく知ってほしい
    • 最適化などの余地があることも知ってほしい

これらの需要がなくなるか?と言われると、今すぐはなくならないのではないか、というのが、現時点の僕の見解です。最適化/高速化が今のところまだAIは人間に及ばない事は示した通りなので、Heuristic部門の需要は変わらず、広報ツールとしてBeginnerコンテストを利用している企業は、そもそも競技プログラミングにおいて優秀だから採用している、というわけでは必ずしもないため(もちろん参考にはしている)、変わらず主催をしてくれる、というわけです。

ただ、これもあくまで「現時点では」の話です。そもそもITエンジニア自体がいらなくなる、みたいな事態になると、このモデルは続かず、次のビジネスモデルを探す必要があると考えています。

 

次にやること

次のビジネスモデルは様々なものが考えられ、既に種を蒔いているものも多くあるのですが、大半のものはおそらくやらないことになりそうであり、また、既に売上の上がっているものは発信の仕方を工夫したいと考えているものであったりするので、いったんここでは記載しないでおこうと思っています。

最後に

凄く正直な話、思ったよりAIの進化が早く、僕が抜かれるのも時間の問題かな、と思ってます。でもAIを使ってみると、まだまだ全然ダメなところがあり、どうなるかはまだまだわからないです。

AtCoderは、プログラミングコンテスト開催を主軸に、13年経営を続けてきました。実はビジネスモデルはその間に変わり続けており、また新しいモデルを考えないといけないかな、という段階に来ています。

今後も競技プログラミング文化を守り、発展させるために、全力を尽くしていきたいと思っています。今後ともAtCoderをよろしくお願いします!