アルゴリズムと戯れる元野球少年が手に入れた宝物(1/2 ページ)

Imagine Cup 2008のアルゴリズム部門で世界第3位となった高橋直大氏。彼の軌跡を眺めてみると、わたしたちが忘れてしまったことにすら気づかない何かを思い出させてくれるような気持ちになる。

» 2008年08月02日 07時14分 公開
[西尾泰三,ITmedia]

 人間より早く大量に正しい結果を導くことができるのがコンピュータ。しかし、その価値を最大化するには、効率のよいステップを効率のよいリストで実行させていくことが求められる。それがつまりアルゴリズムである。

 紀元前300年ごろに記された最古のアルゴリズムとして知られる「ユークリッドの互除法」を持ち出すまでもなく、太古から人類はアルゴリズムについて考えを巡らせ続けてきた。そして2008年、Microsoftが主催する技術コンテスト「Imagine Cup」のアルゴリズム部門。1万5394人の学生がしのぎを削った同部門で世界第3位という栄誉を勝ち取った日本人は、まだあどけなさの残る20歳の学生だった。今回はアルゴリズムにのめり込んだ元野球少年、高橋直大氏の物語のその後(以下、敬称略)。

はじまりはいつも無関係の出来事から

高橋直大 Imagine Cupアルゴリズム部門で世界第3位に入賞した高橋直大氏

 高校2年のとき、体を壊し甲子園の夢をあきらめた高橋をImagine Cupへと駆り立てたもの、それは、数学オリンピックなどで知り合った仲間たちの中で「何だか面白いらしい」と評判になっていたHerbertだった。

 Imagine Cupアルゴリズム部門で世界大会に出場するまでには、2つの関門が存在する。最初の関門はウォームアップマッチとして用意されているパズルゲーム「Herbert」。これを通過すると、2つ目の関門であるC#またはVisual BASIC .NETを使用するプログラミング問題が出題される。これらを優秀なスコアで突破した6名が世界大会に挑む権利を得るのだ。狭き門ではあるが、「(世界大会に比べれば)じっくり考える時間も与えられるし、とにかく楽しい。そんな気負うものでもない」と高橋は笑う。

 Herbertを実際にさわってみた高橋は、アイデア次第でどこまでも上を目指せるこのゲームにはまっていった。さらに高橋を喜ばせたのがその賞金。Herbertで1万点以上のスコアを出すと1万円、さらに第2ラウンド進出で2万円という賞金が用意されている。学生にとって3万円は大金。しかも、第2ラウンドではさらに高額の賞金が用意されている。自分が好きなことをやって報酬を得る、そんな魅力に誘われて高橋はふらふらとアルゴリズムの世界に足を踏み入れていった。

 もともとバリバリの野球少年であった高橋。プログラミングの経験はほとんどゼロ。しかし、楽しいという気持ちとほんの少しの賞金はそうした障壁を越えていくのに十分なものだった。彼と彼の友人の多くはゲーム感覚でHerbertを難なくクリアして次のラウンドに進むが、C#でプログラムを組まなければならない点がネックとなって去っていった者も少なくない。しかし高橋はプログラミング歴が浅かったことも幸いし、C#に対する偏見もさほど感じることなくC#を学ぶことができた。

「3位か4位だと思う」と手応えを感じられた24時間の本戦

 世界大会での24時間、高橋を含む6名には全9問の問題が用意された。「12時間くらいですべての問題に当たりをつけ、あとはプログラムを改良していく時間にせよ」――前年のImagine Cupアルゴリズム部門で優勝した人物から贈られたアドバイスに従い、自分がひらめいた戦略をヒューリスティックに評価しながら、どの程度効率がよいものなのかを確かめるという地味な作業にそれぞれが没頭していった。息が詰まりそうなほどの緊張感で満たされた部屋の中で。

 開始当初、キーボードの打鍵音だけが響く部屋で、高橋が持ち込んだ106キーボードはまだその力を発揮していなかった。「周りが問題を理解してキーボードを打ち始めているのに、僕はまだ問題文とにらめっこしていました」。危ぐしていた英語の壁が高橋の前に立ちふさがった。「周りはもうテストケースを投げているのではないか」――そんな焦りがわき上がってくるのを感じていた高橋。しかし、比較的簡単に思えた問題を2つほど見つけられたことは自信につながった。途中、停電などのトラブルに見舞われたことも、高橋に落ち着きを取り戻させたようだ。

 開始から11時間が経過したころ、高橋は9問中8問に当たりをつけることに成功していた。ベーシックアルゴリズムを用いて解くと思われる問題だけは最後まで解くことができなかったが、そこは割り切って、プログラムを改良していく時間に当てた。5秒という制限時間内に値を返すことが求められている問題に、それまでifやfor、sortなど基本的なプログラミング知識だけで勝ち進んできた高橋だが、覚えたばかりのRandomを使用するなど、決戦のさなかでも進化を遂げていた。

 「(自分でチェックした感じでは)3位か4位だと思う」と24時間の競技終了後の疲れもみせずに語る高橋。その言葉通りの現実が彼の下に訪れたのはそれから2日後のことだった。

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