アルゴリズム設計と計算の複雑さに関するコースは、ある程度の数学的な成熟度と問題解決スキルを必要とするため、これらの科目に精通していない学生にとって常に挑戦的だと思います。「計算の複雑さ」に関する私の最初の大学院コースで、純粋な数学の学位を持っている私の友人は、そのコースが多くの数学の背景を必要としないにもかかわらず、少なくとも驚いたことを教えてくれました。コースの概要)、実際には、彼が純粋な数学の学部の学位のすべてで得たほぼすべてのスキルが必要でした!
Sipserの本を読んでエクササイズをすることで、「方法」について最もよく知るようになりました(最初に大学院を始めたとき)。問題解決のスキルと数学的成熟度は、単にたくさんの事実や定義ではなく、あなたが学びたいものだからです。
ただし、Sipserの本は複雑さとNPの完全性に適しているだけで、CLRSの本を置き換えるだけでは十分ではありません。CLRSブックの唯一の問題は、包括的なカバーの利点が弱点になる可能性があることです。なぜなら、この本は学生にとって非常に怖いまたは圧倒的に見えるかもしれないからです。だから、私のアドバイスは、あなたは本当に図書館に行ってアルゴリズムに関する本を検索し、一つ一つをスキャンして、あなたの思考パターンに最も合うものを選ぶべきだということです。繰り返しますが、演習を行うことを忘れないでください!
アルゴリズムについては、個人的に次の本をお勧めします(SadeqとJeffEが提案した本に加えて)。
- S. Dasgupta、CH Papadimitriou、およびUV Vaziraniによる非常に読みやすく美しい本のアルゴリズム。
- ジェフ・エリクソンによるキラー・ノート(または本の下書き)。(JeffEは控えめすぎて自分のメモを提案できないため、自分でやらなければなりません。)
一般に、特定のアルゴリズムまたはデータ構造を学習するときは、教科書の説明が何らかの理由で明確でない場合、Googleでその特定のトピックの講義ノートを検索するのが最善の方法です。場合によっては、同じことについて異なる説明を行うと、最終的に全体像がわかります。少なくとも、それは私のためにどのように機能するかです。