ホーム > データベーススペシャリスト試験 > 2016年
データベーススペシャリスト試験 2016年 午前2 問02
k次のB木構造において, ルートノードはi個(1≦i≦2k)のレコードをもち, ルート以外のノードはj個(k≦j≦2k)のレコードをもつものとする。ルートノードを1段目とした場合, B木は1段目からn段目までに最大何レコードを格納することができるか。ここで, k, nは自然数とし, n≧2とする。
ア:
イ:(正解)
ウ:
エ:
解説
k次のB木構造における最大レコード数の計算【午前2 解説】
要点まとめ
- 結論:B木の最大レコード数はルートを含む全段のノード数の合計で決まり、答えは です。
- 根拠:ルートノードは最大 個のレコードを持ち、子ノード数は最大 個。各段でノード数が 倍に増えるため、全段の合計は等比数列の和となります。
- 差がつくポイント:ルートノードのレコード数の範囲と子ノード数の関係を正確に理解し、段数ごとのノード数の増加を正しく計算できるかが重要です。
正解の理由
B木の定義により、
- ルートノードは最大 個のレコードを持ち、子ノード数は最大 個です。
- ルート以外のノードは最大 個のレコードを持ちます。
1段目(ルート)は1ノードで最大 レコード、2段目は最大 ノード、3段目は ノード…と増加します。
したがって、 段目までの最大ノード数は
各ノードが最大 個のレコードを持つため、最大レコード数は
よって、選択肢イが正解です。
よくある誤解
ルートノードのレコード数を他のノードと同じ範囲で考えたり、子ノード数を と誤認することが多いです。これにより計算がずれてしまいます。
解法ステップ
- ルートノードの最大レコード数と子ノード数を確認する( と )。
- 各段のノード数が 倍で増えることを理解する。
- 段目までのノード数の合計を等比数列の和で計算する。
- 各ノードの最大レコード数 を掛けて最大レコード数を求める。
- 計算結果を選択肢と照合し、正解を選ぶ。
選択肢別の誤答解説
- ア:
→ ノード数の合計を1段目から数えず、段数を1つ少なく計算している。 - イ:
→ 正解。全段のノード数合計に最大レコード数を正しく掛けた結果。 - ウ:
→ ルートノードのレコード数を2と誤認し、段数の指数もずれている。 - エ:
→ ルートノードのレコード数を2と誤認し、指数は正しいが掛け算が誤り。
補足コラム
B木はデータベースやファイルシステムで広く使われる平衡木構造で、ノードのレコード数と子ノード数に制約があります。これにより検索や挿入・削除の効率が保証されます。今回の問題はB木の構造理解と数列計算の応用力を問う典型問題です。
FAQ
Q: なぜ子ノード数は になるのですか?
A: ノードのレコード数が最大 個であるため、子ノード数はレコード間の区切り数+1で 個となります。
A: ノードのレコード数が最大 個であるため、子ノード数はレコード間の区切り数+1で 個となります。
Q: ルートノードのレコード数が他のノードと異なる理由は?
A: ルートノードは特別に1個以上 以下のレコードを持ち、他のノードは最低 個以上のレコードを持つため、条件が異なります。
A: ルートノードは特別に1個以上 以下のレコードを持ち、他のノードは最低 個以上のレコードを持つため、条件が異なります。
関連キーワード: B木, 平衡木, データ構造, 等比数列, 木構造, 最大レコード数, 検索効率