アルゴリズムの百科事典はありますか?[閉まっている]


34

Handbook of Mathematicsに似たスタイルのアルゴリズムの百科事典はありますか?多数のファイルを1か所で利用できると便利です。Art of Computer Programmingは良い情報源と考えられていますが、教訓的なほど百科事典的ではないようです。

モデレーターノート

いくつかの説明とコンテキストを提供する長い答えを探しています。本をリストするだけではなく、本やリソースを推奨する理由を説明してください。何も説明していない回答は削除されます。詳細については、良い主観、悪い主観を参照してください。



少しグーグルは、この質問に答えるのに大いに役立つでしょう。少なくとも、それはあなたがより焦点を絞った質問をするために使用できる良い候補者のリストを提供するでしょう。
カレブ

回答:


41

これがあなたが探しているものであるかどうかはわかりませんが、NISTにはアルゴリズムとデータ構造の辞書があります。これは、データ構造とアルゴリズム(doh)用の非常に包括的な辞書であり、これまで聞いたことのない何かを見つけたときに調べるのに適しています。


あなたの答えは、まさに私が探しているものです。無料であることの追加ポイント。
世界エンジニア

面白いことに、過去数日間、米国政府の閉鎖により、NIST DADSは通知があるまで閉鎖されています。そして、数千人の開発者が一度に悲鳴を上げると
...-ヘイレム

11

Skienaの本も参考になります:http : //www.algorist.com/

この本は、バックグラウンドからさまざまな問題領域(データ構造、検索/並べ替え、グラフの問題、組み合わせ/順列/ヒューリスティック)に至るまで、さらにP対NP完全問題の問題までを網羅しています。

