【書評】アルゴリズムパズル ――プログラマのための数学パズル入門

アルゴリズムについて勉強する必要が私情により出てきたので、以下の本を買って取り組んでみた。

www.oreilly.co.jp

<どんな本か>

アルゴリズム的なパズルを集めた本。アルゴリズム的なパズルとは、問題を解くためのはっきり定義した手順を扱うパズルのこと。例えば エイト・クイーンハノイの塔狼とヤギとキャベツなどだ。

 

またこの本は副題にもあるように、プログラマ向けである。その理由は、コーディングにおいて適切なアルゴリズムを選択し実装することが、ロジックの簡潔さやパフォーマンスに影響するためである。

 

具体的な例を知りたい方はCodilityのLessonsなどがわかりやすいだろう。

app.codility.com

 

実際、IT企業の採用試験として問われることも多いようだ。

www.iandprogram.net

 

書籍の最初にはチュートリアルとして知っておくべきアルゴリズムの解説がある。バックトラックや縮小統治法、分割統治法、動的計画法といった基本的なアルゴリズムを学ぶことが可能だ。

 

本編のパズルは合計150問収録されている。難易度は初級、中級、上級の3段階。いずれも歯応えがある。 

 

<感想>

ひとつひとつのパズルに歯ごたえがあり、とても勉強に...というか頭の体操になった。普段アルゴリズムを意識してコーディングする機会が全くないため、チュートリアルで紹介されるアルゴリズムも勉強になった。

 

ただ解説は良くも悪くも必要最小限にとどまっている印象が強かった。ものによっては「え、ほんとにそれで証明できるの?」というポイントもあった(例えば52. 三角形の数え上げ)。

 

<こんな人におすすめ!>

・パズルが好きな人

アルゴリズムを楽しく学びたい人

・日常的にコーディングを行う人

 

<逆にこんな人にはおすすめできない> 

・パズルがニガテな人や、休みの日にわざわざ頭を使うことに疲労を感じる人

・生活の中でコンピュータに触れる機会がない人

・より本格的な数学書アルゴリズムの厳密な証明を求めている人