プログラムの高速化について書きます。

UVaに現時点では2千題近いプログラミング問題が出題されています。プログラミングを楽しみながら稼ぎたいひとはTopCoderというサイトを利用するのもいいでしょう。

書いたプログラムの良し悪しは評価基準それぞれですが、プログラムの正確性、高速性、信頼性、可読性、メンテナンスのしやすさ等がよく評価基準に用いられると思います。

ここではもっとも比較しやすいプログラムの高速性を考えます。

2つのプログラムを同時に走らせて、先に終了するほうが速い。そういう観点からすると、高速性の比較がやりやすく、UVa でもランキングを決めるパラメータとして採用されています。

ちなみに、プログラムの正確性を判定するのは難しく、一般的には判定不能と証明されています。UVaでも言い方として「正解」というのではなく、「Accepted=受け入れられた、受理された」というレベルでわれわれの送ったプログラムを評価しています。(後にいくらでも実は前の判定が間違えていたとかの言い訳にするための逃げ道だというひともいますが。)

ほかに比較しやすいパラメータはメモリの使用量、ソースプログラムの長さ、等もあります。北京大学のPKU (acm.pku.edu.cn) ではソースの長さが競っていますが、あまり感心しません。ソースプログラムの可読性が著しく損なわれる恐れが大いにあると思います。1バイトでも短くしたいがために、変数名を1文字にしたり、スペースを全くソースに入れないことを平気でやってしまいますから。

Comments are closed.

Post Navigation