Contents
そもそもアルゴリズムって何?
そもそも「アルゴリズム」って日常会話の中ではあまり使わない言葉だと思います。
一方、プログラミングの世界では頻出ワードです。
僕はSEなので意味は何となく理解しているけど、口では上手く説明できません。
調べてみると以下のように述べられています。
問題を解決するための方法や手順のこと。
アルゴリズムは流れ図(フローチャート)を用いて図式化される。
引用:コトバンク
フローチャートの一例です。
出典:パソコンスクールISA
図では「寒い」かどうかの分岐がありますが、実際には「気温20度以下」と定量的に表現することが多いです。
なぜなら、「寒い」かどうかの基準は人それぞれ異なるためです。
アパート探しや恋人選び、就職面接で活用できる最適アルゴリズムって!?
あなたはこれから3人の女性(男性)とデートすることになりました。
デートするチャンスは1度きりで、その日中に付き合うか、付き合わないか答えを出さなければなりません。(相手は必ずOKすると仮定)
あなたはどんな基準で最良の人を選びますか?
(ここでは元カノ(元カレ)と比較するのはなしとします)
・何となくいい感じだったから?
・1人目より良かったから?
・1人目や2人目より良かったから?
実は最も成功する確率が高いアルゴリズムが判明されています。
本書ではこのようなパターンを「最適停止問題」と呼んでおり、秘書の採用面接を例にこう述べられています。
ランダムに選ぶなら、最良の応募者を採用できる確率は三分の一、つまり三三パーセントだ。(中略)
すべては二人めの応募者をどうするかにかかっている。(中略)
一人めより優秀なら採用し、優秀でなければ断ることにしたらどうなるか。
応募者が三人の場合、じつはこれが考えうる最良の戦略なのだ。(中略)
この方法を使えば応募者が二人のときと同じくちょうど50パーセントの確率で最良の応募者を採用することができる。
デートの例に置き換えると、3人の女性(男性)の中で最良の相手と50%の確率で付き合う事ができます。
「一人目は必ず見送る」というのがこのアルゴリズムの特徴です。
また、このアルゴリズムでは「三七パーセントルール」という重要な要素が存在しますが、ここでは書ききれないので割愛します。
洗濯・乾燥を最短で終わらせる方法~仕事でも応用可能なスケジューリング理論
洗濯機と乾燥機の所要時間に関する最適アルゴリズム例
コインランドリーをイメージしていただけいると理解しやすいと思います。
洗濯の時間は汚れ具合によって変わるが、乾燥の時間は変わらない。
一方、乾燥の時間は洗濯物の量によって変わるが、洗濯の時間は変わらない。
同じ日に複数回洗濯する場合、最短で終わらせるにはどうしたらよいか。
答えはこのように述べられています。
所要時間が最も短い工程、すなわち洗濯または乾燥が最短の時間で完了する一回分の洗濯物をまず特定することだった。洗濯の所要時間が短いなら、その洗濯物を最初に片づける計画を立てる。乾燥時間が短いならば、その洗濯物は最後に回す。残りの洗濯物についても同じ手順を繰り返し、スケジュールの両端から中央へと並べていく。
言葉だけでは理解しづらいので、実際に数値を入れて考えてみたいと思います。
1日に洗濯を2回行うとして、それぞれ洗濯A、乾燥A、洗濯B、乾燥Bとします。
乾燥A:15分
洗濯B:25分
乾燥B:20分
①最も短い工程は「乾燥A」の15分なので、一番最後に行う
②洗濯と乾燥はセットなので、乾燥Aの直前に洗濯Aを行う
③洗濯機、乾燥機の空き時間を極力減らすように、洗濯B、乾燥Bを行う
この場合の最短所要時間は60分となります。
(AとBを逆に行った場合の所要時間は65分。)
これはあくまで一つの最適アルゴリズムの例です。
本書ではこれを仕事に応用し、
・ムーアのアルゴリズム
・処理時間順
といった複数のアルゴリズムが紹介されています。
これらを使い分けることで、状況に応じた最適な選択をすることができそうです。
最後に伝えたい事
本書は盛りだくさんの内容なので、書評では特に興味深かった点のみお伝えしました。
最後まで読み終えて、「日常生活や仕事における多くの問題には最適アルゴリズムが存在する」ことを気づかされました。
合理的な考えを重んじている方にとっては最適な本だと思います。
実践した結果はまた報告したいと思います。