さまざまなトピックに関するアルゴリズムの本


11

私は私たちの小さな会社(約15人)のためのアルゴリズムに関する本のライブラリを構築する任務を負っています。予算は5kを超えていますが、確かに10k未満なので、かなりの数の本を購入できます。ここにいるすべての人は、CSまたは密接に関連する分野で少なくとも学士号を取得しているため、Cormenのような基本的な教科書を入手しますが、より高度なトピックに関する優れた本に興味があります。(ちなみに、Knuthの4巻を入手します。)

トピックのリストは次のとおりです。

  • 並べ替えアルゴリズム

  • グラフアルゴリズム

  • 文字列アルゴリズム

  • ランダム化されたアルゴリズム

  • 分散アルゴリズム

  • 組み合わせアルゴリズム

本質的に私は、アルゴリズムとデータ構造に関連するCS内の主要なトピックに関する本の良い推薦を探しています。特に、良い学校の学士号の一部として、アルゴリズムとデータ構造のクラスで通常カバーされているものを超えるもの。一般的に有用な資料を探しているので、質問はかなりあいまいです。私たちが開発するソフトウェアは、主に大量のデータを処理するシステムレベルのものです。

理想はまた、ほとんどの人が聞いたことがないかもしれないかなり最近のクールなデータ構造とアルゴリズムをカバーするものを見つけることです。


編集:ここに私が入手する必要があると思う予備的な本があります:

  • コーメン他によるアルゴリズムの紹介。

  • クラインバーグ、タルドスによるアルゴリズム設計

  • Art of Computer Programming Vol 1-4、Knuth著

  • Vaziraniによる近似アルゴリズム

  • ウィリアムソン、Shmoysによる近似アルゴリズムの設計

  • Motwani、Raghavanによるランダム化アルゴリズム

  • Sipserによる計算理論の紹介

  • アローラ、バラクによる計算の複雑さ

  • ギャリーとジョンソンによるコンピュータと扱いにくさ

  • Schrijverによる組み合わせ最適化

言語設計、コンパイラ、および形式的手法の技法とアルゴリズムを扱う、同僚が欲しかった他のいくつかの本は次のとおりです。

  • Pierceによる型とプログラミング言語

  • 加藤園バイエルによるモデル検査の原則

  • コンパイラ:Aho、Lam、Sethi、Ullmanによる原則、テクニック、ツール

  • コンパイラー設計ハンドブック:最適化と機械コードの生成、Srikant、Shankarによる第2版

  • ガーベッジコレクションハンドブック:ジョーンズ、ホスキング、モスによる自動メモリ管理のアート


すべてのライブラリを持っている必要があることを本:*アルゴリズムの設計ジョン・クラインバーグとエバ・タードス*導入によるマイケル・シプサー*コンピュータおよび難治によって計算理論へ:MR GareyとDSジョンソンNP完全性の理論へのAガイド
PAL GD

> * Michael Sipserによる計算理論入門これは素晴らしい本ですが、それはオートマトンと言語、文脈自由言語、チューリングマシン、複雑性理論などについての詳細です。アルゴリズムについてはあまり
重要で

1
うわー、これは幅広い質問です。セレクションの品質と適用範囲をどのように検証すると思いますか?あなたの経歴は何ですか?あなたの会社は何に取り組んでいますか?修士号または博士号を持つ人はいますか?
ラファエル

1
モデレーターへの通知:1冊の回答を投稿しないでください。また、これらの選択をする理由を説明してください。ここに$ 5kの予算があります。それをどのように使うかを説明してください!あなたは...あなたはあなたの選択をするか、さらに検討されるべきトピック、持っている必要がありますされていると思うの本をお教え
ジル「SO-停止されて悪」

あなたは主にデザイン、またはアルゴリズムの分析に興味がありますか?もしそうなら、あなたはあなたの人々に理論的な分析で有能になってもらいたいですか、それとも彼らは効率を評価するより実用的な手段に熟達しているでしょうか?
ラファエル

回答:


13

私は(ほぼ)5000ドル相当の本を読むのに十分な本を読んでいません。したがって、カバーする必要のあるいくつかの文献のグループを提案し、選択した代表者に向けてポイントを示します。私は自分でほとんどの本を完全に読んだとは言えないので、説明、ざっくりとした印象、評判にほとんど頼らなければなりません。私はそれらのほとんどをある程度調べたり、それらと一緒に作業したり、専門家に推奨されたりしました。

