わさび
ペンギンさん
アルゴリズムって?
アルゴリズムとは、数学、コンピューティング、言語学、あるいは関連する分野において、問題を解くための手順を定式化した形で表現したもの。
アルゴリズムと聞くと難しく思えて、身構えてしまいますが、とても単純です。
プログラム = データ + アルゴリズム
プログラムは、アルゴリズムとデータの集まりでできています!
僕は、分かりやすくするために次のように解釈しています。
問題解決の方法 = WHAT (何を) + HOW (どうやって)
例えば、「カレー」をつくりたいとします!
必要な具材は、じゃがいも、にんじん、たまねぎ、肉、カレールー…
この具材にあたるのが、WHAT (何を) 、つまり、「データ」になります!
では、この具材でどうやってカレーをつくればいいのか?
野菜を切ったり、鍋で煮込んだりします。
これが、HOW (どうやって) 、つまり「アルゴリズム」となるのです!
アルゴリズム学習の落とし穴
さて、アルゴリズム勉強しよう!となっても、簡単にはいきません…
実際に僕がアルゴリズムを勉強する過程で感じた「落とし穴」があります。
- 抽象的で難しい!
- 過程が見えない!
抽象的で難しい!
まず前提として、アルゴリズムを1から考えるのは非常に難しいです。
どうしても「仮説検証」が必要になり、抽象的になってしまうためです。
とりわけ、初心者が新しく「思いつく」ようなアルゴリズムは、すでに誰かに開発されています笑
では、「アルゴリズムを考える」とはどういうことなのでしょうか?
それは、誰かが開発した「データ構造」をいかに使用するかを考えることです!
過程が見えない!
「仮説検証」が必要と言いましたが、プログラミングとはトライ・アンド・エラーの繰り返しです。
アルゴリズムにおいては、「HOW」の部分を考えるため「途中経過」を考える必要があります。
そして、この「見えない過程」を考えることこそ、アルゴリズムの難しい部分なのです!
ペンギンさん
VisuAlgo って?
VisuAlgo は、2011年にシンガポール国立大学計算機科学学部の教授である Steven Halim によって開発された、オンライン上でデータ構造やアルゴリズムを可視化することができるサービスです。ソートなどの簡単なものから、二分探索木やグラフなど複雑なデータ構造まで網羅しており、練習問題やテストを受けることも可能である。
シンガポール国立大学の教授ということですが、ステマではありません笑
授業形式で「データ構造」の説明を見ることもできますし、それぞれの機能を自分で試すこともできるので便利で分かりやすいです!
実際、僕の教授も「とりあえず、VisuAlgo見ておいて!」と言ったりします笑
日本語化にも対応しているので、日本語で学習することも可能です!
まとめ
わさび
ペンギンさん