鴨研究室

鴨研究室
ACM/ICPC の誤答の分析
理学部 情報科学科 鴨研究室 4回生 08251887 谷口 真穂
1 研究背景と目的
審判団の提示する入力データを各プログラ
ムに実行させ、正解と比べる作業も行った。
ACM/ICPC で得られた誤答プログラムを分析
することで、次以降の作題に役立てたいと
審判団は考えていた。しかし、分析の自動
化の困難性、次期アジア地区予選の作題の 3研究結果、考察
ため難しい現状だった。(審判団の一員であ
る鴨浩靖も以前挫折した経験がある。)
本研究では、誤答を分析する事で次以降の 結果の一例を挙げる。
作題に役立たせる事を目的とする。
誤答の中で、プログラム自体のミスかプ
ログラム自体は正解していたが提出するま
ACM/ICPC とは、ACM が主催する大学生を
対象にした世界的規模のプログラミングコ での操作ミスが原因で誤答に分類されてい
ンテストである。ICPC とは世界最古かつ最 るかによって分ける事ができる事が分かっ
大の教育および科学コンピューティング協 た。また、1つのチームが同じ問題で数回
提出している場合がある事が分かった。
会である。
詳しい事に関しては、卒業研究発表会と
卒業論文にて報告する事にする。
2研究内容
本研究は、ACM/ICPC の国内予選で集めら
れた誤答分類の有意性について考えるもの
である。特に、プログラムのどの節を重点
に黙視すべきかを問題パターンごとに考え
る事にする。
国内予選の全7問中2問は正解数が非常
に少なかったため、5問を研究対象にした。
本論文では、5問中3問について論じる。
問題を A,B,C と呼ぶ事にする。問題の傾向
は以下のものである。
A 入力値に応じた範囲内の素数を数える問
題。想定解法の一部は以下の通りである。
• エラストテレスの篩で素数判定表
を作り、増減を追いかける方法で小
さい方から順に値を求め表にする。
• 試し割りアルゴリズムを作り素数
判定して数える。
4まとめと今後の展開
来年以降の誤答分析を重ねることにより、
精密なデータになると考えている。
本研究の結果が、プログラミングコンテス
トの審判団にとって次以降の作題のために
役立つ事を期待する。
B ある種のパズルを解く問題。想定解法の 参考文献
一部は以下の通りである。
• 深さ優先検索あるいは幅優先検索
[1]ACM-ICPC: ACM International
• BFS か CFS
Collegiate Programming Contest Asia
Regional Contest 2011 in
Fukuoka
C 地区ごとの電力使用量と総供給電力が与 http://icpc2011.ait.kyushu-u.ac.jp/ja
えられたとき、ある基準で最も合理的な論
番停電計画を作成する問題。想定解法の一 [2]鴨浩靖
部は以下の通りである。
「Datalore」http://taurus.ics.nara• 動的計画法あるいはメモ化
wu.ac.jp/aldebaran/acm-icpc/
ACM/ICPC 解答の分析
奈良女子大学情報科学科 数理情報学講座 鴨研究室 久保田梢
1.研究の背景と目的
ACM-ICPC の審判は長年答案の分析を行い、
次回以降の作題に活かしたいと思っていた。
しかし、その手段としてプログラムを人間が
目視する以外方法がなく自動化できないこと、
また審判はアジア地区予選の作題をしなけれ
ばならないことなどから時間が取れず実際に
分析を行えずにいた。そこで審判に協力し、
答案プログラムの分析を行い今後の作題に役
立てようとした。
2.ACM/ICPC とは
ACM(the Association for Computing
Machinery)は、世界最古・最大の教育および
科学コンピューティング協会である。また、
ACM-ICPC(ACM International Collegiate
Programming Contest)は、大学生を対象とした
コンピュータープログラミングにおけるコン
テストである。日本から参加する場合、国内
予選→アジア地区予選→世界大会の三段階に
なる。
3.使用データ
ACM-ICPC2011 国内予選のデータを使用し
た。
4.分析方法と結果
今回の研究では国内予選を対象とした。ま
たこの研究は 2 人共同で行ったが、今回は研
究結果の一例だけ発表する。
プログラムを使用している言語(C,C++,java)
で分ける。いくつか解き方を想定し、目視で
確認していく。想定外のものが出てきた場合
どのようなアルゴリズムか考える。さらにそ
の中で、ライブラリを利用しているか、文字
列ライブラリをどれだけ使うかなども見てい
く。またスタックを自分で作る際、どのよう
なデータ構造を採用しているかなどでも分け
ていく。さらに判定式の式の違いも見ていく。
その分類結果から使用した言語とアルゴリズ
ムなどとの関係、言語ごとの正答率などもわ
かる。
2011 年国内予選問題 B の分析結果の一部
問題の概要
与えられた文字列が、( )と[ ]についてバラン
スしているか判定する。
この問題については以下の 2 つのアルゴリズ
ムが予想された。
⑴スタックを利用する
⑵括弧以外の文字を取り除いていく
しかし実際には⑵の方法は全体の 4%以下し
かなく、⑴が 80%以上を占め、予想されな
かった LL⑴ を用いたものが 2 番目に多く見ら
れた。この結果、審判が予想しなかったアル
ゴリズムでプログラムを書く参加者がいるこ
とがわかった。
5.まとめ
この結果は次回以降の ACM-ICPC の作題に
活用される予定である。また、プログラミン
グ演習の採点にも役立てることができる。さ
らに来年以降も続けていけばより精密な結果
が得られる。
6.参考文献
ACM-ICPC 2011 IN Fukuoka
http://icpc2011.ait.kyushu-u.ac.jp/ja/home