アルゴリズムについて詳しく学ぶには


8

私はこのサイトを非常に興味を持って読んでいますが、多くのことが頭に浮かんでいます。これにより、アルゴリズムとCS全般についてもっと学びたいと思っています。私の研究からわかる限り、これを行うには主に2つの方法があります。

  1. 厚くて重い本で、ゆっくりと確実に読み進めることができます。

  2. 私は「実践して学ぶ」ことができ、すばらしい本を読むことができますが、一冊一冊読むのではなく、興味のある部分に移動して、好きなアルゴリズムの実装と適用に取り組みます。

私の質問は、あなたは上記のどれを使用しましたか、そしてあなたは誰かに同じアプローチを勧めますか?


1
cstheoryに関する私の答えが役に立つかもしれません。
2012年

回答:


15

私は数年前に大学のコースでアルゴリズムについて学びました。しかし、本を使用してアルゴリズムを実行する場合は、優れたものが必要です。アルゴリズムを理解する方法として、2冊の本が私にとって際立っています。

  • Steven S. Skiena によるアルゴリズム設計マニュアル
  • T Cormen、C Leiserson、R Rivest、C Stein によるアルゴリズムの紹介

前者はおそらくより実践的なマニュアルですが、後者はより聖書に似ていますが、証拠があります。

あなたが従うことができる戦略は、読んだり、理論的な演習を行ったり、できる限り多くを実装したり、興味深いまたは挑戦的または両方であるアルゴリズム/問題に焦点を当てたりすることで構成されます。したがって、アルゴリズムを実装するだけでなく、アルゴリズムのすべての側面をカバーするようにしてください。これには、彼らの時間と空間の複雑さを研究し、それらの正確さを証明することが含まれます。アルゴリズムの研究は、単にアルゴリズムを実装するだけではありません。

十分な経験を積んだ後、専門化を開始します。たとえば、計算幾何学やノンブロッキングアルゴリズムに興味がある場合は、この分野の書籍や研究論文を探索してください。

専門化は良いですが、他の分野のテクニックをサンプリングすることも良いので、アルゴリズムについて広く読む(そしてそのようなアルゴリズムを実装する)ことは、幅広いスキルセットを維持するための良い方法です。

編集:入門的なアルゴリズムを通過した後、Motwani&RaghavanによるRandomized AlgorithmsVaziraniによるApproximation Algorithmsなどの書籍を参照できます。これらの本は、より高度なアルゴリズム設計手法に関する調査(および、ある程度、数学手法の優れた学習課題)です。また、グラフやネットワーク、データ構造の設計、最適化など、CSの他の多くの分野への洞察を広げます。


オンラインでアルゴリズム設計マニュアルのコピーを読み始めましたが、今のところ大好きです!ありがとう!
Daniel Gratzer

3
少し一言言い換えると、アルゴリズムの研究はアルゴリズムの実装について偶然にすぎません
JeffE

13

アルゴリズムクラスを教える。

またはおそらくさらに良い:

アルゴリズムのテキストを書く。


3
+1。私はこれを冗談だと最初に考えましたが、再考したところ、誰かが同じ概念を学習するように手助けされたときのように、何かを深く理解することはできないことに気付きました。もちろんこれには、教授にとって、両方の授業、講義ノートの作成、ノートの作成、そしてもちろん、テキストの執筆が含まれます;-)私の2セント:演習の準備も非常に役立ちます。学生の場合、@ Dave Clarkeが提案した戦略に同意します。
Massimo Cafaro

いいえ、@ vzn、この答えは完全に深刻です。
JeffE 2012

ええと、それを恐れていました—教師または教授(人口の非常に狭いサブセット)ではない人に適切/適応された答えは、「アルゴリズムを友達に教える」または「メモリからのアルゴリズム&それを読むとフォローするために誰かの試み」している
vzn

5
それほど厳格ではありません。教える(または書く)ために、なぜあなたは教える(または書く)ために報酬支払わなければならないのですか?同僚に教える。あなたの子供を教えます。地元の高校またはコミュニティカレッジでボランティアをする。休日にYouTube動画を作成してください。アルゴリズムペチャクチャナイトを開始します。
JeffE 2012

触れる。これは、「教科書」も「緩やかに綴じられたノートブックで執筆、非公開」と大まかに解釈された場合に機能すると思います
vzn

2

アルゴリズムを読んだらすぐにアルゴリズムに基づいて問題を解決してください。さらに、アルゴリズムを理解して実装するためには、データ構造をよりよく理解する必要があります。Sahniによって書かれたデータ構造の非常に素晴らしい本があります。あなたはそれを使うことができ、アルゴリズムのためにプログラミングの本の問題を解決することができます。質問はそこにかなりいいです。


1

大学でアルゴリズムについて学んでいない場合は、オンラインクラスのいずれかを受講することをお勧めします。コースラ.orgのコースの1つにサインアップするか、スタンフォード大学が投稿したビデオをフォローすることを検討してください。


Udacityは、udacity.com/overview/Course/cs215でもコースを提供しています。
jonsca 2012
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.