連載 :
  インタビュー

手に汗握る高校生アスリートの戦い。日本最大の高校eスポーツの祭典「STAGE:0」で競技プログラミング 高校生大会を初開催、大会優勝者&主催者インタビュー

2021年9月28日(火)
望月 香里(もちづき・かおり)

AtCoder高橋さんによる
本大会の問題解説

前項で高橋さんが「ソースコードを読みながら、リアルタイムで観戦していた」と語ってくれたが、ここで、高橋さんの記した観戦記から、本大会の出題形式であるヒューリスティック形式と本大会の問題の解説、実際の大会の様子を抜粋して掲載する。

【ストーリー】
高橋市警では警察官の人手不足解消のために、自動運転の無人パトカーによる自動パトロールが実施されることになった。 無人パトカーには屋根の上に高性能な全方位カメラが取り付けられており、現在位置からの直線上にある道路全体を一度に見渡すことが出来、画像処理技術を用いて異変が無いかを自動検出する。市民の安全で安心な暮らしを守るため、市内の隅から隅まで少なくとも一度は見渡すことが出来るような巡回ルートを設定したい。 そのような巡回ルートの中で出来るだけ短いものを求めてほしい。

【問題概要】
N×N(Nは60くらい)の地図が与えられる。上下左右に視界が通る。スタート地点から上下左右に移動し、全ての地点を見て返ってくるルートのうち、出来るだけ短いものを求める(各マスの数字はそのマスに移動するためにかかる時間)。

開始10分に提出のあった全ての参加者が同スコアを提出。その後、今いるマスから、最も近いものを選ぶことを繰り返す「貪欲法」と、最短経路を求めるアルゴリズム「ダイクストラ法」の合わせ技による改善で77分、渋渋(渋谷教育学園幕張高等学校)チームが15,928,627点までスコアを伸ばした。「絶対に通るマス」を最初にいくつか決め、見えていないマスの数が最も減るよう、マスを1つずつ選ぶ。これを繰り返し、数十個のマスを通るだけで、全ての道路が視界に収まるようにする。

なお、全てのマスを見ることが出来ない巡回ルートでも、見えたマス数の分だけ点数が貰えるが、全てのマスを見るルートよりも当然点数が低い。

【問題の概要補足】
この問題は「巡回セールスマン問題」と呼ばれる問題に近い性質を持つ問題である。

巡回セールスマン問題とは「全ての都市をちょうど一度ずつ巡り出発地に戻る巡回路のうちで、移動時間が最も短くなる巡回路を求める」という問題であり、これは非常に難しいことが知られている。今回の問題は、その問題を発展させたものである。巡回セールスマン問題においては「どの都市にたどり着くべきか」ということが決まっている。だが、今回は「全てのマスを通る」ではなく「全てのマスが視界に入る」というのが条件であるため、各マスの条件を満たすために通るべきマスが必ずしも1つではない。そのため「どのマスを通り、どのマスを通らないか」という選択が生まれる分、巡回セールスマン問題よりも複雑な問題であると言える。この問題に4時間で取り組む必要がある。

【観戦記】

開始10分に提出のあった全ての参加者が同スコアを提出。その後、今いるマスから、最も近いものを選ぶことを繰り返す「貪欲法」と、最短経路を求めるアルゴリズム「ダイクストラ法」の合わせ技による改善で、77分、渋々チームが15,928,627点までスコアを伸ばした。

「絶対に通るマス」を最初にいくつか決め、見えていないマスの数が最も減るよう、マスを1つずつ選ぶ。これを繰り返し、数十個のマスを通るだけで、全ての道路が視界に収まるようにする。

次に、それらのマスについて、訪れる順番を決めていく。巡回セールスマン問題は、2-optと呼ばれる改善方法を繰り返すことで、最適解にかなり近づくことが出来ることが知られていて、灘高チームもこの2-optを採用していた。渋渋チームと同様、距離を求める際にはダイクストラ法を使っている。

開始150分、Nachiaさんの最初の提出で、一気に1位が入れ替わる。提出コードは444行と、他チームより倍以上長い。最初からこのコードを書き始めていたようだ。基本的には灘高チームと同じ方針のようだが、絶対に通るマスを選ぶ際、交差点のみを考慮して選んでいることや、巡回路を求める2-optを使う際、焼きなまし法と呼ばれる高度なアルゴリズムを利用している。これらの差が、結果的に大きな要因になったと思われる。

残り25分。上位3チームが1,800万点台で並ぶ中、ついにNachiaさん(Perisitence)が2000万点に到達した。絶対に選ぶマスの選び方にランダム要素を入れ、何度も実行するように変更したようだ。

最後の10分、凄まじい勢いで結果が入れ替わった。そして、最終結果はこちら。

今回のポイントは「初めに重要な交差点を列挙し、次にその交差点までの辿り方を探索するという、2段階に分けて考える」ことだった。優勝した両者とも、ヒューリスティック問題を解く経験は少なく、問題の着眼点が的を得ていたことが勝因となったという点で共通していた。また、4時間という制限時間は短く感じ、通常の高得点を取る問題よりもヒューリスティック問題は難しかったとも語った。

* * *

高橋さんによると、ヒューリスティック形式は日本人が強い傾向にあり、日本人がITで活躍するならばこの分野ではないかという。

今回のように、高校生が活躍する場の認知が広がり、競技プログラミング人口が増えることは、日本、はたまた世界の未来にも繋がっているのではないかと感じた。未経験のあなたも、ぜひ挑戦してみてはいかがだろうか。

著者
望月 香里(もちづき・かおり)
元保育士。現ベビーシッターとライターのフリーランス。ものごとの始まり・きっかけを聞くのが好き。今は、当たり前のようで当たり前でない日常、暮らしに興味がある。
ブログ:https://note.com/zucchini_232

連載バックナンバー

運用・管理インタビュー

本当に役立つプロダクト開発を目指し、ユーザーとなる社内の営業に向き合う

2024/11/13
15分という限られた時間で印象を残すには? KDDIアジャイル開発センターの、アジャイルな営業ツール開発とは
設計/手法/テストインタビュー

現場の声から生まれた国産テスト自動化ツール「ATgo」が切り開く、生成AIを駆使した次世代テスト自動化の最前線

2024/11/6
六元素情報システム株式会社のテスト自動化ツール「ATgo」概要と開発の背景、今後のロードマップについて、同社の石 則春氏と角田 聡志氏に聞いた。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています