Slide 1

Slide 1 text

正解の無い問題を 「できるだけ上⼿く」解く ヒューリスティックで感性を磨こう。 〜現実課題をプログラミングで解きあうコミュニティについて〜 2026-10-30 KomeKaigi 2026 / allegrogiken

Slide 2

Slide 2 text

「競技プログラミング」 知ってる⼈? やったことある⼈? 「ヒューリスティック」わかる⼈?

Slide 3

Slide 3 text

はじめまして allegrogiken (アレグロ技研) From: 北海道苫⼩牧市 所属: 株式会社メンバーズ X: @vvanitter82 ● 雑⾷系エンジニア ● 競プロ (主にAtCoder) 好き ● 技術カンファレンス好き ○ KomeKaigi 2025 も来ました!

Slide 4

Slide 4 text

私の競プロ歴(⾃慢コーナー) 2019年から競技プログラミングを開始して、脳トレ感覚でAtCoderに継続参加中。 ヒューリスティックは最初期からほぼ全参加。コンテスト参加回数ランキング50位以内

Slide 5

Slide 5 text

よくある競プロのイメージ (アルゴリズム) X プログラム 想定出力 出典: 三井住友信託銀⾏プログラミングコンテスト2019 C - 100 to 105 https://atcoder.jp/contests/sumitrust2019/tasks/sumitb2019_c

Slide 6

Slide 6 text

もう1つの競プロ「ヒューリスティック」部⾨ 出典: AtCoder Heuristic Contest 042 - Oni wa Soto, Fuku wa Uchi https://atcoder.jp/contests/ahc042/tasks/ahc042_a

Slide 7

Slide 7 text

こんな感じの問題を「プログラミングで」解いています ロボット掃除機を効率よく動かす クレーンで荷物を正しい順番で運ぶ 公園の管理⼈になって敷地を貸し出す → プログラミング限定ISUCON と⾔うとわかりやすいかも?

Slide 8

Slide 8 text

「ヒューリスティック」とは? ● 「発⾒的」「直感的」「経験的」といった意味合い ● 計算機科学においては以下のような定義 “必ずしも正しい答えを導けるとは限らないが、ある程度のレベルで正解に近い解を得ること ができる⽅法である。発⾒的⼿法では、答えの精度が保証されない代わりに、解答に⾄るまで の時間が短いという特徴がある。「アルゴリズム」に対置する概念である。” ● まともに計算すると 計算量が爆発する ようなシーンで活躍する ○ ● ルート検索、シフトスケジュール作成、⽣産計画、囲碁‧将棋プログラム、などなど‧‧ ルート検索で例えると「1時間かけて完全な最短ルートを作る」代わりに「2秒で精度95%のルートを作る」 出典: https://ja.wikipedia.org/wiki/ヒューリスティック

Slide 9

Slide 9 text

本⽇は競プロの「ヒューリスティック」部⾨に絞って 1. 問題の⾯⽩さ 2. 参加者‧コミュニティ 3. AI と競技の現在 について語ります

Slide 10

Slide 10 text

ヒューリスティック問題を体験できるアプリを⽤意しました!! ぜひプレイしてみてください!(スマホでも遊べま す)https://vvani06.github.io/ahc006mini_komekaigi2026/

Slide 11

Slide 11 text

問題紹介その1 Food Delivery AHC006 / 京セラプログラミングコンテスト 2021-11-14 / 4時間(短期)

Slide 12

Slide 12 text

AHC006「Food Delivery」 2021-11-14 / 4時間(短期) ● フードデリバリーの注⽂ 1,000 件から 50件 の注⽂を選んでルートを作りたい。 ● ピックアップ*50 → お届け*50 といったルート取りも可能 (荷物は無制限に持てる) ● 拠点からスタートして、最後には拠点に戻る ● 合計距離が⼩さいほど⾼スコア 出典: 京セラプログラミングコンテスト - Food Delivery https://atcoder.jp/contests/ahc006/tasks/ahc006_a

Slide 13

Slide 13 text

