序文
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
この本は誰のためにあるのか?
もしあなたがこの本を読み取っているのなら、Pythonのようなプログラミング言語の知識をすでに持っていると仮定する。もしプログラミングをしたことがないのであれば、まずプログラミング言語を学んでから戻ってくることをお勧めする!本書でPythonを使うのは、プログラマにもノン・プログラマにもアクセスしやすいからだ。
アルゴリズムは、ソフトウェア・アプリケーションで頻繁に発生する一般的な問題を解決するために設計されている。 学部生にアルゴリズムを教えるとき、私は学生の背景知識と私が教えるアルゴリズムの概念とのギャップを埋めようとする。多くの教科書には丁寧な説明が書かれているが、いつも簡潔すぎる。この教材をどのようにナビゲートするかを説明するガイドがなければ、学生はアルゴリズムを独学できないことが多い。
一段落と図P-1で、この本における私の目標を示そう。32ビット整数値や64ビット浮動小数点数のようなプリミティブな固定サイズ型を使って情報を整理する方法を説明するデータ構造をいくつか紹介する。バイナリ配列検索のようないくつかのアルゴリズムは、データ構造上で直接動作する。より複雑なアルゴリズム、特にグラフアルゴリズムは、スタックや 優先キューなど、必要に応じて紹介するいくつかの基本的な抽象データ型に依存している。これらのデータ構造は、適切なデータ構造を選択することで効率的に実装できる基本的な演算子を提供する。本書が終わるころには、様々なアルゴリズムがどのようにしてその性能を実現しているかが理解できるだろう。これらのアルゴリズムについては、Pythonでの完全な実装を示すか、効率的な実装を提供するサードパーティのPythonパッケージを紹介する。
本書で提供されている関連コードリソースをレビューすると、各章にbook.py Pythonファイルがあり、それを実行することで本書内のすべての表を再現できることがわかる。ビジネスでよく言われるように、"your mileage may vary "だが、全体的な傾向は変わらないだろう。
図 P-1. 本書の技術的内容の概要
本書の各章の終わりには、新しい知識をテストする機会を与えるチャレンジ・エクササイズがある。この本のコード・リポジトリで発見した私の解答例をレビューする前に、ぜひ自分で試してみてほしい。
コードについて
本書のコードはすべて、関連するGitHubリポジトリ(http://github.com/heineman/LearningAlgorithms)で発見できる。コードはPython 3.4以上に準拠している。関連するところでは、__str()__や__len()__ のようなダブルアンダースコアのメソッドを使う Python のベストプラクティスに準拠している。この本のコード例では、印刷されたページのコードの幅を小さくするために、2スペースのインデントを使用している。いくつかのコード・リストでは、if j == lo:
break のような省略された1行のif ステートメントを使用してコードを形式化している。
このコードでは、外部から入手可能なオープンソースのPythonライブラリを3つ使用している: ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access