アルゴリズム、なんだかとっつきにくいですよね。数学できないし(いや、数学とも少し違うか)。
バイナリサーチで少し子供と遊んでみました。
- アルゴリズムに興味がある人
- 子供との少し知的な遊びをしたい人
この記事を書いているGeorge(父)は、都内在住サラリーマン(妻1人子供3人)。上の子二人があまり遊んでくれなくなり寂しさ感じるこの頃。唯一遊んでくれる末っ子と戯れるのが癒しになっている普通の父親です。
\ それではいってみましょう /
おもしろい手品教えてあげる
ほげっ?!
1〜100までの数字で好きな数字をお父さんに見えないようにこの紙に書いて。7回だけ質問に答えてくれたら当ててみせよう。
おもしろそう。勝負勝負!
紙に書いたよ(”8”っと)。
質問1回目ね。50より大きい?
No!
質問2回目ね。25より大きい?
No!
質問3回目ね。12より大きい?
No!
質問4回目ね。6より大きい?
Yes!
じゃあ質問5回目ね。9より大きい?
No!
質問6回目ね。8かな?
正解!!!
すごっ!なんでなんで??
バイナリサーチ(二分探索)とはなんでしょうか
娘と遊んだこの手品は、大きい順とか、あいうえお順に整理されたリストから特定の要素を効率的に探し当てるアルゴリズム。
1から順番に数を当てにいくと最悪の場合100回の質問(=探索)が必要になりますが、このアルゴリズムを使えば、最大でもたった7回で済みます。
下は1〜11の中から4を探索する時のイメージです。
二分探索はとってもシンプルだけど、ログインする際のID、パスワードの照合や検索サービスなんかにも使われていて、世の中になくてはならないアルゴリズムだよ
ちなみに、リストの数が1024個の場合は10回、1,000,000個でも20回の探索で目当ての要素を取り出すことができます。
この遊びを中1長男ともやったのですが、小数を指定してきやがりました。
割り算を覚えたての小学校低学年くらいまでの子供と遊ぶのが良さそうです。
けけけ…
最後まで読んでくれて、ありがとうございました〜
子供がアルゴリズムに興味をもったら(そうそう持たないと思いますが…)、こちらの本がわかりやすくてオススメです。Pythonのお勉強にもなります。