いわゆる”巡回セールスマン問題”? → 正しいが、はるかに難解なバージョンになっている 「巡回セールスマン問題」は厳密な最適解が得られる問題として知られるが、 2秒程度で動作するアルゴリズムで処理できるのは 注⽂10件 程度。 注⽂50件 では途⽅もない時間がかかってしまうので、最適解は出せない。 さらに「1000件の中から50件を選ぶ」という前提条件もあり⼤変厳しい!

Slide 14

Slide 14 text

プレイ映像 私のプレイ映像 (移動距離 = 5,908) 最上位の映像 (移動距離 = 3,336)

Slide 15

Slide 15 text

どう解くのか? → 簡単な規則で雑にルートを作ってみる 注⽂番号 1~50 を選んで並べただけ

Slide 16

Slide 16 text

雑なルートを改善したい → ランダムに何かを変更してみる ● ピックアップの順番を⼊れ替える ● 配送の順番を⼊れ替える ● 注⽂を⼊れ替える → ⼊れ替えた結果、スコアが伸びたら採⽤ 採⽤

Slide 17

Slide 17 text

こんなので本当に良くなるの? → なります!! これは⽴派な⼿法で「⼭登り法」と⾔われる

Slide 18

Slide 18 text

ここからさらに伸ばすには‧‧? ● ● ● 有効な試⾏が多い⽅がより強い ○ 短い辺よりも⻑い辺の変更を試す⽅が良い ○ 辺の交差を無くすような変更を試すと良い 試⾏の多様性がある⽅が強い ○ 似たような試⾏ばかりだと “局所最適” にハマりがち ○ スコア劣化を許容するのも有効 (焼き鈍し法) 試⾏回数が多い⽅が強い ○ ● 処理を⾼速化する 初期解をもっと賢く構築する ○ 例) ルートが円形になるように選ぶ ⼭登り法のイメージ (AI作)

Slide 19

Slide 19 text

問題紹介その2 Oni wa Soto, Fuku wa Uchi AHC042 / 2025-02-02 / 4時間コンテスト(短期)

Slide 20

Slide 20 text

AHC042 「Oni wa Soto, Fuku wa Uchi」 ● 盤⾯に「⿁」と「福」がいる。 福を残して、全ての⿁を盤外に追い出したい。 ● ● プレイヤーは以下の操作ができる。 ○ ⾏を指定して左右に1マスずらす ○ 列を指定して上下に1マスずらす 操作回数が少ないほど⾼スコア 出典: AtCoder Heuristic Contest 042 - Oni wa Soto, Fuku wa Uchi https://atcoder.jp/contests/ahc042/tasks/ahc042_a 2025-02-02 / 4時間(短期)

Slide 21

Slide 21 text

プレイ映像 私のプレイ映像 (127⼿) 最上位の映像 (71⼿)

Slide 22

Slide 22 text

どう解くのか? ● 典型的なアルゴリズムはおそらく無い ● マニュアルプレイが可能なのでとりあえず遊ぶ ● 強い⽅針を把握し、実装に変換できると良さそう (これがムズイのですが‧‧) マニュアルプレイの様⼦ AHC042 Visualizer: https://img.atcoder.jp/ahc042/cnhLtdRT.html

Slide 23

Slide 23 text

「⼈間ならどう考えてプレイするか?」 採⽤ ● ● ● ⿁が外枠に近いほど 評価値+ ● ⿁が減るほど 評価値+ なるべく⿁をまとめて良い⽅向に動かしたい ● ● +10 最短距離で⿁を盤外に落としたい ⿁が1⾏or列に並んでいるほど 評価値+ +3 福は盤外に落とさないようにしたい ● ⿁を塞ぐ福がいたら 評価値- → こんな感じで盤⾯を評価し、⾼評価の操作を選ぶ「評価値貪欲」 -20

Slide 24

Slide 24 text

