ごちゃごちゃをどう整理 洗濯した靴下をアルゴリズムで簡単に
- 2016年08月31日
ジョーダン・ダンバー、BBCニュース
面倒な作業だ。洗濯物の山から靴下のペアを見つけようとしても、絶対すぐには見つからない気がする。しかし、あるアルゴリズムを駆使すれば、靴下整理マシンのように効率的にペアを見つけられる。
ほとんどの人は靴下の片方をまず取り出してから、もう片方を探す。しかし、この方法ではあまりに時間がかかりがちだ。
靴下は1足しか持っていないなら話は簡単だ。もっとも清潔の面で問題がありそうだが。
しかし、靴下のペアが洗濯物に加わるごとに、話は面倒になる。しかも2つの側面で。まず、探さなくてはならないペアが増える。第2に、ただでさえごちゃまぜな靴下の山が大きくなる。そこから片方を探さなくてはならないのだ。
平均して靴下1足よりも、2足の方が、揃えるのに4倍時間がかかる。5足ではそれが25倍になり、100足では1万倍になる。これはコンピューター科学の専門家で、「Algorithms to Live By」(人生を支えるアルゴリズム)の共著者、ブライアン・クリスチャン教授の計算だ。
クリスチャン教授と共著者のトム・グリフィス氏は本の中で、コンピューター科学の手法が、靴下の整理も含め、日常生活のさまざまな状況を論理的かつ効率的に対応する助けになると主張している。
アルゴリズムを料理のレシピのように考えればいいというのが、両氏の提案だ。一歩一歩段階を踏んで、目的とする結果を得る。靴下の整理を例にとれば、出来上がった料理はきちんとペアになった靴下に等しい。
クリスチャン教授が勧めるアルゴリズムは、基数ソートと呼ばれるものだ。
「基数ソートの基本的な考え方は、カテゴリーで分けること。例えば色。まず全ての靴下を色で分ける。グレーの靴下、黒の靴下、白の靴下それぞれの山を作る。それから別の特徴でまた分ける。例えば長さ。少しでも前進するためには、大きな問題を分割して小さくすることが最大の近道のひとつだ。靴下の場合も、洗濯物の山をグループ分けして小さくすることで、おのずと扱いやすくなる」
基数ソートの活用で、洗濯物の山からでたらめにペアを探すよりも早くできるようになるわけだ。
けれども、もしすべて同じの黒い靴下をたくさん買えば、一気に解決するのでは?
ジム・バムステッドさんは、それにも落とし穴があるとメールで警告してくれた。
「あなたの記事で、頭のいい同僚を思い出しました。洗濯機から片方だけの靴下が出てくるのにうんざりして、持っている靴下をみんな捨てて、12足の同じ靴下を買ったんです。数週間後、彼は相変わらず『もう片方が見つからない』靴下が洗濯機から出てくるのに驚いたそうです。理由はこうです。靴下はたくさんひとまとめに色を染めるし、材料のウールが全く同じとは限らないので、色落ちは一定ではない。だから、ペアにならなくなるんです」
問題は振り出しに戻ってしまった。今度は微妙に違う色合いの中からペアを探すのだからもっと大変だ。
そしてもちろん、究極の靴下問題がある。洗濯物の整理が終わりかけた時に見つかる、もう片方がどうなったのか全く分からない靴下。どこかでスーパーコンピューターが謎に取り組んでくれてはいないだろうか。