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

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

まなびのずかん
アルゴリズムがわかる図鑑

松浦 健一郎/司 ゆき 著
B5判、カラー、192ページ
価格 2,400円+税、出版日 2022/01/07、ISBN 978-4-297-12553-0
出版社 技術評論社
ダウンロードファイル

表紙イメージ

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


はじめに

本書は、色々なアルゴリズムを楽しく眺めわたしていただくこと、そしてコンピュータやプログラミングに親しんでいただくことを目的に執筆しました。「そろそろコンピュータが分からないとまずいぞ」という方から、「今まで使ってきたコンピュータや情報技術を分かっておきたい」という方、「プロとしてコンピュータに関わってきたけれど知識の整理や確認をしておきたい」という方までおすすめです。また、アルゴリズムやプログラミングに興味を持って、初めて学ぶための教材を探している方にもおすすめします。

本書では、アルゴリズムを学ぶ上で基礎となる事項はできるだけ網羅するよう努めました。より専門的な書籍に挑戦する前に読む第一冊目として、あるいは専門書や教科書の理解を助ける副読本としても、ご活用いただけましたら幸いです。

アルゴリズムという言葉は幅広い意味で使われますが、一般的には「問題を解くための計算法」のことです。ある問題を解くために、どのような手順で計算を行えばよいのか、という方法を示したものがアルゴリズムです。本書ではプログラミングにおいて広く使われている、代表的なアルゴリズムとデータ構造について扱います。データ構造というのは、データを記憶したり操作したりするための形式のことです。

同じ問題を解くためにも、さまざまなアルゴリズムがあります。選んだアルゴリズムが、手持ちのコンピュータ上で十分速く問題を解いてくれればよいのですが、そうも行かなかったときには、代わりとなるアルゴリズムを探すことになります。どのアルゴリズムを使えばよいのかを判定する際には、あるアルゴリズムがどれだけ効率よく問題を解けるか、に注目します。本書では、アルゴリズムの効率を見積もるための計算量という道具についても、詳しく解説しています。

本書の対象年齢としては、大人の方から小学生高学年の方までを想定しました。計算量についてだけは、中学や高校の数学を使用せざるを得ませんでしたが、できるだけイメージをつかんでいただけるように、身近な例や豊富な図解による分かりやすい説明を心がけました。頭や手を使いながら楽しく学んでいただけるように、紙と鉛筆で解く練習問題や、コンピュータを使ってプログラムを動かす練習問題も数多く載せています。

プログラムを動かす練習問題では、プログラミング言語のPython(パイソン)を使います。PythonはAI(人工知能)などのプログラミングに活用されている人気の言語であるとともに、学びやすく使いやすい言語でもあります。Windows、macOS、Linuxのいずれかが動作するパソコンをお持ちの方は、巻末で紹介するインストール方法に沿って、Pythonをインストールしてみてください。そして、実際にプログラムを書いたり動かしたりしながら本書を読み進んで、学んだアルゴリズムの働きを体験してみてください。

アルゴリズムを理解するには、身近な物を使ってアルゴリズムの手順を実行してみることも効果的です。手元にある物、例えばトランプやお菓子などを使って、アルゴリズムの手順を再現したり、人に説明したりしてみてください。写真や動画を撮影して、SNSや動画サイトなどで公開するのも面白そうです。

本書には、リス・カメ・トナカイという3種類のキャラクターが登場します。キャラクターたちは日常的に出会う色々な問題に対し、アルゴリズムやデータ構造を適用して解決しようと試みます。皆さんも一緒に、どんなアルゴリズムを使えば問題が解けるのか、どのアルゴリズムの効率がよいのか、じっくり考えてみてください。そして、あるアルゴリズムが役に立つと感じたら、キャラクターたちのように現実でも活用してみてください。アルゴリズムは学ぶだけでも楽しいものですが、本書では現実世界の問題解決にアルゴリズムを活用できればより得るところが多いと考え、各アルゴリズムについて現実的な使い道の例を示しました。

