笑える例え話ポインタと二分木動画ガイド
5分54秒 | アルゴリズム基礎FE
基本情報技術者試験の頻出テーマを解説した動画コンテンツです。
トランスクリプト(字幕テキスト)
破壊されたロッカーと世界最速の合コン。え?何それって感じですよね。 一見何の接点もなさそうなこの2つの物語。でもここには、コンピューターサイエンスの ちょっと恐ろしくて、でもめちゃくちゃ面白い真実が隠されてるんです。ようこそ。さあ、この謎めいた世界へ 一緒に飛び込んでみましょう!いやいや、ロッカーの鍵と100万人規模の合コンですよ。 この2つに一体どんな共通点があるんだって普通思いますよね。でも実はここには、コンピューターがもう本当に 恐ろしいほどの効率で考えるための秘密がばっちり隠されているんです。ではまず最初の物語から行きましょうか。 パート1、恐怖のロッカールーム事件です。これはですね、コンピューターのポインターっていう概念を理解するための、 ちょっとしたホラーストーリー仕立ての解説になります。さあ、まずここで基本を抑えちゃいましょう。 友達にデータを渡したい時、まあ大きく分けて2つの方法がありますよね。1つは、ノートパソコン本体を 「はい、どうぞ」って直接手渡すこと。これはシンプルです。でももう1つは、そのパソコンが入っているロッカーの鍵だけを 渡すっていうやり方。このたったこれだけの違いが、後々のすべての悲劇の始まりなんです。そして事件が起きます。 ステップ1、あなたはロッカーの鍵を、まあ良かれと思って友達に渡すわけです。ステップ2、ところがその友達、 あなたがいない間にロッカーを開けて、中のパソコンに断りもなく勝手にヘンテコなステッカーを貼りまくるんです。 そしてステップ3、あなたが戻ってきた時、そこに広がっていたのはもう衝撃の光景でした。うわー、俺のパソコンが! あんなに大事にしてたのに、なんかセンスの欠片もないピザとかドクロのステッカーだらけにされてる。 しかも僕、何もできなかったんですよ。これこそがポインターの被害者が味わう悲劇的で、でもちょっと滑稽な 無力感なんですよね。そう、あなたは物そのものじゃなくて、場所へのアクセス権を渡しちゃった。 だから中身が勝手に変えられても、もうなすすべがないんです。これがポインターの恐ろしさであり、同時にその パワフルさの源泉でもあるってことなんですね。しかもこのホラーストーリー、まだ恐ろしい続きがありんです。 恐怖その1、偽物の鍵。もし友達に渡した鍵が、実はどのドアも開かない偽物だったら? 友達は存在しないドアを開けようとして、世界がフリーズして、システム全体がドーンとクラッシュします。 これがプログラマーを震え上がらせるセグメンテーション・フォールトの正体というわけです。 恐怖その2、失われた鍵。今度は鍵をうっかり失くしちゃった。でもロッカーの中には高価なパソコンが残ったまま。 誰も開けられないし、そのロッカーは永遠に使うことができません。こんな使えないロッカーがどんどん増えていったら、 システムはメモリ不足でパニックを起こします。まさにIT世界の階段ですよね。さてさて、暗い話はもうここまで! ガラッと雰囲気を変えて、次の物語へ移りましょう。パート2、世界最速の合コン。今度は二分木っていう 超効率的なデータ構造の解説です。舞台はですね、もうとんでもなく巨大な合コン会場です。 集まった人数は?なんと100万人!あなたのミッションは、この中からたった1人の運命の相手を見つけ出すことです。 さあどうしますか?さてこのミッション、どう攻略します?まあ非効率な方法は、端から一人ずつ 「あなたが運命の人ですか?」って聞いてまわること。これじゃね、探し終わる頃にはもうおじいちゃんですよ。 でも、エリートな方法は違います。集団を一つの質問でばっさりと半分に分けてしまうんです。 じゃあそのエリートな方法だと、何回質問すればいいと思います?100万人の中ですよ。答えは信じられます? たったの20回です。信じられないですよね。まず100万人を、「身長170センチ以上の方は右へ、 それ以外の方は左へ」って分ける。はい一瞬で50万人が脱落。次に残った人たちを、「猫派は右、犬派は左」って 分ける。残り25万人。この作業をたった20回繰り返すだけで、100万人の中からたった一人の 運命の人が特定できてしまうんです。いや、ちょっと待ってください。たった20個の質問で100万人の中から 見つけちゃうんですか?それってもうロマンスの欠片もないじゃないですか。むしろなんていうか、 機械的すぎてちょっと怖い。正直ドン引きです。でもこの人間味のない圧倒的なスピードこそが、 二分探索の真骨頂なんですよね。でも、この最強に見える方法にも、ちゃんと弱点があるんです。 もし参加者の好みが偏ってて、全員が片側にずらっと並んでしまったら?この効率的な木の構造は崩れて、 ただの長蛇の列になっちゃうんですね。そうなると、せっかくのスピードの利点は完全に失われてしまうんです。 さて、破壊されたロッカーと超高速合コン、2つの物語を見てきました。ここからが最も重要なポイントです。 つまり、コンピューターサイエンスにおける力には、必ず代償が伴うということなんです。 このスライドが今回の解説のまとめですね。ポインターはすごく柔軟にアクセスできるけど、 データが勝手に書き換えられるっていうリスクがある。二分木はとんでもない検索スピードを誇るけど、 データは偏らないようにバランスを取る必要がある。どっちも効率を突き詰めるためのめちゃくちゃ強力なツールって ことなんですね。この効率性と危険性がもたらす、信じられないほどのパワー。これこそがコンピューターサイエンスの 心臓部分であり、その面白さそのものなんです。さて、皆さんだったら、この強力すぎる力を、どう使いこなしますか?
このコンテンツは Web society で視聴・学習できます。