【技術書アウトプット②】アルゴリズムを、はじめよう

甘党エンジニアのkanjiです。

技術書アウトプット第2弾。

読んだ本

読んだ理由

プログラミング学習中よく出てきた言葉、「アルゴリズム」。

しかしその言葉の意味と重要性を教えろと言われると、うっと言葉に詰まってしまう。

そんなアルゴリズムについて「最低限知っておかなければならないこと」だけを絞り込み、「1つ1つ丁寧に解説している」というもの。

これならいけるということで購入した。

内容

つまりアルゴリズムとは?

本書の中でのアルゴリズムはズバリこう書かれている、

アルゴリズムとは、問題や課題を解決するための処理手順を、もれなく表現したアイディアや考え方のこと

『アルゴリズムを、はじめよう』

もーっと凝縮し、一言でいえば「手順」のことである。

例えば「料理のレシピ」「音楽の楽譜」「家電などの取扱説明書」

これらも全てアルゴリズムが使われている。

料理のレシピを考える。

ある料理を作りたい。そう思った時、クックパッドでその料理名を検索する。
するとそこで見つかったレシピには、

・必要な食材の種類と分量
・食材の処理方法(どのような大きさや形に切る/分けるか)
・調理法(煮る、焼く、炒める、蒸すなど)
・味つけのしかた

など、手順が細かく書かれている。
この手順通りにきちんと作れば、誰でも作りたい料理が美味しく作れるという訳だ。

つまり言い方を変えれば、レシピというものは「ある料理を作りたい」という課題を解決するための手順(=アルゴリズム!)を、文章や写真を使って表現したものなのである。

アルゴリズムとプログラミング の関係

日本語も絵も通じないコンピュータに、どうすればアルゴリズムを伝えることができるか。

そこでアルゴリズムをプログラミング言語で書いたものが、「プログラム」となる。

人間が実行してもらいたい処理の手順(アルゴリズム)をプログラミング 言語で記述することで、コンピュータに指示を与える流れとなる。

プログラム作成におけるアルゴリズムの出番

開発の手順は企画→設計→プログラミング →デバッグ→ドキュメント作成である。

アルゴリズムは2つ目の「設計」段階で必要となる。

どういった機能が必要で、どんなプログラムを作る必要があるのか。

その中心となるのが、つまりアルゴリズムとなる。

アルゴリズムが固まることで、次のプログラミングフェーズに入ることができる。

なぜアルゴリズムを勉強する必要があるのか?

答えは4つあると言われている。

①いいプログラムを作るため
②プログラムの良し悪しを判断するため
③プログラム作成過程全体を効率化するため
④プログラミング技術向上のため

そしてアルゴリズムが備えておかなくてはならない条件が2つある。

それが

①正しい結果が得られること
②かならず終わること

である。

アルゴリズムには3つの基本形がある

アルゴリズムの3つの基本形
①順次構造
②選択構造
③反復(繰り返し)構造

①順次構造は、「初めから順番に処理する手順」のこと。
買い物を例えて考えると

スーパーに行く

買い物をする

家に帰る

となる。つまり上から順に実行したい処理を行っていくのが、順次構造である。

②選択構造は、「処理を選んで実行するて手順」のことである。

買い物に行って、もし買う予定だった鶏肉が売り切れていたら..。
そんな事態を想定し、あらかじめ回避する(代わりに豚肉を買う)ために使うのが、この選択構造である。

③反復構造は、「同じ処理を繰り返す手順」のことである。

もし、予算1000円で豚肉(200g/200円)を買えるだけ買うとしたら、

豚肉を1つカゴに入れる

予算800円

豚肉を1つカゴに入れる

予算600円

豚肉を1つカゴに入れる

予算400円

豚肉を1つカゴに入れる

予算200円

豚肉を1つカゴに入れる

予算0円

レジへ

というとある条件下で何度も同じ処理を行うことを反復構造と呼ぶ。

定番アルゴリズムとは?

アルゴリズムは大きく分けると、「探索」・「整列」・「数値計算」・「文字列探索」の4種類がある。

その種類ごとに基本的な処理手順を持っているものが、定番アルゴリズムと呼ばれている。

その4つの定番アルゴリズムの中からも更に細かく種類があり、それについては書いていかないが、より深掘りして知っておきたいという方には、読むと勉強になると思う。

本レビュー

この本のレビュー
ためになった
(4.0)
読みやすさ
(3.0)
難易度
(3.0)
値段
(2.0)
総合評価
(3.0)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です