見出し画像

初学者におすすめ!身近な例でよくわかる――近刊『Pythonで学ぶ アルゴリズムとデータ構造』はじめに公開

2023年3月下旬発行予定の新刊書籍、『Pythonで学ぶ アルゴリズムとデータ構造』のご紹介です。
同書の「はじめに」を、発行に先駆けて公開します。



***

はじめに
日常生活において、インターネットやスマートフォン上のアプリケーションなどの情報基盤は必要不可欠なものになっている。この情報基盤において用いられるプログラムの基礎をなすのが、本書で紹介するアルゴリズムとデータ構造である。一方、プログラムを記述するプログラミング言語として、近年非常に大きな流れとなっているのがPythonである。Pythonというプログラミング言語は、さまざまな工夫により、複雑な処理を短い行数のプログラムとして実現可能である。また、豊富な外部ライブラリを用いて、データ解析、機械学習(AI)やWebアプリケーションを容易に実現できる。そのため、Pythonに関する学習熱は年々高まっており、最近では初等プログラミング教育をPythonを用いて行う大学や高専も多くなっているようである。

しかし、プログラミング教育において、Pythonを用いることには、実は一つ大きな問題があると筆者は考えている。それは、Pythonにおいては多くの処理がライブラリとして実現されているため、内部でどのような処理が行われているかわからないブラックボックスと化してしまうという問題である。内部処理のブラックボックス化には、どのような処理か気にしなくてもプログラムにおいてその機能を利用できるという大きな利点がある一方で、実行してみなくては処理の効率(実行にかかる時間)がわからないという欠点も存在する。したがって、プログラムの高速化のためには、Pythonのブラックボックス化されたライブラリの実現方法や効率を把握し、処理に応じた効率のよいアルゴリズムとデータ構造を選択することが必要となってくる。そのため、Pythonにおいては、ほかの言語と比較して、アルゴリズムとデータ構造の重要性がさらに増しているといっても過言ではないだろう。

そこで本書では、前著「アルゴリズムとデータ構造(第2版)」の内容をもとに、Pythonを用いたプログラミングにおけるアルゴリズムとデータ構造の有用性をできるだけわかりやすく説明することを目的としている。

本書は全体として10章で構成されており、大きく四つの部分に分けられる。最初の第1章~第5章までは、アルゴリズムとデータ構造のもっとも基本的な内容を説明している。この部分はそれほど難しい内容ではないので、アルゴリズムの基礎知識としてしっかりと理解してほしい。次の第6章と第7章では、多くのアルゴリズムで用いられる代表的なアルゴリズムの設計手法を紹介している。ここで学ぶ知識は、自分でアルゴリズムを考案するときや、実際のプログラム中で用いられているアルゴリズムを理解する場合に、必ず役立つはずである。また、第8章と第9章では、グラフにおける探索や最短経路、および、文字列照合といった実用的な問題に対して、既知の効率のよいアルゴリズムを紹介している。ここで紹介されているアルゴリズムの多くは実際に用いられているものであり、実用的なアルゴリズムを知るよい機会となるだろう。最後の第10章は、問題の複雑さを説明する章となっている。この章の内容は、専門的には「計算量理論」とよばれる分野の話であり、情報系ではない学部・学科では、カリキュラムの都合上、この分野に関する講義はないことが多い。しかし、問題の複雑さは、アルゴリズムとデータ構造を勉強する人はぜひ知っておくべき概念である。そのため、本書では内容を簡単に要約して収録することとした。

なお、一般的なPythonプログラムの評価基準として、「パイソニック(Pythonic)」というものがある。この評価基準では、Pythonの機能を効果的に使った、自然でシンプルに記述されたプログラムがよいPythonプログラムであるとされている。ただし、Pythonの文法に堪能でない初心者や、ほかの言語を専門とするプログラマにとっては、パイソニックなPythonプログラムは、ぱっと見ただけではその動作が把握しづらいという欠点もある。本書では、Pythonに関する基礎知識のみでアルゴリズムとデータ構造を学ぶことができるように、アルゴリズムの記述は、可読性を重視した、どちらかというとパイソニックではないプログラムとなっている。あらかじめご了承いただきたい。

前著「アルゴリズムとデータ構造(第2版)」は、大学、短大、高専などでアルゴリズムとデータ構造を学ぶ人々に広く利用されてきた。本書も、これらの教育機関の講義において、教科書もしくは参考書となることを想定している。ただし、分量的な制約もあり、さまざまなアルゴリズムの応用やPythonプログラムの便利な機能について、説明を省略した部分も多い。本書を一読して、さらに深くアルゴリズムを学びたい人や、Pythonプログラミングに関する深い知識を身に付けたい人のために、巻末に参考文献を挙げている。興味のある方はぜひそちらを参照してほしい。

(以下略)

***


九州工業大学 藤原 暁宏(著)

Pythonプログラミングにおけるアルゴリズムとデータ構造のポイントを、身近な具体例とともにわかりやすく解説。
スタックやキューなどデータ構造の基本から、探索やソート、文字列照合などに用いる代表的なアルゴリズムの設計手法まで、プログラムの高速化・効率化のための必須知識を学べます。
 
Pythonの基礎知識さえあれば理解できるように記述されていて、初心者でも安心して読み進められます。
少しレベルの高い内容やPython特有の注意点がコラムとして紹介されており、さらなる学習への足掛かりとすることもできます。
 
本書は、多くの学校で採用されている人気のテキスト『情報工学レクチャーシリーズアルゴリズムとデータ構造(第2版)』をもとに、Pythonならではの要素を盛り込んで執筆されました。
独習用の入門書としても、大学や高専の教科書としても最適な1冊です。


【目次】
第1章 アルゴリズムの基礎
 
1.1 アルゴリズムとは
 1.2 アルゴリズムの評価基準
 1.3 計算量の漸近的評価
 1.4 Pythonの基本構文
 1.5 アルゴリズムと計算量の例
 演習問題

第2章 アルゴリズムの基本データ構造
 
2.1 配列
 2.2 連結リスト
 2.3 スタックとキュー
 演習問題

第3章 アルゴリズムにおける基本概念
 
3.1 木
 3.2 再帰
 演習問題

第4章 データの探索
 
4.1 探索の定義と簡単な探索アルゴリズム
 4.2 2分探索法
 4.3 ハッシュ法
 4.4 2分探索木
 演習問題

第5章 ソートアルゴリズム
 
5.1 ソートの定義と基本的なソートアルゴリズム
 5.2 挿入ソート
 5.3 ヒープソート
 5.4 クイックソート
 5.5 安定なソート
 演習問題

第6章 アルゴリズムの設計手法1
 
6.1 分割統治法
 6.2 グリーディ法
 6.3 動的計画法
 演習問題

第7章 アルゴリズムの設計手法2
 
7.1 バックトラック法
 7.2 分枝限定法
 演習問題

第8章 グラフアルゴリズム
 
8.1 グラフとは
 8.2 グラフを格納するデータ構造
 8.3 グラフの探索
 8.4 最短経路問題
 演習問題

第9章 文字列照合アルゴリズム
 
9.1 文字列照合とは
 9.2 基本的なアルゴリズム
 9.3 ホールスプールのアルゴリズム
 演習問題

第10章 アルゴリズムの限界
 
10.1 問題の複雑さとクラス
 10.2 クラスPとクラスNP
 10.3 問題の帰着
 10.4 NP完全問題
 演習問題

参考文献
演習問題解答
索引

この記事が気に入ったらサポートをしてみませんか?