ひぐぺん工房トップへ おかげさまで28周年!

ひぐぺん工房(松浦健一郎・司ゆき) - HigPen Works
Follow @higpenworks
・今までの仕事 ・書籍 ・最近の業務 ・対応可能言語 ・お見積

スマートな良いコードのために
Pythonで学ぶアルゴリズム入門

松浦 健一郎/司 ゆき 著
A5判、296ページ
価格 2,500円+税、出版日 2021/12/08、ISBN 978-4-7980-6459-8
対応環境 Python 3が動作するWindows、macOS、Linux等の環境
出版社 秀和システム
ダウンロードファイル

表紙イメージ 表紙イメージ

書誌情報  はじめに  目次  Q&A 


はじめに

「もっと上手にプログラムを書けるようになりたい」と考えたことはありますか。プログラミングをある程度学ぶと、もっと自由自在に、もっと良いプログラムが書けるようになれたらと、考えることが多くなります。そんなプログラマの願いを叶えるために、この本を書きました。

プログラミングの技術を磨く手段は色々ありますが、効果的な手段の一つは、データ構造とアルゴリズムを学ぶことです。アルゴリズムは問題を解くための計算方法です。問題を解くために使うデータは、データ構造に格納します。データ構造とアルゴリズムの知識は、あらゆるプログラミング言語を使うときに役立ちます。

本書では、プログラミング言語のPython(パイソン)を使って、データ構造とアルゴリズムを学びます。プログラミング言語を使いながらデータ構造とアルゴリズムを学ぶと、実際の動きを体験できるので理解が早く、実践的な技術も身につくと考えました。代表的なデータ構造とアルゴリズムを基本から学びつつ、Pythonでプログラムを書いて動かしてみます。

Pythonが提供するデータ構造やアルゴリズムについて、特性や仕組みを深く理解し、安心して使えるようになることが本書の狙いです。Pythonで既に実装されているデータ構造やアルゴリズムを再実装する(自分でプログラムを書き直す)ことはせず、活用方法を提案したり、仕組みを深く掘り下げたりすることに集中しました。本書をこういった内容にしたのは、以下のような理由からです。

本書の目的

データ構造やアルゴリズムを学ぶ方法として、古くから行われてきたのは、よく知られているデータ構造やアルゴリズムのプログラムを自分で作 成してみることでした。例えば、C言語などのプログラミング言語においては、言語が標準で提供するデータ構造やアルゴリズムが少なかったため、この方法が有効でした。作成したデータ構造やアルゴリズムのプログラムを、そのまま本格的なプログラミングに活用できたからです。

一方で、最近人気を集めているPythonなどのプログラミング言語においては、データ構造やアルゴリズムのプログラムを自分で作成することが、昔ほど有効ではなくなっています。言語が標準で提供するデータ構造やアルゴリズムが充実しており、その実装方法も洗練されているので、仮にデータ構造やアルゴリズムのプログラムを自分で作成したとしても、あくまでも練習用であり、本格的なプログラミングには言語が提供するデータ構造やアルゴリズムを利用した方が、良い結果になることが多いからです。

そこで本書では、データ構造やアルゴリズムを再実装するのではなく、プログラミング言語が提供するデータ構造やアルゴリズムの、仕組みと上手な使い方を学ぶことによって、より現代のプログラミング事情に合った知識を身につけることを狙います。データ構造やアルゴリズムを再実装するのではなく、データ構造やアルゴリズムの理論だけを学ぶのでもなく、本格的なプログラミングに活用できる実践的な技術を身につけることが、本書の目的です。

本書の構成

言語としては、AIのような研究の分野、Webのような業務の分野、そして初心者向けの学習の分野などにおいて、広く利用されているPythonを使います。Pythonは色々なデータ構造やアルゴリズムを、とても使いやすい形で提供しているため、データ構造やアルゴリズムの学習にぴったりです。もちろん、本書で学んだデータ構造やアルゴリズムの知識は、Pythonでプログラミングをするときだけではなく、他の言語でプログラミングをするときにも役立ちます。

