B-tree
AVL木の一般化
AVL木は、二分木の話だったが、多分木に一般化する
つまり、多分木でかつ、回転させることで平衡木構造を保つ
visualization
insertのformに1個ずつ適当な値をinsertしていける
1ノードから最大$ m個の枝が出る時、オーダー$ mのB-treeと言う
$ \frac{\log_2{n}}{\log_2{m}} 
AVL木の場合、$ m=2
$ mを増やすことで処時間を短縮できる
分岐を増やしまくればいい #??
なんかデメリットあるの #??
増やしまくったら結局1階層になって意味ないと思うけど、南下条件があるの?
回転のコストってどんなものなの #??
図
https://gyazo.com/59e3bb0b0c5508f1a8e92f88e495f3d2
3種類のノード
ルートノード
子ノード
リーフノード
↑この3種類であることは固定
ただ、それぞれのノードの個数は変わりうる
例えば、これで、Max Degree 4にすれば、
子ノードが3つになる
上の図は、子ノードが2つずつ、リーフノードも2つずつになっている
https://nimrodshn.medium.com/writing-a-storage-engine-in-rust-writing-a-persistent-btree-part-1-916b6f3e2934
https://benjamincongdon.me/blog/2021/08/17/B-Trees-More-Than-I-Thought-Id-Want-to-Know/
Rudolf Bayer
#??
キーとか値とか言っているのがイマイチわかっていない
値そのままキーとして扱うとなにか困ることがあるのか?
関連
B+ Tree
Red-Black Tree
2-3木
2-3-4木
https://ja.wikipedia.org/wiki/B木
https://atmarkit.itmedia.co.jp/fcoding/articles/delphi/05/delphi05a.html
https://speakerdeck.com/nekonenene/b-tree-algorithm
『Modern B-Tree Techniques』