競技プログラミング
| 分野 | ・・ |
|---|---|
| 競技形態 | 入出力制約付きの課題を、所定時間内に実装し通過させる |
| 主な評価指標 | 正答性、実行時間、メモリ使用量、提出回数 |
| 成立時期(とされる) | 1950年代後半(行政最適化訓練からの派生) |
| 主催組織(慣例) | 国内ではや民間研究会、国際では合意形成型の運営委員会 |
| 象徴的イベント | 年次の「全国最短実装選手権」など |
(きょうぎぷろぐらみんぐ)は、制限時間と規則の下でアルゴリズムを競う系の競技として知られている。起源は、戦後の行政効率化を目的に一部の技術職が考案した「最適化訓練」にさかのぼるとされる[1]。
概要[編集]
は、与えられた問題文をプログラムに翻訳し、定められたテスト群に対して正しく出力することを目標とする競技である。一般に、参加者は「入力を読み、条件に従って計算し、出力を行う」過程を、決められた制約(時間・メモリ・提出回数)内で完結させることが求められる。
競技の実務では、単に動くコードの提出が評価されるだけでなく、同一問題でも複数の解法(例:探索、動的計画法、グラフアルゴリズム)が選択されうる点が重視される。なお、規則文書に「計算量の自己申告」欄が設けられるケースも多く、参加者が自分の計算量を申請し、審査側が実測と照合する制度が採用されてきたとされる[2]。
歴史[編集]
行政最適化訓練からの派生[編集]
競技プログラミングが生まれた経緯として、もっとも知られているのは系の夜間研修に端を発するという説である。1958年、の旧庁舎内で「遅延計算を誰が最速で書けるか」という半ば冗談めいた課題が出され、翌年には研修の成果を可視化するために、模擬入出力カードを用いた「最短実装演習」が開始されたとされる[3]。
この演習では、参加者の提出物を大型計算機で実行し、結果が正しいかどうかに加え、「計算途中での中断がないか」を記録する仕組みが作られた。特に、1959年度の監査記録には「総入力件数 12,960、模擬検査 3,072、平均処理 0.84秒」という細かな数値が残っていると報告されている[4]。同年度、演習担当の技官は「勝つ者は速いだけでなく、壊れない形で速い」とのメモを残し、以後の規則の語彙になったとされる。
さらに、研修の成果報告書は一度だけ誤って一般公開され、街の学習塾が「同じ問題を自分で解けば成績が上がる」と誤読したことが発展の契機になったとされる。結果として、行政訓練の枠外で「競技としての模擬テスト」が広まり、大学サークルへと橋渡しされたのである。
テスト生成の秘伝と会場設計[編集]
1960年代後半、競技プログラミングの性格を決定づけたのが、テストケース生成の「秘伝化」であった。初期の課題では主催者が手作りした固定テストが中心だったが、正答率が読みやすくなる問題が増え、そこでの内部研究会「演算検査設計研究会」(通称:演検研)が動き出したとされる[5]。
演検研は、テストを“公平に見せる”ために「最悪ケースを必ず含める」方針を採用し、各問題につき「ランダム種 30、変調パラメータ 7、隠し境界 2」を組み合わせたと報告されている[6]。この方式は、参加者にとってはブラックボックスであるべきだが、運営にとっては説明可能であるべきだという矛盾を、規則文書の脚注で吸収する形で運用された。
また会場設計にも特徴があった。たとえば1973年の「全国最短実装選手権」では、参加者の席順を出身校ではなく“キーボードの癖”に基づいて割り当てると決められ、結果として隣席同士の推測が減ったとされる。ただし、当時の新聞記事ではこの配置理由が「癖のある人ほど競争心が湧くため」と誤って要約され、会場設計が都市伝説化したという[7]。
国際化と「自己申告」の摩耗[編集]
1980年代に入ると、大学間の交流や企業研修の派生によって競技が拡散し、1987年には運営方式の標準化会議がの会議室で開かれたとされる。議題は主に、提出回数によるペナルティと、計算量の自己申告の扱いであった。
ここで導入されたのが「自己申告は救済であり、免罪符ではない」という理念で、計算量の自己申告と実測が一致しない場合、解法は“間違い”とされず“改善余地”として扱われることになった。しかし皮肉にも、参加者が申告の“うまさ”を鍛える方向に進み、審査側の側でも自己申告欄が肥大化したとされる[8]。
結果、1990年代の一部大会では、提出前に計算量を紙に書いて申請する運用が残り、最終的に用紙の裏が会場で最も高価な資源になったという。たしかに競技プログラミングはコードを競うが、同時に“説明の文章”も競う場となっていったのである。
競技の仕組みと用語[編集]
競技プログラミングでは、典型的に入力と出力の仕様が与えられ、参加者はプログラムを実行してテストに合格することを目指す。評価は正答性が第一であり、ついで実行時間やメモリ使用量、提出のタイミングが考慮される場合が多い。
運営上よく見られる用語として、、、などが挙げられる。これらは本来、判定系の短縮記号であるが、競技文化の中では“速度の忠誠”を示す儀礼として扱われることがある。たとえば1994年の地方予選では、TLEが出た直後に参加者が黙って水を飲む慣習が記録され、運営がそれを「問題との対話」として説明したため、記録係が笑いを堪えたという証言が残っている[9]。
また、自己申告制度が残る大会では、解法がの観点から説明される。ここで“申告が正しいか”よりも、“申告が読めるか”が重視される傾向があり、文章表現が得点に間接的に影響したとする指摘もある。なお、この影響の程度を示す非公式統計として「申告文の字数が平均 143.2±31.7字の年にAC率が+4.6%だった」という数字が流通したが、出典が特定されていない[10]。
社会への影響[編集]
競技プログラミングは、単なる趣味や学習手段を超えて、就職・教育・研究の接点に入り込んだとされる。とくに日本では、企業の採用面談に“最悪ケース耐性”を示す短いコーディング課題が導入され、一次選考が「解答スピード」ではなく「壊れにくさ」の観点へ移っていったと説明される[11]。
教育面では、競技を通じてやなどの概念が、教科書順ではなく問題文順に学ばれるようになった。結果として学習が“受験のための暗記”から“設計のための反復”へと寄ったとされる。一方で、競技の成功体験が強すぎると「解けない問題=才能がない」と誤認する層が生まれたという指摘もある。
社会の側では、競技プログラミングが“最短で良い解法を出す文化”を強め、ソフトウェア開発の議論が短時間のデモに偏るという副作用があったとされる。企業の技術会議で「このケースでTLEしない?」が合意形成の決め台詞になった年もあり、1999年のの技術特番では“速さの礼賛”が特集された[12]。ただし番組内で紹介された「実務では遅くてもいい」の注意書きが字幕では省略され、逆に誤解が広がったとされる。
批判と論争[編集]
競技プログラミングには、いくつかの批判がある。第一に、判定がテスト依存であるため、選手の実力が“テストに適応した形”に偏る可能性が指摘されている。特にテスト生成の詳細が秘伝化された大会ほど、参加者が解法設計ではなくテスト傾向の推理に時間を使いがちになるという[13]。
第二に、自己申告制度や説明重視の運用が、能力の本体と無関係な要素を持ち込むという論争がある。運営の説明によれば文章は“再現性”のために必要とされるが、一部では「説明がうまい人が勝つ」状況が生じたとされる。なお、2006年の内規改定案には「字数が多い申告は保守的と見なす」という文言が入っていたと伝えられるが、会議録の当該箇所が焼失している[14]。
第三に、競技プログラミングが“最適化信仰”を強めるという問題がある。ある評論家は「競技では速いことが正義になりやすい」と述べたとされるが、この発言は逆に“速さを否定する誤解”として引用され、論争が空転したとも報じられている[15]。
脚注[編集]
関連項目[編集]
脚注
- ^ 渡辺精一郎「最短実装演習の監査記録に見る自己申告の萌芽」『情報処理研修年報』第12巻第3号, pp.14-27, 1960.
- ^ 田中咲良「入出力仕様の記述様式と誤読率:競技運営の実務から」『コンピュータ教育研究』Vol.8 No.2, pp.33-41, 1982.
- ^ Ruth E. Livingston「Administrative Optimization and the Birth of Competitive Coding」『Journal of Systems Analysis』Vol.5 No.1, pp.1-19, 1974.
- ^ 佐伯武志「演検研方式に基づくテスト生成の再現性」『計算機科学研究論文集』第21巻第1号, pp.77-96, 1969.
- ^ 内田美咲「会場設計はなぜ文化になるのか:座席配置と推測コスト」『大会運営学紀要』第4巻第2号, pp.51-63, 1979.
- ^ M. A. Thornton「Fairness Models for Hidden Test Sets」『ACM SIGPROCEEDINGS』第9巻第2号, pp.210-228, 1991.
- ^ 山口和泉「速さの礼賛とその副作用:競技プログラミング論」『社会技術評論』Vol.17 No.4, pp.5-24, 2003.
- ^ 津島頼之「自己申告欄の肥大化と運営コスト」『ソフトウェア開発会議録』第33巻第1号, pp.91-105, 2006.
- ^ 川添啓太「全国最短実装選手権の成立過程」『計算機史の断片』第2巻第6号, pp.201-219, 1988.
- ^ K. Dubois「On the Psychological Gravity of TLE」『International Review of Competitive Computing』Vol.2 No.3, pp.77-89, 1998.
外部リンク
- 最短実装選手権アーカイブ
- 演算検査設計研究会・内部資料室
- 自己申告文書サンプル集
- テスト生成ガイド(非公式)
- 競技会場設計まとめ