【読書】爆速!アルゴリズム

競技プログラミングとか、興味がない訳ではないですが、優先度の問題でやっていないことがあります。

アルゴリズムは大学の講義で基礎を学習して、「ふーん」で止まっているのですが、もう一度学び直してみたいなと思っていました。

そんなときにこの本を見つけたため、本書を読みました。

読んだ本

爆速! アルゴリズム―毎日の生活がみるみるうちに変わる

爆速! アルゴリズム―毎日の生活がみるみるうちに変わる

日常でよくあるシーン(くつしたの山からペアを作っていく作業)などを例として、最適なアルゴリズムを考察する本です。

どんな方法がGood・Badかをアルゴリズムの視点から書いていて、とても面白いです。

学んだこと

学べるアルゴリズム

  • 参照テーブル
  • 二分探索
  • スタック
  • パックトラック法
  • ソート(マージソート)
  • リンク解析
  • 情報の圧縮
  • 優先度付きキュー

アルゴリズムについて

どんな仕事でも、アルゴリズムを考えて実行するようになれば

  • 繰り返し同じ効果を再現することができる
  • 誰がやっても同じ結果が得られる

これが、いわゆる「プログラミング思考」と呼ばれる。

よりスマートに考えるためのツールがアルゴリズムで、この考え方がとても使えることを伝えたいということを学びました。

リチャード・ファインマンは、その伝説的な能力について「問題をさまざまな違った形のモデルとして捉えられるから」答えていたらしいです。

競技プログラミングに没頭している人たちは、問題を様々な視点から見て、最適な解を見つけるためのプロセスを楽しんでいるのかなと感じました。