「評価値貪欲」の難しさ → 評価値(関数)の設計はちょっとした職⼈芸 ● 雑に評価すると盤⾯がループ‧スタックする ● 「⿁を落とす」優先だとスコアが伸びない ● 「⿁を集める」優先だと不安定‧⿁を落とさない ● 福を退避するスペースが無くて詰む ● 破綻せず、程よく攻めるバランスの良い重み付けをしたい ● 評価項⽬の設計が上⼿い⼈は⾊々な問題で強い ※ ある⿁は外に近づき、ある⿁は遠ざかるケース

Slide 25

Slide 25 text

問題紹介その3 Project Leader HACK TO THE FUTURE 2022 予選 2021-11-03 / 10⽇間(⻑期)

Slide 26

Slide 26 text

HTTF2022予選「Project Leader」 ● タスクが 1,000個 ある ● タスクには依存関係がある ● メンバー 20⼈ に順次タスクを割り当てて 2021-11-03 / 10⽇間(⻑期) なるべく早く全てを完了させたい … A B A C C D … 出典: HACK TO THE FUTURE 2022 予選 - Project Leader https://atcoder.jp/contests/future-contest-2022-qual/tasks/future_contest_2022_qual_a

Slide 27

Slide 27 text

タスクの完了にかかる時間は? ● メンバーは能⼒値、タスクは難易度を持つ ● 能⼒値、難易度はそれぞれ10~20種の技能レベルとして表現される ● 全ての能⼒値が難易度を満たしている時、タスクは確実に1⽇で終わる ● 能⼒不⾜がある場合、不⾜能⼒の総和±0~3 だけ⽇数が伸びる 1⽇で終わる 1⽇で終わる 2~8⽇かかる メンバーの能⼒値 タスクの難易度 13~19⽇かかる

Slide 28

Slide 28 text

タスクの完了にかかる時間は? ● メンバーは能⼒値、タスクは難易度を持つ ● 能⼒値、難易度はそれぞれ10~20種の技能レベルとして表現される ● 全ての能⼒値が難易度を満たしている時、タスクは1⽇で終わる ● 能⼒不⾜がある場合、最も不⾜した能⼒の分だけ⽇数が伸びる ⚠ ただし、メンバーの能⼒値は分からない ⚠ メンバーの能⼒値 タスクの難易度 タスクを処理した結果から推測するしかない 1⽇で終わる 1⽇で終わる 2~8⽇かかる 13~19⽇かかる

Slide 29

Slide 29 text

Project Leader のビジュアライザ 私のプレイ映像 (1091⽇) 最上位は765⽇でクリア

Slide 30

Slide 30 text

コンテスト後の解法共有 〜 現実課題をプログラミングで解きあうコミュニティについて 〜

Slide 31

Slide 31 text

コンテスト終了直後は Twitter (現X) に⼤集合 → コンテストのハッシュタグで⼀⻫に出る ● ビジュアライザ動画の展覧会が開催される ● Twitterスペースで有志の感想戦が開かれることもある

Slide 32

Slide 32 text

公式ライブ放送「AHCラジオ」「解説放送」 → かなり親切な解説コンテンツ ● 作問者が想定する解き⽅を Step by Step で解説してくれることが多く、嬉しい ● ヒューリスティックの問題は「現実課題」を元に制作されていることがあり、 テーマや作問の背景も語ってくれる ● コンテスト優勝者が Youtube Live のコメントに 登場すると盛り上がる 出典: JR⻄⽇本‧ALGO ARTIS プログラミングコンテストAHC064)解説: https://www.youtube.com/live/A3_9MF4nZKY

Slide 33

Slide 33 text

コンテストの「解説」コーナー → ただの参加記録でもOK! ● AtCoderでは問題に対して「ユーザ解説」を載せられるが、 アルゴリズム部⾨では⼀定以上の Rating が必要 ● 対して、ヒューリスティック部⾨では誰でも解説を書ける ● 中⾝の質も深くは問われない ● ○ 取り組んだ内容であればなんでもOK ○ 参加⽇記のブログリンクもOK(私はこれが⼀番好き) 最近は⽣成AIによる「短い動画の参加記録」も増えている 出典: 解説 - RECRUIT ⽇本橋ハーフマラソン 2025冬(AHC043)https://atcoder.jp/contests/ahc043/editorial

