A - Layered Barcode Display 解説
by
hitonanode
With AI 部門の取り組み方について
- GitHub https://github.com/hitonanode/ahc074
- Claude Opus 5.5 によるまとめ https://hitonanode.github.io/ahc074/
解法については With AI 部門の多くの方と共通していると思われるので割愛します。
以下はコンテスト全体の取り組み方に関する(人手の)文章です。
作業の進め方
- 司令塔役の Claude Code Opus 5.5 と人間(私)が主にやり取りしました。
- 司令塔役とは別に具体的な作業を行う worker として、 ChatGPT Web アプリ上の GPT-6 Pro, Codex 上の GPT-6 Astra, Claude Code の Opus 5.5 及び Fable 5.1, Gemini web アプリ上の Gemini 4 Argon を利用しました。GitHub に private repository を作成し、各 worker にこの repository の情報や現状の SOTA 解法のコードなどを(部分的に)見せて、既存の解法に対する改善案や作業の成果を pull request としてまとめさせました。司令塔役の Opus 5.5 は、これらの成果のうち適切なものを取り込んで SOTA 解法の改善を進めました。
- Codex や Claude Code の worker は、司令塔役の Opus 5.5 に直接実行してもらいました。 Web アプリには私が手でプロンプトを貼り付けて与えました。ChatGPT の Web アプリは自ら GitHub に PR を作成できるので私の手間が省けました。
- テンプレートを階段状に配置して最上部で微調整する方針の(AI による)発見後は解法上の特段のブレイクスルーはなく、各種 AI の改善案によって着実にスコアが向上しました。
- 解法の性能評価を正確・効率的に行うようにしました。手元の PC で複数解法の優劣を比較する際は、解法毎に全テストケースを回すのではなくテストケース毎に全解法を回すべきです(PC 上の他のプロセスの負荷の変動やサーマルスロットリング等の影響を軽減するため)。また、同時に作業する複数の AI agent が同時にテストケースを実行するのは評価が狂うため禁止したいです。そこで、テスト実行は特定のスクリプトから実行するようにルール化し、その実装によってこれらのやり方を強制しました。なお手元で回すテストケース数は、初期は 500 個として試行錯誤を高速化し、微小な改善しかできなくなってからは 2000 個に増やしました。
人間(私)の貢献
解法は概ね AI が考えました。私は主に、改善の方向性を定めたり、長期的視点で考えてよろしくなさそうな改善案が目に入れば reject したり、時間があるときには具体的な改善案の指示も多少行いました。例を以下に挙げます:
- 序盤のクエリほど手数がかかっていることに気づいた AI が「予めいくつかの仮想的なクエリを処理した状態を初期状態にする」と言い出したのを発見したので、そもそも初期盤面最適化の目的関数が不適切なのが根本的な原因だからそれを調査して直すように指示しました。
- 「初期盤面の良さは仮想的なクエリでシミュレートした時の手数で分かるがシミュレートに時間がかかりすぎる」という AI の報告に対し、適当に初期盤面の特徴量をとって盤面の評価関数を構築するように依頼しました。結果、線形回帰でほぼ説明できることが明らかになり、解法に採用されました。
- 司令塔役の AI agent に、改善作業を行うにあたって不便な点がないか伺ったところ、解で出力される操作が解釈しにくいなどの要望をいただいたので、 subagent に依頼して対応させました。
雑談・コメント
AI による改善のループを経た高スコアの解法は様々なパラメータのチューニングが施され、多数のモジュールからなる長大なコードになってしまいました。個人的にはこのような解法はいわば “解法空間” における局所解にはまってしまっているような感覚があります。過度の解法の複雑化を避けるため、 ablation study を実施させて効果の見られなくなった処理を削ぎ落としたり、複雑化したモジュール達を単純なモジュールに統合してほしいといった指示を随時実施したりしましたが、スコアとの両立は難しく、今回はあまりうまくいきませんでした。
また今回は特に中盤から終盤にかけて、最上位の解法とは明らかにギャップが存在することが順位表からわかっていたので、手元の解法とは別の解法を探させることも試みました。たとえば、何も解法を見せず手元 SOTA 解のスコアだけ与えてそれを上回る解法を探させる、手元 SOTA 解の解法を説明した文章だけ与える、などは試しましたが、どれもうまくいきませんでした。
利用した AI モデル・サービス
- ChatGPT Pro 200
- ChatGPT Web アプリの GPT-6 Pro や Codex の GPT-6 Astra を主に改善の案出しに使用。
- Claude Max
- Claude Code を使用。主に Opus 5.5 (一部 Fable 5.1)を司令塔役の agent や改善の案出し、実装作業等に使用。
- Gemini Pro
- Web アプリの Gemini 4 Argon を解法の説明文の生成や改善の案出しに少しだけ使用。