この質問の本の特に関連するセクションは、〜70-75の異なるアルゴリズムのカタログ、一般に必要な入力の種類、特定のアルゴリズムが解決する問題の全体的な説明、およびアプリケーションの特定の例です(たとえば、サフィックスツリーのセクションでは、試行の使用法と、サブストリングおよび検索への適用性について説明しています。可能な場合、著者はさまざまな共通言語(c、c ++、Java、および他のいくつか)の既存の実装も特定します。


これは、私が考えることができるアルゴリズム百科事典に最も近いものです。素晴らしい本!
チャラランボスパスチャリデス

8

コンピュータープログラムの構造と解釈、およびコンピュータープログラミングの技術は、私が見ているものに最も近いものです。

SICPは、一般的なデータ構造とアルゴリズムを調べます。百科事典ではありませんが、限られたスペースで広い領域をカバーするのはかなり良いことです。

コンピュータープログラミングの芸術については、まだ言われていないことが言えます。取り上げるときは注意してください。特定のトピックにアクセスすると、数時間後にカバーからカバーまでボリュームを読んだことに気付くでしょう。プログラミングを次のレベルに引き上げるのに最適な方法です。


5
SICPは素晴らしい本ですが、「アルゴリズムの百科事典」を探している人にとっては合理的な提案ではないと思います。SICPはそのようなことをしようとしません。さらに、OPはACPが「教訓的なほど百科事典的ではないようだ」と書いているので、SICPは彼または彼女が探しているものではないことは明らかです。
カレブ

素晴らしい本ですが、百科事典ではありません。
ヘイレム

それは百科事典ではないが、アルゴリズムの良いツアーを提供すると言ったのはかなり確かです。「百科事典ではありませんが、限られたスペースで広い領域をカバーするのはかなり良いことです。」うんそれは私が言ったことです。
マイケルブラウン

8

Cormen、Leiserson、Rivest、Stein-「アルゴリズムの紹介」

CLRSとしてより一般的に知られているアルゴリズムの紹介は、多くの大学の標準的なアルゴリズムの教科書です。ソート、検索、グラフ理論、基本的な数値計算など、さまざまなアプリケーション向けの幅広いアルゴリズムをカバーしています。また、Big O、Big Omega、Big Theta表記の詳細な説明も含まれています。一般的な批判は、新しいアルゴリズムを設計するための準備が実際にはできていないが、百科事典またはアルゴリズムの辞書としては十分すぎるということです。

また、CLRSは、どのアルゴリズムをいつ使用するかについてのアドバイスも提供し、アルゴリズムとデータ構造の一般的なインデックスを提示するだけではないことに注意してください。達成したいタスクがあり、そのタスクを実行する最善の方法についてアドバイスが必要な場合に役立ちます。自分がやっていることをどうやってやりたいかがわかっていて、擬似コードだけが必要な場合に役立つリソースがあります。

—以下の@quanticleによるコメントから


4
この質問の目標を達成するために、この本について何を含めるように答えを拡張できますか?

2
一般的にCLRSとして知られているアルゴリズムの紹介は、多くの大学の標準的なアルゴリズムの教科書です。並べ替え、検索、グラフ理論、基本的な数値計算など、さまざまなアプリケーションのさまざまなアルゴリズムをカバーしています。また、Big O、Big Omega、Big Theta表記の詳細な説明も含まれています。一般的な批判は、新しいアルゴリズムを設計するための準備が実際にはできていないが、百科事典またはアルゴリズムの辞書としては十分すぎるということです。
quanticle

1
また、CLRSは、どのアルゴリズムをいつ使用するかについてのアドバイスも提供し、アルゴリズムとデータ構造の一般的なインデックスを提示するだけではないことに注意してください。達成したいタスクがあり、そのタスクを実行する最善の方法についてアドバイスが必要な場合に役立ちます。自分がやっていることをどうやってやりたいかがわかっていて、擬似コードだけが必要な場合に役立つリソースがあります。
quanticle

Dmitryへのヒント:@quanticleのコメントを回答の本文にコピーして、回答を1000%素晴らしいものにします。
-nohat

5

物理学の大学院では、Cの数値レシピを本当に楽しみました。もちろん、すべてのアルゴリズムを網羅しているわけではありませんが、科学で非常に役立つ多くの優れた説明を提供します。

http://www.nr.com/

本は解決する方法をカバーしています:

一次方程式

  1. 一次方程式
  2. 内挿と外挿
  3. 機能の統合
  4. 機能評価
  5. ガンマ関数、ベータ関数、階乗などの特殊関数
  6. 乱数-これが何を意味するかについての適切な説明を含む
  7. ソートアルゴリズム
  8. 根と非線形方程式を見つける
  9. 関数の最小化と最大化
  10. 固有システム
  11. 高速フーリエ変換
  12. FFTおよびスペクトル分析
  13. データの統計的説明
  14. データのモデリング
  15. 常微分方程式の積分
  16. 二点境界問題
  17. 積分方程式と逆境界理論
  18. 偏微分方程式
  19. CRCチェックやデータ圧縮などの「その他の」アルゴリズム

そのため、すべて非常に数学的であり、科学者やゲーム用の物理エンジンを設計する人々に適しています。また、アルゴリズムを提供するだけでなく、その背後にある理由を説明し、正しく使用できるようにします。通常のコーディングテキストではなく、必要なときに必要なものです。

データ分析のために多次元でダウンヒルシンプレックス法(アメーバウォーク)を使用するとき、私はそれに大きく依存していました。まだ私の鉛筆マークがあります。ああ、楽しい時を!


1
この質問の目標を達成するために、この本について何を含めるように答えを拡張できますか?

4

「アルゴリズムの百科事典」を探しているなら、Encyclopedia of Algorithmsで間違いを犯すのは難しいでしょう。私はそれを読んだとは言えません(399ドルで、百科事典には安いです)が、宣伝文句は有望に見えます:

Encyclopedia of Algorithmsは、学生および研究者向けの重要なアルゴリズム問題に対する包括的なソリューションのセットを提供します。これには、最近の10年間の影響の大きいソリューションが含まれます。

誰かがすでにスティーブン・スキエナの「アルゴリズム設計マニュアル」を引用していますが、誰もまだスキエナの関連ウェブサイトであるストーニー・ブルック・アルゴリズム・リポジトリーについて言及していないと思います。Webサイトから:

このWWWページは、組み合わせアルゴリズムの70を超える最も基本的な問題に対するアルゴリズム実装の包括的なコレクションとして機能することを目的としています。

この本は、既知のアルゴリズムの単なるカタログではありません。また、問題や状況に最適なアルゴリズムを決定する方法に関する(ある意味では)チュートリアルのようなものです。一方、リポジトリは本質的に百科事典的です。各アルゴリズムを自分で実装する方法について必ずしも多くの詳細が含まれているわけではありませんが、アルゴリズムが何をするのか、一般的にどのように機能するのか、本からよく読める用語を説明し、各アルゴリズムの実際の実装へのリンクを提供しますアルゴリズム。


2

ロゼッタコードウィキは、いくつかの言語では一般的なアルゴリズムの実装の素晴らしいコレクションです。完全にアカデミックではありませんが、非常に有益で楽しいものです。

彼ら自身の言葉で:

Rosetta Codeはプログラミングの胸部サイトです。考えは、できるだけ多くの異なる言語で同じタスクの解決策を提示し、言語がどのように類似しており、異なるかを示し、別の学習の問題に対するアプローチの基礎を持つ人を支援することです。

NIST Dictionary of Algorithms and Data Structuresなどの他のリソースに対する主な利点は、異なる言語のいくつかの実装を確認できることです。これはさまざまな目的に役立ちます(表現力の比較、言語などの実行可能性の検証など)。

たとえば、QuickSortページでは(2013年10月7日現在)少なくとも89の実装が提供されています。


それが何をするのか、そして尋ねられた質問に答えるのになぜそれをお勧めするのか、もっと説明してもらえますか?「リンクのみの答えは」かなりスタック所で歓迎されていません
ブヨ

@gnat:通常は同意しますが、「book-ref only」の回答とはどう違いますか?また、「いくつかの言語での一般的なアルゴリズムの実装のコレクション」がそれのほとんどをカバーしていると思います。また、十分によく見ると、受け入れられた答えと同じくらい(または少し)詳細です:)
ヘイレム

