アルゴリズムとデータ構造を学習するにはどうすればよいですか?[閉まっている]


38

これは、アルゴリズムとデータ構造を学習する必要があるかどうかを尋ねた前回の質問の続きです。はい、そうです。

今、私は、実験によって、または実際に、またはどんな課題においても、それを学ぶ機会を得られない環境で働いています。適切な本、適切な問題、アルゴリズムやデータ構造を学習するために6か月、1、2年に渡る適切なリソースなど、適切なアプローチとは何ですか?また、問題をデータ構造とアルゴリズムに関連付けることができるように私の心を形成します。


3
コーメンはあなたの友人です:)
ルカシュマドン

1
@lukas:まだ終わっていませんが、そこにはかなりの数の数学があり、私はそれほど快適ではありません。これは、その、他の単一のソース:)しかし、アルゴリズム、データ構造とその分析の私の知識をはるかにやった
マシューM.

あなたはまた、より直接的にウィキペディアより人気のアルゴリズムとデータ構造を説明し、ほぼすべての記事(構造、アプローチ、アルゴリズム)...のための源泉コードが含ま私のプロジェクト、試すことen.algoritmy.net
malejpavouk

回答:


40

読む。

いいえ、本当に読んでください。

アルゴリズムと設計に関するすべてを読んでください。そこには驚異的な本があります。Sedgewickアルゴリズムの本は優れています。Skienaのアルゴリズム設計マニュアルも同様に優れています。一緒にこれらの本は、私が行くすべての仕事のすべての本棚で、神話のマン月ととも​​に私に従います。

その後尋ねます。

尊敬する人と話してください。どのような決定点があり、なぜ決定したのかを尋ねます。良いものは、「Xを選んだのは、これらの点でA、Bよりも優れているからです。Cを使用することもできましたが、このためより良い選択だと感じました」と言うことができます。

次に、します。

ものを構築します。決して使用しないものを作成します。必要のないものを作成します。数独パズルを解くプログラムを書いてください。もう一度やり直してください。そしてまた。5つのまったく異なる方法でビルドします。数独パズルを生成するプログラムを構築し、ソルバーにフィードします。最速のソルバーを見つけます。その後...

理由を明らかにする。

「何」はほとんど重要ではありません。つまり、手元のプロジェクトを完成させることが重要ですが、最後に「なぜ」を知らずに「何」を知っているなら、そもそもそれをやったことはないでしょう。履歴書に箇条書きを付けました。クッキーを手に入れてお祝いしましょう。「なぜ」は「何」よりもはるかに重要です。

そして記録のために、数独は例でした。Kongregateの膨大な数のロジックパズルを使って、この演習を自由に過ごし、多くのことを学んでいました。

http://www.amazon.com/Bundle-Algorithms-Parts-1-5-Fundamentals/dp/020172684X/ http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1848000693/ http://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/


本当に良い答えです!私はあなたがあなたのアドバイスを言い表す方法が好きです!
paxRoman

SedgewickとSkiennaの本もどこにでも持って行きます!それはおそらくあなたの答えが好きだったもう一つの理由です!
paxRoman

コルメンを混ぜてください。
AruniRC

1
読み:インターネット上の情報への増え続ける車の時代では、追加することが重要です本を(もちろん、排他的ではありません)。2〜3個の広告で区切られたHTMLページよりも長い問題への一貫した一貫した導入は、A Good Thing™です!それを過小評価しないでください(そしてもちろん、電子ブックは大丈夫です)。
ヨアヒムザウアー

1
同意した。一貫性が重要です。多数の異なるソースから1つまたは2つを取得する場合、データ構造を理解するのは困難です。書籍には、より優れた図表が含まれる傾向があります(一部のブログ/オンラインソースにはありますが、一般化された書籍ほど優れています)。Sedgewickの本には、コードと説明を簡単に理解できる、特に優れた図の組み合わせがあります。
Hounshell

10

アルゴリズム

私は12歳のときに、グループで魔法のレッスンを受けました。魔術師の名前はジョー・キャロタでした。彼は一度トリックをして、「どうやってそれをやったの?」彼はその日、それ以来私にくっついている何かを言った。

ジョーの応答、「マイケル、あなたが本当にそのトリックがどのように行われるかを知りたいなら、あなたはそれを自分でどうするかを考えなければなりません。」

もちろん、それは私が聞きたかったことではありませんが、問題解決に集中できました。これは私の視点からの問題解決でした。問題を解決するための私の最初の試みが17の手順を踏んで本当に不格好だった場合、良いニュースは問題を解決したことでした。

次に、開発したソリューションを見て、そのソリューションを改善する方法を探して、最終結果を合理化する方法を学びます。私のコンピュータープログラミングライフの後半で、このプロセスが「段階的改良」と呼ばれることがわかりました。今日、彼らはそれをリファクタリングと呼んでいると思います。

うまくいきましたが、今でも機能します。




2

これに関するコースを受講できない場合は、アルゴリズム設計マニュアルをお勧めします。ここには無料のPDFがありますが、プロのプログラミングを計画している場合は、実際の本を入手する価値があります。


ソリューションはこちらです。自分で学習するときにそれらを持っていることは素晴らしいと思います:www2.algorithm.cs.sunysb.edu
デビッド

1

データ構造とアルゴリズムの学部レベルのコースに登録してみてください。他の人と一緒にこれらの概念を学ぶことは常に良いことです。


私はコンピューターサイエンスを卒業し、それから6年になります。Web、ユーザビリティ、クライアントサーバーなどが私を魅了し、これらの分野に取り組んでいるだけで、これらのテーマに集中したことはありませんでしたが、今では私もそれらを学ぶ必要があると感じています。あなたの考えは何ですか。
bharwaniスシル

戻って復習コースを受講してください:-)
Martijn Verburg

1

たとえば、オンラインのsphereで古典的な問題の解決に取り組み始めてください。このサイトは派手ではないかもしれませんが、これらは今日使用されている重要なデータ構造とアルゴリズムの多くを必要とする古典的なプログラミングの問題です。

ソリューションは、C / C ++からJavaScript、Lisp、Smalltalk、アセンブラーなど、さまざまなプログラミング言語で送信できます。そのため、あなたが快適に感じるプログラミング言語であれば、問題の解決に完全に集中できます。


1

CLRS

これは私のお気に入りのリソースです。私は学部のコンピューターサイエンスアルゴリズムコースでそれを使用し、4年後にこの本を購入して自分で読んでMS Comp Sciコースの準備をしました。決して簡単に読むことはできませんが、提示された数学/証明のいくつかを理解し、お好みの言語で擬似コードを実装するために作業する場合、かなり高価な価値があります。他の人が言及したアルゴリズム設計マニュアルも、問題の特定を学習するための優れたリソースですが、純粋な詳細にはCLRSの方が優れていることがわかりました。


0

次のようなものをいつでも試すことができます:http : //codekata.pragprog.com/

私は読書とは対照的に、それを考えることによって常により良く学びました。ただし、回答を探すには、ドキュメント/資料を用意する必要があります。


0

この本を買う、これを借りるか、これを盗む!残りは続きます:)

RivestとCormenによるアルゴリズムの紹介。はじめにMergesortの説明を過ぎてしまうと、最初に従うことは非常に難しくなります。すべてが美しくあなたに展開します。

さらに、本で与えられた問題を解決すれば、より良くなります。大学院を卒業した後でも、この本を手放したくなかった。いいね

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.