← メディア一覧

最速検索の秘密_ハッシュ法とO(1)の仕組み

4分50秒 | アルゴリズム基礎FE

基本情報技術者試験の頻出テーマを解説した音声コンテンツです。

トランスクリプト(字幕テキスト)

さて、今回なんですけど、いただいた資料を読んで、えーまず驚いたのが、コンピューターって、例えば100万件みたいな膨大なデータの中から、 たった一つのものを本当に一瞬で見つけ出すと。これ普通に考えたらちょっとありえない早さですよね。一体どういう仕組みなんでしょうか。 資料にあった例えがすごく分かりやすくて、巨大なホテルのクローク係になったとして、大量の荷物を預かる。 で、これを持ち主に間違いなく、しかも一瞬で返すにはどうするか。この番号札っていうアイデアが、今回のテーマ「ハッシュ法」の核心なんですね。 へえ、まさにそこが今日のポイントになりますね。あの、探すっていう手間を、まあいかにゼロに近づけるか、という発想なんです。 「探すをゼロに」。そうです。データそのものから計算によって、もう直接保管場所を特定してしまう。だから、資料にもあった計算量O(1)っていう、 驚異的な速さが実現できるわけで、その仕掛けを今日は一緒に見ていきたいなと。なるほど。じゃあそのトリックの具体的な中身ですが、 まず預かるデータ、例えば田中さんという名前を、ある特別な数式に入れると。はい。これが「ハッシュ関数」。そうですね。 で、その関数が「5番」みたいに特定の数字、つまり「ハッシュ値」を弾き出す。そして、田中さんの情報は配列の5番目の棚にそのまま格納しちゃう。すごくシンプルですね。 そこが面白い点なんですよね。探す時も全く同じロジックで。あ、同じように。ええ、田中さんをもう一度そのハッシュ関数に掛ければ、また5番って返ってくる。 だから、1番から順番に棚をこう見ていく必要がなくて、1回の計算で「はい、5番の棚ですね」と直行できるわけです。 はあー、なるほど。この、データが10個でも100万個でも、探す手間が理論上は全く変わらないというのが、えーっと、計算量O(1)、オーダー1の、意味するところなんです。 だから最速なんて言われるんですね。データが1億件になっても手間は同じなんですか?それはちょっとにわかには信じ難いというか。 そうなんです。まさに魔法ですね。でも、待ってください。その特別な数式って、そんなに都合よくできてるんですかね。 例えば、別の佐藤さんってデータを同じ関数に入れたら、偶然にも同じ5番が出てしまったら、どうなるんですか?あー、素晴らしい!そこです。 5番の棚にはもう田中さんがいますよね。ええ、それこそがハッシュ法最大の課題で、資料ではこの現象を「衝突、コリジョン」と呼んでいました。 衝突、コリジョン。おっしゃる通り、同じ場所にデータが集中してしまう事故はどうしても避けられないんです。じゃあ、どうするんですか、その場合。 解決策はいくつかあって。例えば同じ5番の棚の中でデータをリストみたいに鎖状に繋げて保管したり。ふむふむ。 あるいは「5番はもう埋まってるので、代わりに空いてる6番の棚を使いましょう」みたいに、別の空きスペースを探したりします。 でも、その「別の棚を探す」っていうのは、結局そこで「探す」手間が復活しちゃいませんか?鋭い指摘ですね! 当初の「一瞬で」っていうメリットが少し薄れてしまうような。まさにその通りで。衝突が頻繁に起きれば、その分だけ探す手間が増えて、だんだん速度は落ちてしまいます。 だからこそ、この衝突をいかに減らすか。つまり、データをいかにうまくバラバラに分散させる優秀なハッシュ関数を設計できるか、 そこがエンジニアの腕の見せ所だと資料も示唆していましたよね。なるほどなるほど。全体像が見えてきました。 魔法の正体は、闇雲に探すんじゃなくて、計算で直接場所を特定するという、すごくクレーバーな仕組みだったわけですね。そういうことです。 では、今回のポイントを整理しましょうか。まず、データを特定の数値に変換する魔法の数式「ハッシュ関数」。はい。 それによって得られる、保管場所の番地とも言える「ハッシュ値」。ええ。そして、データ量に依存しない最速の証、計算量O(1)。 ただ同時に「衝突、コリジョン」という避けられない課題と、それを乗り越える工夫もセットで重要だということです。よく分かりました。 最後に、ちょっと視点を広げて考えてみませんか。資料では優秀なハッシュ関数の重要性が語られていましたけど、これを私たちの日常に当てはめてみると、結構面白いんです。 日常ですか?ええ。例えば、あなたが何か情報を整理したり、物事を思い出したりする時に使っている、自分なりの頭の中のルールや分類法。 あれって、ある種の個人的なハッシュ関数だと言えるかもしれないなと。あー、なるほど。 では、そのあなただけのルールが衝突を起こすのって、一体どんな時なんでしょうね。

このコンテンツは Web society で視聴・学習できます。