脳髄蒸発(2008/03/01)


X300

これは普通に買う。

2008はやぶさ

なんかね、もう Bologna と Aktuelle は卵産んでるみたいなんですよ。

このままいくと、3末には生まれることになるわけですが。

ちょっと早くないですかね。

列挙学校

列挙学校に入学してきた。

入学はしたが、ちょっと卒業できそうもない。 今の職場に移ってからというもの、脳味噌が汁になって耳から出るような 場合はけっこうあるわけですが、 そのなかでも格別だった。 ここ数年のうちの最大強度であり、 汁がどうこうという話でいえば、 もはや液体ですらなく沸騰して蒸発である。

これまで私は、とりあえず見掛けかっこよく手短に書ければよい、 くらいの基準でコードを書いてきました。 速度と外観が両立しない場合は、外観を優先していました。 計算において重複や無駄なメモリの使い方があり、 そのために処理速度が犠牲になっていた場合も、 とりあえず動き、かっこよければよし、という以上は深く考えた事は ありませんでした。

そんな私も必要に迫られてコードの効率を改善せねばならない立場に 追い込まれる事は今まで何度かあったわけですが、 そんな場合に使う手口は、せいぜい、 何度もせねばならない計算の結果は、 いちいちやりなおさずにあとで再活用するためにメモリにとっておく、 という程度です。 こんな設計では、 適当なサイズのデータを扱っている間はなんとか動きますが、 いうまでもなく、入力や出力が十分大きなサイズになる場合には 全く動きません。 書き直せばなんとかなりそうな気がする事もありましたが、 誰かの知恵を使おうにもどうやって調べれば良いのかも判らず、 自分で考えるには余りに難しく、 諦める場合がほとんどでした。

しかし、この学校で思い知りました。 真の最適化は、アルゴリズムの改善によって、 かつ、 それのみによって達成されるのです。

Algorithm Guys は最高にいかします。 私が書いたら余裕で指数関数オーダー、しかも すぐにメモリが足りなくなってそもそも動かなくなるようなものを、 処理にかかる手間の合計も、またその進捗における遅延も、多項式時間、 しかも一次のオーダに、さらに必要なメモリは定数に収めたりするからです。

プログラミングの技能とは、こういう能力を言うのだと思いました。 ついでに、「第一に必要なのはコミュニケーション能力」とか ほざいている自称情報通信系会社のオッサンは、 仕事をやめてネズミ講の親玉でもやってればいいのに、とも思いました。

今回憶えたのは、 Backtracking というアルゴリズムの種類です。 といってもそういうものがある、ということを憶えた程度で、 書けるわけではありませんが。でも、なんとなく、おぼろげに、 そういえば学部の頃、情報処理演習の最後のほうで こういうのをやったような気もする。

昔、在籍していた学科が関連した企画だった関係で、 修士時分の同級生にも偶然バッタリと会えたりして、 そういう意味でも楽しく有益な企画だった。 またこういう企画があれば、是非参加したい。


過去の落書きリスト