ここ3年(今年も入れると4年), 毎夏, スーパーコンというイベントのお手伝いをしています. スーパーコンは, 東工大のスーパーコンピュータを使って夏休みに行う高校生・高専生のためのコンテスト --- スーパーコンピューティング・コンテスト[2] ---の略称です.
これまでは,東工大(学術国際情報センター)のみで開催してきましたが, 今年からは, 皆さんもおなじみの コンピュテーション研究会(電子情報通信学会), アルゴリズム研究会(情報処理学会)のご支援を頂くことになりました. そこでこの機会に, 皆様にもご紹介させて頂こうと思います.
スーパーコンは, 東工大の当時の総合情報処理センター (2001 年に学術国際情報センターに改組)に, スーパーコンピュータが導入されたのを契機に 1995 年に始まりました. 何か記念事業を,という議論の中で 「コンピュータが好きな高校生諸君にもスパコンを体験してもらいたい」 という話がでてきたのがきっかけだったそうです. 高校生の中にはプログラミング好きな人たちがいるだろう. 彼ら彼女らが日常, プログラムを作っているパソコンが自家用車だとすれば, スパコン(これはスーパーコンピュータの略,コンテストの方はスーパーコンです), レーシングカーに相当する. そのレーシングカーにふれさせてあげたい, という単純な気持ちが発端でした. 当初はサマースクールなどの講習会も考えられたのですが, 受身ではなく積極的に参加してもらうには「コンテストだ!」ということになり, スーパーコンが企画されたのです.
スーパーコンは, 大体,次のような流れで行われています. (以下は 2004 年の第 10 回大会の日程. 第1 回から,毎年,ほぼこの日程で行われてきている.)
- 参加チーム募集,予選問題配布(6 月 7 日,郵送&ネットで)
↓ メイルで応募・解答を受付- 予選解答の締め切り(6 月 24 日)
- 予選審査,スーパーコン出場チームの決定(6 月 29 日)
↓ 結果公表,コンテスト課題予告- スーパーコン開始:東工大に集合(8 月 2 日)
|講習(2 日午後)
↓プログラム作成(3 日〜6 日)- プログラム審査(8 月 6 日夜)
- 成果発表,審査結果発表,表彰式(8 月 7 日)
スーパーコンへは, 同一高校の高校生 2〜3 名のチームでの応募です (一つの高校から数チーム応募することも可能). 残念ながら会場,スタッフ,旅費補助の関係で, 毎年 10 チーム程度しか東工大に呼ぶことができません. そこで予選を行いスーパーコンへ参加するチームを選ぶのです.
予選では, 比較的簡単な問題に対するプログラムを作成し,メールで解答してもらいます. 解答されたプログラムの性能を中心に, 同時に提出してもらうプログラムの説明書なども吟味して, アルゴリズム設計やプログラミングの基礎能力を評価し, コンテスト出場チームを選びます.
一方, 本選では, ある課題について与えられる 1 つの問題に対し, スパコンの性能を活かしてそれを解くプログラムを約 4 日間かけて作りあげる. 課題とその具体的な問題についての説明が初日に行われ, 評価基準(達成目標や計算時間)が明確に示されます. それ以後, プログラム提出までの 4 日間, 高校生諸君の熱い闘いがはじまるのです.
スーパーコンはプログラミング・コンテストの部類に入りますが, 通常のプログラミング・コンテストとはかなり異なっています. 少しおもしろい点を述べてみましょう.
課題問題にはかなり歯ごたえのあるものが出されます. それ 1 問を高校生が数日間, 必死に取り組むのにふさわしい問題といえるでしょう. テスト型コンテストでは, 出題者は解答を知っているのが普通ですが, スーパーコンでは問題作成者自身も, 正解は何か(どんな解法が最もよいのか)わからない場合もあるのです. したがって, テスト型では「採点」ですが, スーパーコンでは「審査」というべきでしょう. 提出されたプログラムが正しいかを見るのではなく, その性能を評価するのです.
このような形式のため, 単に知識や技術だけではない「何か」が勝敗を決める鍵になることが多々あります. 少々大げさですが, 毎年,何らかの形でドラマが生まれるのです. いろいろなアプローチを試み, 失敗を繰り返しながら見事なプログラムを作成する場合も少なくありません. そのためには気力と体力も必要です.
第 1 回大会のエピソードを紹介しましょう. この大会には, 高校 1 年生からなるチームも参加していました. 彼らは非常に優秀で,プログラミング能力も高く, 初日にプロトタイプのプログラムを完成させ皆の注目を集めていたました. ただし, 彼らのアプローチは甘かった. 簡単な例題を解くことはできても, 審査用に予告している本格的な問題例には歯が立たなかったのです. そこで 2 日目以降は壁にあたってしまい, 最終的にはくじけてしまいました[3].
一方, 優勝したチームの方は, 当初,戸惑っていました(というより途方にくれていたようです). けれども, いろいろなアプローチを試みたあげく, 問題作成者(実は私だったのだが)の手法をはるかに凌ぐアルゴリズムをあみ出し, 見事,優勝したのです. ちなみに, 彼らは高校 3 年生. 本人たちの才能はもちろんだが, 高校生の気力・体力を実感させられた大会でした.
プログラム作成初日には, スパコン用プログラミングの講習や, 場合によっては課題に関する予備講習なども行われます. また, プログラム作成中には, センターのスタッフやチューター(東工大大学院生)からの, プログラムの書き方やデバッグなどについてのアドバイスもあります. このように, 一緒に講義を受け, 演習室でガヤガヤやっていると, 皆が一体で問題に挑戦している,という雰囲気が出てくるのかもしれません.
2 名以上のチームでの参加(第 9 回大会より義務化)も雰囲気作りに役立っています. 共同作業を組む場合でも, 実はチームのメンバーの誰かが暇になっている場合が多いのです. その暇メンバー同士が情報交換を始め, それを契機にチーム同士のつながりが出てくる. そんな仕組みになっているようです.
プログラミングの場である学術国際情報センター 3 階の演習室は, 本選期間中, 午前 8 時から午後 8 時まで利用できます. ただ, 冷房の効いた部屋に閉じこもりっきりでは体に悪いとの配慮から, 毎日,二度ほど「お茶休憩」と称して, 休みを強制的に取らせることにしています. そもそもがプログラミング大好きな連中の集まり. 似た者同士というところもあるのでしょう. 最初はかたいが, 2 日目くらいからはかなり打ち解けています. 課題に関することから趣味のゲームまで, 話題に事欠くことがありません.
黙々とプログラミングしている子もいますが, 自分達の新しいアイデアがうまくいきそうだと, それを自慢したくなる場合も少なくありません. 最初はチューターやスタッフに説明を始める, それを他チームのメンバーが見に来て人が群がる. コンテストも後半もなると, このようにした光景が見られるのです. (もちろん, こうした場合でも詳細までは説明しないし, 他チームのメンバーも深くは聞かない. その点,なぜか「ほどほど」の線を皆,身につけているようですね.)
この課題の選定, そして具体的な問題の設計, これがかなり大変な作業です. 参加者のアルゴリズム設計能力, プログラミング力を考え, おもしろく,かつ,与えられた期間で何とか達成できるよう, 課題の難しさを決めるパラメータを調整するのが難しいのです. 最終的には,委員会で議論する,というよりも, 一人か二人の委員がプログラムをいくつも作って, 難しさを吟味し, パラメータを調整する,というのが毎回の作り方です.
私も,1 回,3 回,9 回,10 回と, 問題作成にたずさわったのですが, いつまでたっても素人プログラマで, 約 1 ヶ月間,ヒィヒィ言ってテストプログラムを走らせています. とくに第 1 回は, 私のプログラムで数分かかった問題を, 優勝プログラムに 4 秒で解かれてしまう,という大恥をさらしました. それ以来, 必ず, 信頼できるプログラマの助けを受けるようにしています {\tt ;-\}}
昨年,第10回を迎え,このあたりで一区切り,という気持ちもありました. でも,参加者の高校生の皆さんから 「来年も(本選に)来ます!」と言われると, そう簡単にやめるわけにはいきません. そこで今年もやります!
最初にも述べたように,今年から, コンプ研,アルゴリズム研の皆様の助けを頂くことになりました. 早速,松井さん(東大)が大変よい課題を出して下さいました. 松井さんが研究しておられるスポーツ・スケジューリングです. たとえば, プロ野球の対戦スケジュールを, 対戦数,ホーム・アウェイの割合などの制約のもと, 移動コスト等をできるだけ少なくするスケジュールを立てるという課題です. 今年も 8 月 1 日 〜 5 日まで東工大で行います.
是非,ご注目ください.
ところで, スーパーコンの 10 年間を記録した 『スーパーコン甲子園』(松田裕幸,渡辺治著,日本評論社)を 6 月に出しました. これまでの課題問題の解説, エピソードの紹介など盛りだくさんです. 毎年の優勝者の写真ものっていますので, 皆さんのお知り合いが出ているかもしれません. 本屋で見かけましたら手にとってみてください.
Back to Table of Contents Last modified: Wed Jul 20 17:08:07 JST 2005 modified/maintained by R.Uehara (uehara@jaist.ac.jp) |