非常に基本的な簡単なチュートリアルを使用してアルゴリズムを学びたいです。そこに何かありますか?再帰などについて聞いたことがありますが、上手になりたいです。任意の助けいただければ幸いです。
まず、リンクリストやバイナリ検索ツリーなどの基本的なデータ構造とアルゴリズム、並べ替えと検索のアルゴリズムのチュートリアルを含む EternallyConfuzzled を見てみましょう。この後さらに学習したい場合は、複雑さ、完全性、必要な数学の知識の順に、次の本をお勧めします。
アルゴリズムを学びたい場合 この本 が最良の選択です。
(ソース: mcgraw-hill.com )
MITのOCWには、アルゴリズムコースの ビデオ講義 があります。教授は、別のポスターが示唆した 『アルゴリズム入門』の著者の1人です。
離散数学の基本的な知識があることを前提としています。
TopCoderには優れた アルゴリズムチュートリアル があります。
チュートリアルに興味がある場合は、上記のCLRSブックの推奨を避けてください。アルゴリズムの研究には厳密な理論的アプローチが必要であり、チュートリアルのアプローチとは非常に異なります。
アルゴリズムを学習するには、アルゴリズムを実行します。アルゴリズムの問題とそれらを解決するためのガイダンスを提供するリソースを見つけてください。教科書が必要な場合は、アルゴリズムの設計マニュアルを確認してください。このマニュアルにもオンライン Algorithm Repository があります。オンラインコースをご希望の場合は、 dacity がpythonベースのアルゴリズムコースを提供し、Courseraが general および Java-based を提供します。
重要な部分はアルゴリズムの練習であるため、ビデオのコースをスキップして、単に課題を解決することができます。他の回答は、アルゴリズムに慣れたら実践できる課題があるサイトを提案しました。最初はもっとガイダンスが必要なので、アルゴリズムの課題を提供し、それらの解決に役立つリソースを見つけます。私はこの目的のために Learneroo を作成しました。 Recursion Tutorialで再帰の基礎を学ぶことから始めることができます。
再帰は実際にはアルゴリズムではありません。あなたが興味を持っている具体的なものが何もないので、私はあなたが読むことをお勧めします wikipedia's List of alorithms または他の人が本をつかむことを提案したように。
ストーニーブルックアルゴリズムリポジトリ から始めます。このサイトには、さまざまなタイプのアルゴリズムについての非常に優れた説明がいくつかあり、利用可能な書籍やその他のリソースを参照しているので、何が利用できるかを知ることができます。
本のxyzは単純ではないとコメントしているさまざまな人々に、アルゴリズムは単純なトピックではないことを指摘しておきます。概念を理解するためには、少なくとも大学入学レベルの数学と、適切に抽象的なレベルでの計算について推論する能力が必要です。 「ダミーのアルゴリズム」の本を見つけたなら、お金を無駄にしないでください!
トップコーダーの問題の解決策を検討することは、アルゴリズムを理解するための非常に良い方法です。読書理論だけでは役に立たない
ソートアルゴリズムから始めることをお勧めします。関連する wikipedia page を読み、O(n log n)の項目をスキップして、たとえば挿入ソート、マージソート、クイックソートの実装に焦点を当てます。 バイナリ検索 を理解します。また、ベクター、リンクリスト、スタック、それらの実装、およびそれらの有用性など、いくつかの基本的な データ構造 についても学習します。 (たいていの場合、問題を解決するアルゴリズムは適切なデータ構造と一緒に使用されます。)さまざまなアルゴリズムとデータ構造に自信が持てると、 Cormenによる本など)のより完全な論文に飛び込むことができます。他
再帰に関しては、それ自体はアルゴリズムではありません。代わりに、問題を解決するために一部のアルゴリズムが使用する手法であり、後者は自然に副問題に分割できます。問題を分割し、部分問題を個別に解決してから、それらの解をマージして元の問題の解を得る手法は、「分割とインペラ」または「分割統治」と呼ばれます。 (再帰は、ほとんどのプログラミング言語の関連機能でもあり、基本的に「自分自身を呼び出す関数」を意味します。)
「再帰アルゴリズム」の最も引用された、最も簡単で最も役に立たない例は、階乗を計算するためのものです。気にしないで。代わりに、 ハノイの塔 の問題について読んでください。これは単純でエレガントな再帰的な解決策を認めており、繰り返しになりますが、それらの多くは確かに再帰的です。
カーンアカデミーは、アルゴリズムに関する優れたインタラクティブな自己ペースのコースを開始しました- https://www.khanacademy.org/computing/computer-science/algorithms 。
アルゴリズムの問題の私のお気に入りのリストの1つは Project Euler です。それらはかなり多様であり、最適化のために何度も同じ問題を解決でき、多くのコミュニティ(C++、C#、Pythonなど)が見つかります。 .. etc)すべての問題のベンチマークを投稿する
とても楽しいです、オタクの楽しみ
再帰は言語機能であり、それ自体「アルゴリズム」ではありません。すべての再帰は、適切なデータ構造(スタックなど)に置き換えることができます。
本を手に取ることをお勧めします。アルゴリズムの問題は、それが比較的進歩的なトピックであることです。並べ替えを学ぶ前に簡単な検索を学ぶ必要があり、最小全域木などを行う前に並べ替えが必要です。本はこれらを適切に順序付けし、テキストが十分な情報を提供しない場合、インターネットは素晴らしいですステップ。 Amazonを試して、新しい人のコメントを見てください。
ただし、実装言語を理解する前に、実装言語を習得してください。言語がどのように機能するかを理解するまでは、ロジックのバグと特定のコマンドシーケンスで何が起こっているかについての誤解を見つけるのは非常に困難です。
USA Computing Olympiadには素晴らしいアルゴリズムがあります トレーニングサイト これまでのところ誰でもサインアップでき、ほぼクラスのような形式です。少し読んで、エクササイズをして、もっと読んで、エクササイズをしてください。
SPOJなど、さまざまなサイトで質問を解決します。また、Introduction to Algorithmsに関する本を読んだり、courseraにもいくつかのオンラインコースがあります。