アルゴリズムとプログラミング

基本情報技術者試験B木とB+木」の問題

テクノロジ系アルゴリズムとプログラミング難易度:hard
データベースの索引に用いられるB+木の、B木と比べた特徴として最も適切なものはどれか。
各ノードが必ず2個の子だけを持ち、木の高さが2分探索木と同一になる
キーを葉ノードにだけ格納せず内部ノードのみに置き、葉には何も保持しない
全ての実データ(キー)を葉ノードに格納し、葉同士をポインタで連結して範囲検索を効率化する
木を用いず配列の二分探索で代替するため、挿入・削除のたびに全体を並べ替える
正解
全ての実データ(キー)を葉ノードに格納し、葉同士をポインタで連結して範囲検索を効率化する

B+木は内部ノードを探索の道標とし、実データ(キー)を全て葉ノードに置く。さらに葉同士を連結リストでつなぐため、ある範囲のキーを葉をたどって連続取得でき範囲検索に強く、正しい。

?選択肢ごとの解説

ア ×各ノードが2個の子に限られ高さが2分探索木と同じになるのは2分木の話であり、B+木は1ノードが多数の子を持つ多分岐木でディスクアクセスを減らす。
イ ×内部ノードのみにキーを置き葉に何も持たないのは説明が逆で、B+木は実データを葉に集約する。内部はキーの分岐情報のみを持つ。
ウ ○B+木は内部ノードを探索の道標とし、実データ(キー)を全て葉ノードに置く。さらに葉同士を連結リストでつなぐため、ある範囲のキーを葉をたどって連続取得でき範囲検索に強く、正しい。
エ ×木を使わず配列の二分探索で代替するのは別手法であり、挿入削除のたびに全体を並べ替える非効率も伴うためB+木の特徴ではない。

くわしく

B木は内部ノードにもデータを持つのに対し、B+木はデータを葉に集約し葉を連結する。これにより範囲検索・順次走査が葉のたどりだけで済む。多分岐により木が低くなりディスクI/O回数を抑えられる点も含め、DB索引で広く採用される。

本番での押さえどころ

試験のコツ

『B+木=データは葉に集約+葉を連結して範囲検索が速い』『多分岐で木が低い』と特徴を結びつけて覚える。

覚え方

B+木の『+』は『葉を横に連結する線が足された』と覚え、範囲スキャンが速いことに結びつける。

よくある誤り

B木とB+木のデータ格納位置を取り違える、または2分木と混同して『子は2個』と誤る例が多い。

アルゴリズムとプログラミングの他の問題

この問題を、AIの8-ways解説つきで。

基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。

無料ではじめる →

ukamiru 過去問 · 基本情報技術者試験 · fe-a3-0127

【基本情報技術者試験】B木とB+木の問題 — 解答・解説|ukamiru 過去問