データ構造とアルゴリズム

データベースやファイルシステムの索引に、二分探索木ではなくB木(B+木を含む)がよく使われる主な理由はどれか。

  1. A1つの節に多数のキーを持たせて木を低くし、節を1回読むたびに範囲を大きく絞れるので、ディスクなどのブロックの読み出し回数を減らせるから
  2. B節ごとにキーを1つしか持たないので、比較の回数が二分探索木より少なくなるから
  3. C挿入しても形を整える必要がないので、実装が二分探索木より簡単だから
答えと解説を見る

正解:A. 1つの節に多数のキーを持たせて木を低くし、節を1回読むたびに範囲を大きく絞れるので、ディスクなどのブロックの読み出し回数を減らせるから

ディスクやSSDは、1バイトでも数KBのブロック単位で読むので、読み出しの回数を減らすことが大切です。B木は1つの節(1ブロック)に数百個のキーを持たせ、節を1回読むごとに数百通りに枝分かれできるので、例えば1億件でも高さ3〜4段で目的のデータに届きます。挿入や削除で節があふれたら分割し、少なくなったら併合して、すべての葉の深さを同じに保ちます。二分探索木では1億件なら少なくとも27段ほどになり、段ごとに別のブロックを読むと遅くなります。

  • A. 正しい。枝分かれを多くして木を低くし、ブロックの読み出し回数を減らします。
  • B. 1つの節に多数のキーを持つのがB木の特徴です。
  • C. B木も節の分割や併合で形を整え、すべての葉の深さを同じに保ちます。
この分野を解く 分野ページへ

関連する計算ツール

データ構造とアルゴリズムの参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

データ構造とアルゴリズムのほかの問題

  1. 頂点が100万個、辺が300万本ほどの道路網のように、頂点の数に比べて辺の少ない(疎な)グラフをメモリに記憶する方法として適切なものはどれか。
  2. 辺に重みのないグラフで、出発点から各頂点までの最短の辺の数を求めたい。適した探索の方法と、そのとき使うデータ構造の組はどれか。
  3. 辺に向きのないグラフで、各頂点の隣の頂点が次のとおりである。A: B, C / B: A, D, E / C: A, F / D: B / E: B, F / F: C, E。頂点 A から再帰的な深さ優先探索を行う。隣の頂点はここに書いた順に調べ、まだ訪れていない頂点が見つかったらすぐにその頂点へ進む。頂点を訪れる順はどれか。
  4. 辺に向きのないグラフで、辺の重み(距離)が S−A: 4、S−B: 1、A−B: 2、A−C: 1、B−C: 5、C−T: 3、A−T: 6 である。ダイクストラ法で S から T までの最短経路を求めたとき、その経路と長さはどれか。
  5. ダイクストラ法で正しい最短経路が求められるための、グラフについての条件として正しいものはどれか。