データ構造やアルゴリズムを初めて学ぶ方も、どうかご安心ください。本書では、まず一般的なデータ構造やアルゴリズムについて、図解や簡単 な例を用いて、仕組みを平易に解説します。データ構造やアルゴリズムの効率を見積もる計算量の概念や、コンピュータのアーキテクチャ(ハードウェアの設計)との関係についても、あわせて学ぶことができます。

次に、これらのデータ構造やアルゴリズムをPythonで活用する方法を、シンプルなプログラムを実際に動かしながら紹介します。さらには、Pythonにおいてデータ構造やアルゴリズムがどのように実装されているのかを、Pythonの内部にある仕組みにまで踏み込んで説明します。Pythonをある程度学んだ方が、Pythonの特性を深く理解して、より効果的にPythonを活用するためにも役立てていただけると思います。普段使っているPythonの舞台裏で、どんな仕組みが動いているのかに興味がある方にもおすすめです。

かなり高度な内容にまで踏み込んでいる本書ですが、図解を多く取り入れ、平易に説明することで、スムーズに読み進められるような作りにしました。読み進む中で生じそうな疑問点を「この仕組みの利点は?」のように掲載したり、プログラム例を練習問題としても使える形で提示したので、ぜひ一緒に考えながら読み進んでください。苦労して内容を暗記する必要はありません。ぜひリラックスして、理解することに注力してみてください。一度仕組みを深く理解しておけば、もし内容を忘れてしまっても、必要なときに読み返せば思い出すことができます。

「もっと良いプログラムを書きたい」「もっと自信を持ってプログラムを書きたい」という目標を持つ方に、本書が役立つことを心から願っています。本書を通じて、どんなスキルが身についたか、どんな課題をクリアできたか、Pythonをどんなふうに使いこなせるようになったかといったことを、書籍レビューなどを通じてお知らせいただけたら、とても嬉しいです。

書誌情報  はじめに  目次  Q&A 


目次

01 データ構造とアルゴリズムを学ぶための準備
もっと良いプログラムを書くために
計算量はアルゴリズムの効率を表す指標
Pythonでデータ構造とアルゴリズムを学ぶ
Pythonインタプリタの対話モード
プログラムの実行時間を計測する

02 データ構造
メモリはデータを記憶する部品
配列はメモリによく似たデータ構造
スタックは最後に入れた値が最初に出てくる
キューは最初に入れた値が最初に出てくる
連結リストは要素と要素をつないで管理する
木構造は木のような形をしたデータ構造

03 Pythonのデータ構造
リストは要素の変更が可能な配列
リストの仕組み
リストに対する操作の実行時間
タプルは要素の変更が不可能な配列
タプルの仕組み
色々なデータ構造を表現する

04 探索のアルゴリズム
線形探索は先頭から順に探す
二分探索は値が大小順に並んでいるときに使う
指数探索は二分探索の前に探索範囲を絞り込む
ハッシュは目的の値を一撃で探し出す

05 Pythonにおける探索のアルゴリズム
リストやタプルにおける線形探索
集合はハッシュを使って値を保持する
集合の仕組み
辞書はハッシュを使ってキーと値の組を保持する
辞書の仕組み

06 ソートのアルゴリズム
ソートは規則に基づいて値を並べ替える
バブルソートは値が浮かび上がる
選択ソートは最小値や最大値を見つける
挿入ソートは適切な位置に値を挿入する
クイックソートは値を左右に振り分ける
マージソートはソート済みの列を併合して長くする
安定なソートは同じ値の順序を変えない

07 Pythonにおけるソートのアルゴリズム
Pythonにおけるソートの使い方
Pythonにおけるソートの仕組み
データ構造の操作に役立つ組み込み関数
データ構造の初期化に役立つ内包表記

書誌情報  はじめに  目次  Q&A 


最終更新 2022/08/02
トップページへ
©ひぐぺん工房 禁無断転載
最新刊『Java[完全]入門』 
このサイトはリンクフリーです。
このサイトはChromeで動作検証しています。ブラウザにかかわらず表示に乱れがありましたらどうぞお知らせ下さい。メールを送る