- ベストアンサー
データ構造についての質問です。
データ構造についての質問です。 1.平均16個の子に持つようなB木があり、その深さが3である場合,記録されている データの個数はどのくらいになるか計算しなさい。 2.B 木に利用するm 分木について,m の値を大きくすればするほど探索効率は良くなる。 正しいか,正しくないか?正しくない場合はその理由を答えなさい。 という2つの問題があります。1番は記録されているデータの個数の計算方法がわかりません。2番はmを大きくすると深さが浅くなるので効率は良くなると思うのですが合っているかわかりません。 どなたかご指導よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
1) 深さ1の場合: 平均16個 深さ2の場合: 深さ1の各子が平均16個ずつ子を持つから 16x16 深さ3の場合: 深さ2の各子が平均16個ずつ子を持つから.... 2) データ数nとすると、 m≧nで、深さ1のn分木になります。 深さ1のn分木は、n要素のリストと同じです。 B木の目的を考えれば、リスト構造と木構造のどちらが探索効率がよいか、わかるのでは無いでしょうか。 B木の平均探索回数は (各深さでの平均探索回数) * (深さ) です。 各深さの探索は、そのノードに注目すれば、要素mのリストでの探索と同じです。 深さはmを底とする対数 log_m(n) となります。 これで、式を作って、 mがk倍されたら計算量が何倍になるか、計算してみてはどうでしょうか。
その他の回答 (2)
- Tacosan
- ベストアンサー率23% (3656/15482)
2 についてだけど, 「探索効率」が何を意味するのか分かりません. いくつか想定できるんだけど, そのうちのどれなのか (あるいはいずれでもないのか) が判断できない.
1の問題 データの個数は決まっていないので最低値を計算して、その最低値以上であると回答すればよい。 深さ3のB木の接点の最低数は根(ルート)含めて3個です。根の分岐が1、その接点の分岐が1、それで平均16個のなるためには・・・ 2の問題 B木は良くハードディスクに使用されていますね。それで考えるとB木の探索はヘッドのシーク回数が少ない方が有利ということになります。mを大きくすれば木の高さは小さくなりますから、シークの回数は?