本書は、初心者にも扱いやすいプログラミング言語「Python」を使用して、
アルゴリズムの基礎・考え方を学ぶ入門書です。特にPythonがはじめてという方の
ために、第1章ではPythonの基本とデータ構造について解説しています。
本書では、プログラミング入門者が最低限知っておきたいアルゴリズムの
基礎と考え方に加えて、アルゴリズムの定石とその計算量について、具体的
なサンプルコードと動作イメージを交えて丁寧に解説していきます。
【こんな方におすすめ】
・アルゴリズムをゼロから学びたい
・Pythonでプログラミングを学んでいるけれど何から手をつけていいのかわからない
・過去にアルゴリズムを学ぼうと思ったけれどPythonの資料が少なかった
・基本情報技術者試験でPythonが取り入れられるので勉強したい
【本書の特徴】
・Pythonの基本とアルゴリズムの基礎を一冊で学べる
・具体的なサンプルコードと動作イメージ(フローチャート)を交えて解説
・自分で書いて実行して動作を試しながら学習できる
・アルゴリズムの使い方や考え方だけでなく、アルゴリズムの計算量について
の理解も深まる
【扱うアルゴリズム】
FizzBuzz|フィボナッチ数列|線形探索|二分探索|幅優先探索|
深さ優先探索|番兵|8クイーン問題|n-クイーン問題|ハノイの塔|
ミニマックス法|選択ソート|挿入ソート|バブルソート|ヒープソート|
マージソート|クイックソート|最短経路問題|ベルマン・フォード法|
ダイクストラ法|A*アルゴリズム|文字列探索の力任せ法|Boyer-Moore法|
逆ポーランド記法|ユークリッドの互除法
【章構成】
■第1章 Pythonの基本とデータ構造を知る
■第2章 基本的なプログラムを作ってみる
■第3章 計算量について学ぶ
■第4章 いろいろな探索方法を学ぶ
■第5章 データの並べ替えにかかる時間を比べる
■第6章 実務に役立つアルゴリズムを知る
■Appendix Pythonのインストール
第1章 Pythonの基本とデータ構造を知る
1.1 プログラミング言語の選択
1.2 プログラミング言語Pythonの概要
1.3 四則演算と優先順位
1.4 変数と代入、リスト、タプル
1.5 文字と文字列
1.6 条件分岐と繰り返し
1.7 リスト内包表記
1.8 関数とクラス
理解度Check!
第2章 基本的なプログラムを作ってみる
2.1 フローチャートを描く
2.2 FizzBuzzを実装する
2.3 自動販売機でお釣りを計算する
2.4 基数を変換する
2.5 素数を判定する
2.6 フィボナッチ数列を作る
理解度Check!
第3章 計算量について学ぶ
3.1 計算コストと実行時間、時間計算量
3.2 データ構造による計算量の違い
3.3 アルゴリズムの計算量と問題の計算量
理解度Check!
第4章 いろいろな探索方法を学ぶ
4.1 線形探索
4.2 二分探索
4.3 木構造での探索
4.4 さまざまな例を実装する
理解度Check!
第5章 データの並べ替えにかかる時間を比べる
5.1 身近な場面でも使われる「並べ替え」とは?
5.2 選択ソート
5.3 挿入ソート
5.4 バブルソート
5.5 ヒープソート
5.6 マージソート
5.7 クイックソート
5.8 処理速度を比較する
理解度Check!
第6章 実務に役立つアルゴリズムを知る
6.1 最短経路問題とは?
6.2 ベルマン・フォード法
6.3 ダイクストラ法
6.4 A*アルゴリズム
6.5 文字列探索の力任せ法
6.6 Boyer-Moore法
6.7 逆ポーランド記法
6.8 ユークリッドの互除法
理解度Check!
付録A Pythonのインストール
A.1 Pythonの処理系を知る
A.2 AnacondaでPythonをインストールする
A.3 複数のバージョンのPythonを切り替える
A.4 パッケージのインストールと削除
A.5 インストールがエラーになった場合
付録B 理解度Check!の解答
翔 さん
2020-05-03
競技プログラミングを始めて、アルゴリズムを知らないと戦えないため購入。 勉強を兼ねてPythonで参加しているため、すごくマッチしていた。 問題はアルゴリズム自体を理解するための労力が普段の仕事以上なのと、一周したけど理解しきれたと思えない現状だけど、それは自分の問題なので何度か読み直す必要があるかなーと。 当てはまりそうなものを見つけたら適宜読み直すのもいいかもしれない。
えんど さん
atcoder用に。簡単なアルゴリズムでも実装思いつかなかったりなかなか面白かった。普通に実装する分にはライブラリあるからほとんど使う必要のないもの多いけど頭の体操にはよかった
の さん
2021-04-02
基礎を実装で学ぶ。