内容紹介前著「アルゴリズムを学ぼう」では、答が1つに決まる問題というのが多かったのですが、今回は数学、文字列、正規表現とオートマトン、ゲームのAIなど、プログラマーなら知っておくべき基礎的な知識を、多岐にわたって集めました。 数学の分野では、基礎的な線形代数や群の知識を、ライツアウトを解くという題材を用いて説明しています。ライツアウトという具体例を用いることで、抽象的な線形代数や群の問題が、具体的なイメージを持って理解できるのではないかと思います。ライツアウトを完璧に解くという問題だけでも、さまざまな数学的知識が学べるということに、ちょっとびっくりしますね。 文字列の分野では、基礎的な文字列の検索アルゴリズムを集めました。検索は読者のみなさまもふだんから利用していることと思いますが、それがどのように動作しているのかを、実際のコードを使って解説します。ここには、さまざまなアルゴリズムの定石が