私はあなたが彼らに何ができないかを学ぶのではなく、何ができるか、それをどのように行うかを人々に学んでほしいと思います。特に、計算可能性と複雑さの理論に関する本はそのままにしておきます。私はあなたの人々が彼らの学部教育から関連するメッセージを取り除いたことを期待します。

  • 基本基本的に
    あなたの人々はある時点でそれらを学びましたが、彼らが基本を調べることを期待してください。ウィキペディアのようなソースは、しばしば標準以下または完全に間違っているため、適切な参照テキストを入手する必要があります。

    人気の選択肢は次のとおりです

    • アルゴリズムの紹介、Cormen、Leisersonら
      基本的な分析手法だけでなく、多くの基本的なアルゴリズムとデータ構造をカバーする非常に広範な紹介。教育目的で頻繁に使用され、その第3版で利用可能な標準テキスト(したがって、ほとんどの間違いは今までに消去されているはずです)。たくさんのエクササイズ。
    • セジウィックとウェインによるアルゴリズム
      第4版の別の標準テキスト。コーメンほど広くはありませんが、実装の詳細により注意を払っています。Courseraの無料コースを含む、オンラインの資料がたくさんあります。たくさんのエクササイズ。
    • アルゴリズムの紹介-Udi Manberによる創造的なアプローチ
      また、トピックの選択はかなりスリムですが、教訓に注意を払って提示されました。焦点は帰納的戦略にあります。いくつかの演習と解決策(または少なくともヒント)がたくさん含まれています。珍しいスタイルのために推奨される教科書が気に入らない場合に適した2次参照。
    • Graham、Knuth、Patashnikによる具体
      的な数学アルゴリズム分析に関連する離散数学について説明します。コンピュータサイエンスのニーズ厳密さを重視することはまれです。非常に高品質。解決策を伴う演習がたくさんあります。
  • O

  • 高度な調査

    • 岡崎
      クラシックによる純粋に機能的なデータ構造と基本的な文献は、手続き型パラダイムに焦点を当てていることがよくあります。機能パラダイムで作業したい場合、効率的なデータ構造のための新しい技術が必要です。この本は、地域全体の詳細な概要です。
    • ブラスによる高度なデータ構造
      時々、基本的なテクニックでは不十分な場合があります。これは、コードと多くの参照を含む、高度なデータ構造の概要です。
    • Hromkovičによる困難な問題のアルゴリズム
      複雑性理論は、(実践者として)多くの自然問題に対して正確で効率的なアルゴリズムを探す手間を省くように指示しています。これらの問題を実際に解決するためのテクニックはたくさんあります。このテキストはその方​​法を示しています。
  • 専門文献

    • コンパイラ:原則、テクニック、およびツールアホらドラゴンブック別名
      万一あなたは今までこれは、コンパイラでビルドまたはいじくり回す必要がある 領域に標準テキスト。
    • ネットワークフロー:Ahujaによる理論、アルゴリズム、およびアプリケーション
      多くの問題は、ネットワークフローの問題としてモデル化できます。この本はあなたに分野の完全な報道をします。
    • KollerとFriedmanによる確率的グラフィカルモデル
      グラフィカルモデルは、機械学習(とりわけ)を確率論的にモデリングするシナリオの主要なツールです。これは、複合体に関する包括的な概要です。関連する無料のオンラインコースがあります。
    • CharrasとLecrogによる厳密な文字列照合アルゴリズムのハンドブックと
      文字列の照合は、データを処理する際の重要な作業です。この本では、ジョブの関連するアルゴリズムのすべて(すべてではないにしても)をリストしています。これには、高レベルの説明と実装が含まれます。
    • SedgewickとFlajoletによるAnalytic Combinatorics
      同じ著者による「アルゴリズムの分析入門」の後の深い数学的ダイビング。皆のためではなく、興味のある人のための金。
    • Gusfieldによる
      文字列、ツリー、およびシーケンスのアルゴリズム(特に生物学のコンテキストで)大量の文字列データを処理する必要がある場合、これは関連するデータ構造とアルゴリズムの概要を提供するため、頼りになる本です。
  • 開業医のために

    • Mattsonらによる並列プログラミングのパターン。
      実際には、大きな問題に対処するために複数のマシンを利用したい場合があります。この本は、データとコンピューティングエージェントを整理して移動する方法を説明する、ハイレベルなサンプル駆動型の概要です。また、既存のツールでそれらを実装する方法についても説明します。
    • McGeochによる実験アルゴリズムのガイド
      理論的分析が難しすぎる、または粗すぎる場合は、実験を実行する必要があります。これは、アルゴリズムの実験を適切に設計する方法の紹介です。
    • パーによる決定的なANTLR 4リファレンスパーラーによる
      パースには、ドメイン固有の言語とツールが必要になることがよくあります。ANTLRは成熟した便利なコンパイラジェネレータであり、これを使用する方法を学ぶのに最適な本です。Parrは、DSLに関する他の書籍もチェックする価値があります。

