私はDBMSでBツリーとB+ツリーを学びました。nが特定のツリーに対して修正されているのに、ツリー内の非リーフノードが[n/2]からn個の子を持つ理由がわかりません。
何故ですか?そしてその利点は?
ありがとう !
私はDBMSでBツリーとB+ツリーを学びました。nが特定のツリーに対して修正されているのに、ツリー内の非リーフノードが[n/2]からn個の子を持つ理由がわかりません。
何故ですか?そしてその利点は?
ありがとう !
これは、B+ ツリーと B ツリーのバランスを取る機能であり、そのおかげで、ツリー上の操作の複雑さを簡単に計算し、それを O(logn) [ここで、n はデータセット内の要素の数です] にバインドできます。 ]。
小さな修正: すべての非リーフ ノード (ルートを除く) には、B/2 から B の子があります。ルートだけでは、B/2 未満の息子を持つことができます。
この構造の基本的な前提は、ブロック サイズが固定されていることです。これが、各内部ブロックにn
その子にインデックスを付けるためのスロットがある理由です。
満杯の (正確に子を持つ) ブロックに子を追加する必要がある場合n
、ブロックは 2 つのブロックに分割され、親のインデックス内の元のブロックが置き換えられます。2 つのブロックのそれぞれの子の数は明らかにn div 2
(偶数であると仮定n
)。これが下限の由来です。
親がいっぱいの場合、操作はルート自体まで繰り返される可能性があります。
分割操作とn/2
-filled ブロックの許可により、ほとんどの挿入/削除は、ツリーの巨大な部分を再調整するのではなく、局所的な変更のみを引き起こすことができます。