Slide 34

Slide 34 text

競プロと⽣成AIの現在

Slide 35

Slide 35 text

コンテスト中に⽣成AIを使っても良い? ● 継続的にルールの改定やアンケートが実施されており、流動的 ● AtCoder短期 (4時間) コンテストでは原則禁⽌に (2026年8⽉~) ● AtCoder⻑期コンテストでは Human Only と With AI の2部⾨に別れることになった (2026年10⽉) ● 「⽣成AIによる考察禁⽌、実装はOK」みたいなルールも検討されていたが‧‧ ● Kaggle など⽣成AIへの制限が緩いコンテストサイトもある

Slide 36

Slide 36 text

競技そのものが⽣成AIに影響を与えている? ● ヒューリスティック問題は⽣成AI研究の優れたベンチマーク環境 (要出典) ● Sakana AI は AtCoder の許可を得てゲスト参戦している ○ このAgentが4時間コンテストで優勝スコアを出して話題になった ■ ● https://sakana.ai/ahc058/ AtCoderの頂上決戦「AtCoder World Tour Final」に OpenAI がゲスト参戦 ○ 2025年は2位 ○ 2026年は1位、圧勝してニュースになった ○ https://news.yahoo.co.jp/expert/articles/dfe51653b675d7e3535fbd47dd76f6f7e33cd76e

Slide 37

Slide 37 text

最後に伝えたいこと

Slide 38

Slide 38 text

ぜひ1度プレイしてみてください → 過去問は ⽣成AI との協業の練習にぴったり! ● 紹介した全ての過去問はいつでも遊べます ● 問題に対して有効なアイデアを知っておくだけでも “感性” は磨かれるはず! ● 本当に⾊々なタイプの問題があります ● ○ ランダムに動く兎‧猫‧⽝‧豚‧⽜を柵で囲って捕まえる ○ 乱雑に置かれた荷物をクレーンで綺麗に並べる ○ 線路と駅を作ってお⾦を稼ぐ ○ ケーキを切り分けて、要求に従って苺を配分する ○ 地図を圧縮する ○ … 問題を眺めたい場合、カタログ的なページ (⾮公式) があり、こちらが便利 ○ https://jetbead.github.io/AtCoderHeuristicContestMemo/ContestMemo/

Slide 39

Slide 39 text

競技もいいけど、勉強してみたい!と⾔う⽅には → ここ数年でいい感じの書籍、出ました!! ● 「ゲームで学ぶ 探索アルゴリズム実践⼊⾨」 ○ 通称 thunder本 ○ 具体例‧実装が充実している ○ コードは C++ ● 「ヒューリスティック探索」 ○ パズルの話が多いかも ○ 座学‧概念の解説が充実している ○ コードは Python

Slide 40

Slide 40 text

「観戦」という楽しみ⽅もあります → 最近AtCoderが⼒を⼊れている「AtCoder 企業対抗リーグ」 ● https://atcoder.jp/contests/atcoder-corporate-league2026 ● ヒューリスティックに強い企業5社を集めて年4回の対抗戦を開催 ● 次回、第3戦 は 11/20 (⾦) ● Youtubeライブ放送で観戦できる ● 提出されるプログラムに対して、AIによる 即席の解説が⾏われたりして⾯⽩い 出典: AtCoder 企業対抗リーグ 2026 第1戦: https://www.youtube.com/live/LzDC8yWyFJA

Slide 41

Slide 41 text

本格的にやってみたい!と思ったそこのあなた ● 超ラッキー! ● HACK TO THE FUTURE 2027 https://atcoder.jp/contests/ahc074 なんと昨⽇から10⽇間の⻑期コンテストが開催中です!! ● 問題は⾯⽩いはずです!!参加費無料!今すぐ参加登録!!! 🌾 開催中コンテストの問題についての⾔及は禁⽌されているので、何を聞かれても答えられません 🌾