恥ずかしながら最短経路探索プログラムを自力で実装できないので、このアプリで(何度目かの)アルゴリズムの勉強をしている。いきなりダイクストラ法とか背伸びせず、幅優先探索から。
ここ数日くらいやっててまだ完成までこぎつけられていないけど、このアプリはアルゴリズムをステップごとにビジュアルで見せる説明でわかりやすいので、なんとか挫折せずくらいつけている。
改めて取り組んでみてようやく、自分は何がわかってなかったのか、がわかりかけてきた。そもそもグラフというデータ構造をプログラムで実装することがちゃんとできていなかった。というか、いわゆる「迷路」、アスキーアートでかかれてる文字列のあれ、あれをグラフにすることがうまくできなかった。二次元配列にはできるけど、その先でつまってしまった。アルゴリズム以前の問題。
なんでこんなこともできないのかと自己嫌悪で憂鬱な気持ちになりながらもまともに動かないプログラムをいじり続けて、少しずつではあるが「アルゴリズムとデータ構造」というのがセットになってる意味を体得できてきた気がする。この手の本のまえがきとかにたいてい書いてあって何度も読んでるんだけど、やっぱり手と頭を一緒に動かさないと身につかないというか。
いまは、探索まではできるようになったけど、最短経路を表示するために「どれが最短経路だったか」という情報を保存しておくところで、どうやればいいのかで悩み、直している最中。探索アルゴリズムによって、そういう情報・状態をどのように保存しておくのかのやり方も変わりうるのか?みたいなこともわからないので、わからないなりに悩みながらひたすらぐぐりながらの試行錯誤。でてくるサンプルコードが見事にどれひとつとして知りたいことをピンポイントで実装してなくて泣きが入る(が、教育的観点からはむしろ望ましい)
自分のできの悪さに劣等感をひしひしと感じるし、なかなかうまくいかなくてイライラもするけど、やってて嫌ではなく、むしろ夢中でやっているので(楽しいか?というと微妙だが。悔しくてやめられないだけともいえるし、それ含めて楽しみだともいえなくもない)こんどこそちゃんとものにしたい。