アルゴリズムとは何か?
アルゴリズム(algorithm)というのは、コンピューターで計算を行うときの「計算方法」です。
もっと大きな意味合いでは、課題を解決するための手順や考え方です。
アルゴリズムのイメージ
例えば、料理をするとします。
その中で、カレーを作るためにある人は鍋を使う、別の人はフライパンを使う、また別の人は炊飯器でカレーを作るとします。
「僕はカレーを作る時は鍋を使います!」
「私はフライパンを使うかしら。」
「炊飯器でカレー作ります。」
使う道具は違いますが、結局カレーは完成します。
まとめ:アルゴリズムは今回の例では、カレーを作るという目的に対して、使うものを考える方法の事。
プログラミングの実際のイメージ
何となく、アルゴリズムという意味は分かりましたが、実際のプログラミングではどんな感じでしょうか?
プログラミングでアルゴリズムを考えると、例えば..
<目的> 1から10までの足した結果を出力をしたい
- アルゴリズム 1+2+・・+10で記載(根性)
- アルゴリズム sum関数を使って処理
- アルゴリズム forを使った繰り返し処理
- アルゴリズム (1+10)* 10/2と記載
書き方が色々とありそうですね!
では、上記①~③のどの書き方がいいのか?と迷う方もいるかもしれませんね。
使う場面によって変わりますが、①~③の書き方によって処理の速度は変わってきます。
以下、結果(python3でコードを記載)です。
①アルゴリズム(単純に足す) | ②アルゴリズム(sum関数) | ③アルゴリズム(forの繰り返し) | ④アルゴリズム(計算式) |
0.003164529800415039秒 | 0.00022149085998535156秒 | 0.0004582405090332031秒 | 0.003989458084106445秒 |
1番速い処理は②アルゴリズム(sum関数)ですね!
1番遅い処理は①アルゴリズム(単純に足す)でした!
想像通りだったでしょうか?
今回は1から10までの計算なため、どれでもいいかと思いますが、もっと大きな数字の足し算になると処理時間の差も大きくなるため、最適なアルゴリズムを選択することも大切になってきます。
速度を検証したコード
# ①アルゴリズム(単純に足す)
import time #timeモジュールのインポート
stratTime = time.time() #プログラムの開始時刻
test1 = 1 + 2 +3 +4 +5 + 6 + 7 + 8+ 9+ 1
print("合計数は{}".format(test1))
endTime = time.time() #プログラムの終了時刻
runTime = endTime - stratTime #処理時間
print("①アルゴリズムの結果は{}秒".format(runTime)) #処理時間を表示
# ②アルゴリズム(sum関数)
import time #timeモジュールのインポート
stratTime = time.time() #プログラムの開始時刻
test2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print("合計数は{}".format(sum(test2)))
endTime = time.time() #プログラムの終了時刻
runTime = endTime - stratTime #処理時間
print("②アルゴリズムの結果は{}秒".format(runTime)) #処理時間を表示
# ③アルゴリズム(forの繰り返し)
import time #timeモジュールのインポート
stratTime = time.time() #プログラムの開始時刻
test3 = 0 for i in range(1,11):
test3 += i
print("合計数は{}".format(test3))
endTime = time.time() #プログラムの終了時刻
runTime = endTime - stratTime #処理時間
print("③アルゴリズムの結果は{}秒".format(runTime)) #処理時間を表示
# ④アルゴリズム(計算式)
import time #timeモジュールのインポート
stratTime = time.time() #プログラムの開始時刻
test4 = (1 + 10)*10 // 2
print("合計数は{}".format(test4))
endTime = time.time() #プログラムの終了時刻
runTime = endTime - stratTime #処理時間
print("④アルゴリズムの結果は{}秒".format(runTime)) #処理時間を表示
まとめ
アルゴリズムとは幅広い意味のため、アルゴリズムのイメージが多岐にわたります!
ただ、プログラミングをする上で、アルゴリズムを知る事は大きなデータやアプリを開発する際に処理の速度をあげる事に繋がります(^ ^)
意識できると成長に繋がるかと思います。
転職する 3ステップ2020年以降はコロナもあり、在宅で働けたらと考える人も多いのではないのでしょうか?在宅の方もいれば、通勤しないといけない仕事も多いと思います。在宅の仕事を始めたいけど[…]
今日はここまで。