スーパーコン ---プログラミング大好き高校生の熱い闘い---[1]

渡辺 治
東京工業大学 情報理工 数理・計算科学専攻

ここ3年(今年も入れると4年), 毎夏, スーパーコンというイベントのお手伝いをしています. スーパーコンは, 東工大のスーパーコンピュータを使って夏休みに行う高校生・高専生のためのコンテスト --- スーパーコンピューティング・コンテスト[2] ---の略称です.

これまでは,東工大(学術国際情報センター)のみで開催してきましたが, 今年からは, 皆さんもおなじみの コンピュテーション研究会(電子情報通信学会), アルゴリズム研究会(情報処理学会)のご支援を頂くことになりました. そこでこの機会に, 皆様にもご紹介させて頂こうと思います.

スーパーコンって?

スーパーコンは, 東工大の当時の総合情報処理センター (2001 年に学術国際情報センターに改組)に, スーパーコンピュータが導入されたのを契機に 1995 年に始まりました. 何か記念事業を,という議論の中で 「コンピュータが好きな高校生諸君にもスパコンを体験してもらいたい」 という話がでてきたのがきっかけだったそうです. 高校生の中にはプログラミング好きな人たちがいるだろう. 彼ら彼女らが日常, プログラムを作っているパソコンが自家用車だとすれば, スパコン(これはスーパーコンピュータの略,コンテストの方はスーパーコンです), レーシングカーに相当する. そのレーシングカーにふれさせてあげたい, という単純な気持ちが発端でした. 当初はサマースクールなどの講習会も考えられたのですが, 受身ではなく積極的に参加してもらうには「コンテストだ!」ということになり, スーパーコンが企画されたのです.

スーパーコンは, 大体,次のような流れで行われています. (以下は 2004 年の第 10 回大会の日程. 第1 回から,毎年,ほぼこの日程で行われてきている.)

スーパーコンへは, 同一高校の高校生 2〜3 名のチームでの応募です (一つの高校から数チーム応募することも可能). 残念ながら会場,スタッフ,旅費補助の関係で, 毎年 10 チーム程度しか東工大に呼ぶことができません. そこで予選を行いスーパーコンへ参加するチームを選ぶのです.

予選では, 比較的簡単な問題に対するプログラムを作成し,メールで解答してもらいます. 解答されたプログラムの性能を中心に, 同時に提出してもらうプログラムの説明書なども吟味して, アルゴリズム設計やプログラミングの基礎能力を評価し, コンテスト出場チームを選びます.

一方, 本選では, ある課題について与えられる 1 つの問題に対し, スパコンの性能を活かしてそれを解くプログラムを約 4 日間かけて作りあげる. 課題とその具体的な問題についての説明が初日に行われ, 評価基準(達成目標や計算時間)が明確に示されます. それ以後, プログラム提出までの 4 日間, 高校生諸君の熱い闘いがはじまるのです.

スーパーコンの特徴

スーパーコンはプログラミング・コンテストの部類に入りますが, 通常のプログラミング・コンテストとはかなり異なっています. 少しおもしろい点を述べてみましょう.

特徴その1: 課題解決型コンテスト
通常のプログラミング・コンテスト, あるいは先輩格の国際情報オリンピックは, テスト(筆記試験)型のコンテストです. つまり, 決められた時間に筆記試験のようなテストを行い, 審判団が採点し, その得点を競う, という形式です. それに対し,スーパーコンでは, 課題問題が 1 問だけ与えられ, それに対し, 数日間かけて取り組む形のコンテストです.

課題問題にはかなり歯ごたえのあるものが出されます. それ 1 問を高校生が数日間, 必死に取り組むのにふさわしい問題といえるでしょう. テスト型コンテストでは, 出題者は解答を知っているのが普通ですが, スーパーコンでは問題作成者自身も, 正解は何か(どんな解法が最もよいのか)わからない場合もあるのです. したがって, テスト型では「採点」ですが, スーパーコンでは「審査」というべきでしょう. 提出されたプログラムが正しいかを見るのではなく, その性能を評価するのです.

このような形式のため, 単に知識や技術だけではない「何か」が勝敗を決める鍵になることが多々あります. 少々大げさですが, 毎年,何らかの形でドラマが生まれるのです. いろいろなアプローチを試み, 失敗を繰り返しながら見事なプログラムを作成する場合も少なくありません. そのためには気力と体力も必要です.

第 1 回大会のエピソードを紹介しましょう. この大会には, 高校 1 年生からなるチームも参加していました. 彼らは非常に優秀で,プログラミング能力も高く, 初日にプロトタイプのプログラムを完成させ皆の注目を集めていたました. ただし, 彼らのアプローチは甘かった. 簡単な例題を解くことはできても, 審査用に予告している本格的な問題例には歯が立たなかったのです. そこで 2 日目以降は壁にあたってしまい, 最終的にはくじけてしまいました[3]

一方, 優勝したチームの方は, 当初,戸惑っていました(というより途方にくれていたようです). けれども, いろいろなアプローチを試みたあげく, 問題作成者(実は私だったのだが)の手法をはるかに凌ぐアルゴリズムをあみ出し, 見事,優勝したのです. ちなみに, 彼らは高校 3 年生. 本人たちの才能はもちろんだが, 高校生の気力・体力を実感させられた大会でした.