本書は数多くの図解と、キャラクターたちの会話と、そして解説から構成されています。一番易しく読めるのは図解で、次が会話、続いて解説です。もちろん全てを読んでいただくのもおすすめですが、例えば図解を読んで、余裕が出てきたら会話も読んで、さらに高度な内容が読みたくなったら解説を読む、という読み方でもお楽しみいただけます。図解については、小さなお子さんやお孫さんと一緒に楽しんでいただけるかもしれません。

大人の読者の方には、「よしよし、今までの自分の理解であっているぞ」という安心感でほっとしていただくとともに、「あれっ、実はこんなだったんだ!」という驚きや、「やった、これですっきり分かった」という喜びを味わっていただけましたら幸いです。基本を学び直す中で新しい知識にぶつかると、「これを知らずに今までやってきたことはよかったのだろうか…」と不安になることもありますが、大丈夫です。思い返してみれば、それで大きな問題が生じなかったので、あるいは問題に対処できたので、ここまでやってこられたのではないですか。知識を新しく更新して、明日はもっとスムーズに問題が解けたり、仕事ができたりすると思うと、わくわくしませんか。

「生徒や後輩に教えた知識が間違っていた!!」と気づいた場合には…次の講義から内容を改訂すれば大丈夫です。常に新しい研究成果を取り込んでいく講義には、内容の改訂がつきものです。以前に教えた相手に会ったときには、「最近、こんなことを新しく勉強し直してね…」と話せば、話題が増えてかえって旧交が温まるかもしれません。

本書をお読みいただいた後で、コンピュータがより安心で面白い存在になることを願って執筆しました。コンピュータの機能を使うときに「この機能は、こんな仕組みで実現しているんだろう」と想像がつくと安心ですし、「自分だったらどのアルゴリズムを使ってプログラムを書くかな」と考えるのも楽しいです。

コンピュータがもたらしてくれるわくわくを、皆さんと共有できたら幸いです。本書を通じて、わくわくしたこと、分かったこと、解決できたことなどを、書籍レビューなどを通じて教えていただけたら、とても嬉しいです。

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


目次

第1章 しまう - データ構造
どれを選べば楽々? - データ構造
積み上げる - スタック
早い者順に並ぶ - キュー
使うデータ構造しだいで答えを出す手間が変わる
パソコンをネジ回しで開けると見えるヒント - メモリ
メモリにそっくり!? - 配列
チャレンジ! 配列を使ったプログラム
コラム:LinuxにおけるPythonのインストール
矢印があれば移動が減る - 連結リスト
枝分かれを表現 - 木と木構造
二分木を使って式を表現する

第2章 みつける - 探索のアルゴリズム
たくさんのものから探そう! - 探索
チャレンジ! ユーザのデータをしまうプログラム
端から探そう - 線形探索法
アルゴリズムの評価はおおざっぱに - O記法
コラム:関数
チャレンジ! 線形探索法のプログラム
探しものは前に? それとも後ろに? - 二分探索法
チャレンジ! 最悪と最良のケースにおける計算量を求める
一撃で見つける - ハッシュ法
ハッシュ値が衝突したらどうする?
チャレンジ! ハッシュ法でデータを探索するプログラム

第3章 ならべる - ソートのアルゴリズム
ならべてみよう! - ソート
チャレンジ! ソートのプログラム
列のどこに入れる? - 挿入ソート
挿入ソートの計算量、最良のケース
コラム:番兵
挿入ソートの計算量、最悪のケース
最強はどれだ? - 選択ソート
選択ソートの計算量
ソート済みデータが浮かんでくる? - バブルソート
データを振り分ける - クイックソート
クイックソートの計算量、最良と最悪のケース
クイックソートの手順
安定なソートアルゴリズム
一見当たり前でも高性能 - マージソート
マージソートの手順
マージソートの計算量
マージソートの領域計算量

第4章 かくす - 暗号とセキュリティ
何を知られると解読されてしまうのか? - 暗号の基礎
鍵をどうやって渡す? - 共通鍵方式
相手に渡した鍵は知られても大丈夫 - 公開鍵方式
本当に本人? - 認証
チャレンジ! 公開鍵方式を体験

第5章 かんがえる? - 人工知能(AI)
モデルは神経細胞 - ディープラーニング
チャレンジ! ニューラルネットワークにおける計算
どれとどれが仲間? - クラスタリング

付録
付録A Pythonのインストール
付録B エラー対処法

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


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