@gnat:とにかく、いくつか追加しました。
ヘイレム

@AnnaLear:申し訳ありませんが、あなたの編集は私の投稿を短くして軌道に乗せるのに完全に正しいと思いますが、gnatの要求による変更に関して比較を元に戻すのはふさわしいと思われました。
ヘイレム

0

このテーマに関する優れた、時代を超越した有益な本がありますが、私はほとんどそのような百科事典を見つけるとは思いません。

  • 数学の百科事典は何千年もの研究をカバーしています。一方、アルゴリズムは1世紀の間ほとんど研究されていません(大規模に言えば)。コンピュータサイエンスの全分野はだれにもほとんど理解されておらず、ほとんどのことはまだ急速に進んでいます。今この事典に百科事典があった場合、10〜20年で90%を窓から捨てることができると思います。そして、半分以上を保持する価値のある10%は、半世紀前にすでに印刷されていました。数学のハンドブックの広大な部分は、今から100年後に最新のものになります。

  • 数学は純粋で自己完結型です。これは「アルゴリズムの分野」にはほとんど当てはまりません。フィールドは通常、明確に定義された問題空間で動作しますが、アルゴリズムは実際にはあまり明確に定義されていないソリューション空間内でのみ動作するため、実際にはフィールドと考えることはほとんどできません。
    したがって、アルゴリズムに関する百科事典をコンパイルする場合、包括的にしたいのであれば、何を含めるべきかは明確ではありません。グラフ理論?線形代数?数字的分析?

私見、今百科事典の役割を果たす最高のリソースは、「インターネット」(見よ)です。エンサイクロペディアのポイントは、インデックス付きの包括的な検索可能な知識のリポジトリを(あるトピックについて)持つことです。個人的には、このリストこのリストの両方が非常に圧倒的だと思います。また、他の回答では、多数の優れたアルゴリズムデータベースがリンクされています。

そのため、本棚にある百科事典に期待されるのと同じレベルの品質を期待することはできませんが、知りたい分野の若さを補うために必要なレベルの適時性を得ることができます。


0

現存の情報源に関しては、ウィキペディアはあなたが探しているものに最も近いものだと思います。つまり、この目的のためにウィキペディアでより定義された「アルゴリズムテンプレート」を作成すると便利かもしれませんが、ここではなく、ウィキペディアの編集者と議論する必要があります。

The Art of Computer Programmingについて簡単なメモ:完了したら、「要約」ボリュームを含めることです。これは今は役に立ちませんが、おおよそ探しているものです。TAOCPは、それがカバーするものの百科事典ですが、まだ完全ではなく、Knuthの性格は、彼が徹底的に研究しない限り、彼が物事を含めるつもりはないということです。

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