最新の資料が必要な場合は、大学の図書館と協力して、人々にジャーナルや会議録にアクセスしてもらうことを検討してください。また、実際に彼らに関連するトピックに関する会議に参加させることもできます。あなたの会社。

また、あなたの人々に尋ねることを検討してください。彼らに彼ら自身の研究(ウェブや図書館の無料のサンプルやコピーを含む)をさせてください、そして彼らは彼らが彼らの仕事に関連すると考える本をあなたに教えます。誰も読まないものを買う意味はない。


そしてもちろん、彼らに興味深い問題を送ってください。:)
ラファエル


@Bartek:聞いたことがないので、お勧めできません。
ラファエル

4

以下は、高度なアルゴリズムに関する優れた書籍と私が考えるものに基づいた、高度なアルゴリズムに関する書籍のランダムなコレクションです。もちろん、これは私の個人的な意見に過ぎず、他にもたくさんの良い本があります。

  • Vijay V. Vaziraniによる近似アルゴリズム
  • David P. Williamson、David B. Shmoysによる近似アルゴリズムの設計
  • 計算幾何学:Ketan Mulmuleyによるランダム化アルゴリズムの紹介
  • Rajeev Motwani、Prabhakar Raghavanによるランダム化アルゴリズム
  • 文字列、ツリー、シーケンスのアルゴリズム(Dan Gusfield著)
  • ウィリアムJ.クック、ウィリアムH.カニンガム、ウィリアムR.プーリーブランク、アレクサンダーシュライバーによる組み合わせの最適化

あなたは間違いなくクラインバーグ/タードスの本を検討する必要があります。これは単なる素晴らしい教科書です。

また、特定のトピックには、分野に関する百科事典の概要を説明する「ハンドブック」があることを知っておく必要があります(たとえば、計算幾何学のハンドブック)。JRサック、J。ウルティア編集。これらのハンドブックは高価です。したがって、それらを購入すると、5kを費やすのに役立つ場合があります。


1
これは「ランダム」なコレクションだとおっしゃっています。それらの本を推薦する特別な理由はありますか?OPは残りの$ 4.5kをどうするべきですか?
ラファエル

4

会社の専門分野を指定しないため、一般的な推奨事項以上のものを提供することは容易ではありません。全体として、あなたがまとめたリストはかなり良いと思います。私はそれから何も削除しません。いくつかの追加とコメント:

1)コーメンは標準テキストです。セジウィックは別の標準テキストです。私はいつもセッジウィックからより多くを得てきましたが、YMMVです。予算があるようです。両方購入。

2) "The Garbage Collection Handbook"のコピーはありませんが、Jones&Linによる以前のガーベッジコレクションに関する調査のコピーはあります。何らかの自動化されたメモリ管理を行うつもりなら、間違いなくこれを購入するべきです。

3)あなたは、いくつかの便利なパースに関する書籍とオートマトン理論をも持っているが、あなたは、私が最も有用であることが分かってきた二冊の本(三巻)行方不明:Sippu&Soisalon-Soisinenの解析理論を、そしてディック・グルーンの、解析技術を実用ガイド。1つ目は理論の優れた概要であり、2つ目は実践の徹底的な概要です。(ぜひ、ドラゴンブックも入手してください。でも、もっとGruneを使うようになると思います。)

4)データ構造に関するすべてのライブラリには、岡崎の「Purely Functional Data Structures」のコピーが必要です。こんなにたくさんの興味深いアイデアが書かれたこの本を読んだことはないと思います。

5)Maxime Crochemoreの「Algorithms on Strings」のコピーは所有していませんが、所有していれば幸いです。非常に実用的で便利なアイデアがたくさん。

  • C ++ / Java / Cのアルゴリズム(1つ選択)、Robert Sedgewickによる第3版。2巻。Addison-Wesley、2001年。

  • Richard Jones、Antony Hosking、Eliot Mossによるガベージコレクションハンドブック。

  • Seppo SippuおよびEljas Soisalon-Soininenによる解析理論。2巻:巻。1言語と構文解析; 巻。2 LR(k)およびLL(k)解析。スプリンガー、1988年。

  • Parsing Techniques、A Practical Guide、Second Edition by Dick Grune and Ceriel JH Jacobs。スプリンガー、2008年。

  • クリス岡崎による純粋に機能的なデータ構造。ケンブリッジ、1998年。

  • Maxime Crochemore、Christophe Hancart、Thierry Lecroqによる文字列のアルゴリズム。ケンブリッジ、2007年。

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