特徴その2: 参加者の中に生まれる不思議な一体感
課題解決型コンテストのためか, コンテスト参加者の間には 「同じ問題に挑戦している」という不思議な一体感が生じます. もちろん, 他チームは競争相手でライバルなのですが...

プログラム作成初日には, スパコン用プログラミングの講習や, 場合によっては課題に関する予備講習なども行われます. また, プログラム作成中には, センターのスタッフやチューター(東工大大学院生)からの, プログラムの書き方やデバッグなどについてのアドバイスもあります. このように, 一緒に講義を受け, 演習室でガヤガヤやっていると, 皆が一体で問題に挑戦している,という雰囲気が出てくるのかもしれません.

2 名以上のチームでの参加(第 9 回大会より義務化)も雰囲気作りに役立っています. 共同作業を組む場合でも, 実はチームのメンバーの誰かが暇になっている場合が多いのです. その暇メンバー同士が情報交換を始め, それを契機にチーム同士のつながりが出てくる. そんな仕組みになっているようです.

プログラミングの場である学術国際情報センター 3 階の演習室は, 本選期間中, 午前 8 時から午後 8 時まで利用できます. ただ, 冷房の効いた部屋に閉じこもりっきりでは体に悪いとの配慮から, 毎日,二度ほど「お茶休憩」と称して, 休みを強制的に取らせることにしています. そもそもがプログラミング大好きな連中の集まり. 似た者同士というところもあるのでしょう. 最初はかたいが, 2 日目くらいからはかなり打ち解けています. 課題に関することから趣味のゲームまで, 話題に事欠くことがありません.

黙々とプログラミングしている子もいますが, 自分達の新しいアイデアがうまくいきそうだと, それを自慢したくなる場合も少なくありません. 最初はチューターやスタッフに説明を始める, それを他チームのメンバーが見に来て人が群がる. コンテストも後半もなると, このようにした光景が見られるのです. (もちろん, こうした場合でも詳細までは説明しないし, 他チームのメンバーも深くは聞かない. その点,なぜか「ほどほど」の線を皆,身につけているようですね.)

特徴その3: 吟味された課題
これはかなり手前味噌の話だが, 課題問題がよく吟味されておもしろい, というのも重要な特色の一つといってよいでしょう. ネタはいろいろなところからもらってきます. 東工大内でスパコンを活用している研究者にアイデアを出してもらう場合もあります.

この課題の選定, そして具体的な問題の設計, これがかなり大変な作業です. 参加者のアルゴリズム設計能力, プログラミング力を考え, おもしろく,かつ,与えられた期間で何とか達成できるよう, 課題の難しさを決めるパラメータを調整するのが難しいのです. 最終的には,委員会で議論する,というよりも, 一人か二人の委員がプログラムをいくつも作って, 難しさを吟味し, パラメータを調整する,というのが毎回の作り方です.

私も,1 回,3 回,9 回,10 回と, 問題作成にたずさわったのですが, いつまでたっても素人プログラマで, 約 1 ヶ月間,ヒィヒィ言ってテストプログラムを走らせています. とくに第 1 回は, 私のプログラムで数分かかった問題を, 優勝プログラムに 4 秒で解かれてしまう,という大恥をさらしました. それ以来, 必ず, 信頼できるプログラマの助けを受けるようにしています {\tt ;-\}}

今年もやります!!

昨年,第10回を迎え,このあたりで一区切り,という気持ちもありました. でも,参加者の高校生の皆さんから 「来年も(本選に)来ます!」と言われると, そう簡単にやめるわけにはいきません. そこで今年もやります!

最初にも述べたように,今年から, コンプ研,アルゴリズム研の皆様の助けを頂くことになりました. 早速,松井さん(東大)が大変よい課題を出して下さいました. 松井さんが研究しておられるスポーツ・スケジューリングです. たとえば, プロ野球の対戦スケジュールを, 対戦数,ホーム・アウェイの割合などの制約のもと, 移動コスト等をできるだけ少なくするスケジュールを立てるという課題です. 今年も 8 月 1 日 〜 5 日まで東工大で行います.

http://www.gsic.titech.ac.jp/supercon/supercon2005/

是非,ご注目ください.

ところで, スーパーコンの 10 年間を記録した 『スーパーコン甲子園』(松田裕幸,渡辺治著,日本評論社)を 6 月に出しました. これまでの課題問題の解説, エピソードの紹介など盛りだくさんです. 毎年の優勝者の写真ものっていますので, 皆さんのお知り合いが出ているかもしれません. 本屋で見かけましたら手にとってみてください.


脚注

  1. この原稿を書き終わった後, ほっと一息ついて昔 LA 会誌に書いた自分の原稿ファイルを見ていたら, なんと 1995 年にスーパーコン(第1回)について書いていました. そのときの記事と重複するところもあるのですが時効ということでご勘弁を.
  2. 昨年まではスーパーコンピューター・コンテストでしたが, 今年は心機一転, スーパーコンピューティング・コンテストとなりました. でも,略称は「スーパーコン」で変わりません.
  3. 彼らは次年度の大会にも参加し,見事入賞をはたしています.

Back to Table of Contents
Last modified: Wed Jul 20 17:08:07 JST 2005
modified/maintained by R.Uehara (uehara@jaist.ac.jp)
Valid HTML 4.0!