アルゴリズムを日常生活に応用できるか?
「なっとく!アルゴリズム」は私のような文系プログラマにとってアルゴリズムをやさしい話し言葉で解説してくれる類まれな良書である。
こうしたアルゴリズムを学んだあとは、実社会の課題に直面したとき、どういうアルゴリズムを引っ張り出してきて、適用できるかを考える力を養う必要があり、それができないと、あまり学んだ意味がないと思うのである。
そうした訓練を自分なりにこの場でやってみようと思うのである。
k近傍法を用いた、家庭献立生成プログラム
子供たちが残さずに食べてくれて、栄養バランスも良い献立を自動で一週間分組んでくれる。もちろんそのためには、日々のデータ収集(日付、天気、朝・昼・晩、献立、残した・残さない)が欠かせない。
動的計画法(ナップザック問題)を応用した予算案生成プログラム
必要な経費と、それにかかる費用から、一か月の予算内で、最も効率の良い予算案を教えてくれる。
グラフを使ったディズニーランドを効率よく楽しむプログラム
予め行きたいアトラクションと優先度を入力すると、アトラクションの混雑度、アトラクション間の距離などから最も効率よいアトラクション巡回ルートを教えてくれる。
気付き:diffについて
一般にdiffを取るために動的計画法が使われているというけど、単に差分があるか、無いかだけの判定で良いのなら、SHAを使ったハッシュ値でdiffを取る、のほうがお手軽ですね。
gitのdiffも、バイナリデータについてはこの方法で管理しているのかもしれないですね。
終わりに
いざ、考えてみると、学んだアルゴリズムを応用して、実生活を豊かにするアイデアをひねり出すというのは難しいなと感じました。
稚拙なアイデアであるとか、すでに存在するようなアイデアしか出てこないものです。
もっともっと、できれば毎日、30分ずつでも、考えることが重要なのかなと思いました。
読んで頂いて、ありがとうございました よろしければ、いいねやオススメ、サポート等を頂けると、次の記事を書く励みになります! ぜひ、よろしくお願いいたします