みなさんはアルゴリズムという言葉をご存知でしょうか?
「検索エンジンのアルゴリズム」や、ピタゴラスイッチの「アルゴリズム体操」という曲など、アルゴリズムはコンピュータの世界の内外で見られる言葉です。
アルゴリズムとは一体なんなのか?
「フローチャート」を使ったアルゴリズムの表現方法を中心にご紹介します。
アルゴリズムを理解すると、より質の高い仕事の進め方をできるようになりますよ!
アルゴリズムとは?
アルゴリズムとは、一言で言うと「問題を解決するための手順」のことです。
アルゴリズムの歴史は紀元前3世紀に登場した「原論」と呼ばれる数学書まで遡ります。数学はある問題に対して手順を追って計算していくものなので、アルゴリズムとの親和性は抜群です(というより、数学という広い海の中で生まれ落ちたのがアルゴリズムである、といった方がいいかもしれません)。
プログラミングの世界でもアルゴリズムは使われています、プログラミングの仕方を少し変えるだけで計算効率が大幅に上昇し、レスポンスタイムが大幅に減少するといったことがしばしば発生するからです。
Webページはクリックしてから2秒以内に画面が表示されないとユーザがページを閉じてしまうというのは有名な話で、そのような背景からアルゴリズムは今も注目を集め続けています。
アルゴリズムの3つの基本構造
「アルゴリズムは難しい...」と感じている方も多いのではと思いますが、基本構造はたった3つです。ここではアルゴリズムの3つの基本構造を、Pythonを使いながら解説します。
順次構造
順次構造とは「今の処理が終わってから次の処理に進む」という構造です。プログラミングでは基本的に上の行から下の行まで順番に処理されていきますよね。
プログラム例:
a = 1 #aに1を入れる b = 2 #bに2を入れる c = a + b #順次によりaに1、bに2が入っているので、cは3になる print(c) |
順次構造とはそういった意味を持つアルゴリズムです(つまり当たり前の話です)。
選択構造
選択構造は「ある条件によって複数の処理のうちどれかを選択して実行する」という構造です。プログラミングではif文やswitch文が該当します。
下の例は1〜10までの数値をランダムで取得し、偶数か奇数かをif文を使って出力しています。
プログラム例:
import random |
反復構造
反復構造は「ある条件を満たすまで繰り返し処理を実行し、条件を満たしたら処理を終了する」という構造です。プログラミングではfor文やwhile文が該当します。
下の例は1〜10までの数値の合計を出力しています。全ての数値を計算したタイミングで反復処理から抜け出しています。
プログラム例:
sum = 0 for i in range(1, 11): sum = sum + i print(sum) |
フローチャート(流れ図)を使ったアルゴリズムの表現
フローチャートとは物事の流れを表す図のことで、流れ図とも呼ばれます。アルゴリズムはもちろん、それ以外に業務フローやシステムの動作の流れを図示したい場合にも使われています。
ここでは先ほどpythonで記述したコードをフローチャートにしながら、アルゴリズムをフローチャートによって表現する方法を解説します。
順次構造
順次構造は長方形で表現します。
長方形の中にどんな処理をするのかを記述し、各処理を矢印で繋げることで順次構造を表現します。プログラミングは上から下に流れるので、矢印の向きも基本は下に向けた方が分かりやすくなります。
選択構造
選択構造はひし形で表現します。
選択構造では分岐する条件をひし形の中に書き込みます。その下に条件がTrueの場合とFalseの場合の処理を記述します。
反復構造
反復構造は台形のような形をした六角形の図形で表現します。
反復構造の終了は逆向きの六角形で表し、その間に反復内の処理内容を記述します。
あっちむいてホイをフローチャートで表してみよう!
これだけだと味気ないので、最後にあっちむいてホイをフローチャートで表現してみましょう。まずルールをざっくりと箇条書きにするとフローチャートにしやすいです。早速やってみましょう。
1. じゃんけんする 2. 勝つ or 負ける or あいこ a. [勝つ]あっちむいてホイする i. 同じ方向? 1. [はい]勝利! 2. [いいえ]もう一度じゃんけん b. [負ける]あっちむいてホイされる i. 同じ方向? 1. [はい]敗北... 2. [いいえ]もう一度じゃんけん c. [あいこ]もう一度じゃんけん |
だいたいこんな感じになると思います。これをフローチャートにまとめると下図のようになります。開始位置は「start」と記述されている丸いところです。
結構複雑に見えるかもしれませんが、あっちむいてホイをフローチャートにするとこのようになります。アルゴリズムの基本的な3つの構造だけで、しっかりとフローチャートが描けているのが分かると思います。
フローチャートの基本は先ほど解説した3つですが、それ以外にも情報量を増やすための補助的な図も用意されています。
まとめ:アルゴリズム、フローチャートは生活のあちこちに
ここまでアルゴリズム、そしてフローチャートについて解説してきましたが、一点言いたいことは「アルゴリズムはよく分からない遠い世界の話ではない」ということです。
上記であっちむいてホイをアルゴリズムとフローチャートの解説に使用したのは、アルゴリズムは決して良くわからない難しいものではなく、身近なところにたくさんあるものなんですよ、ということを伝えたかったからです。
仕事でも家事でも、何らかの問題を解決しているときは、必ず独自のアルゴリズムによって人は動いています。アルゴリズムをよく知ることで、より効率良く作業ができるようになるかもしれませんよ。
- カテゴリ: