B木 【B tree】 Bツリー

概要

B木(B tree)とは、木構造の一つで、多分木かつ平衡木(バランス木)であるようなもの。いくつかの派生構造が知られ、ファイルシステムデータベースなどでよく用いられる。

木構造は単一の根ノードを起点に「親ノードは複数の子ノードを持つことができる」という規則に従ってノードを連結したデータ構造で、根から末端の葉に至るまでに通過する階層の数を「深さ」という。

B木は親が3つ以上の任意の数の子を持つことができる「多分木」で、どの葉の深さもなるべく均等になる「平衡木」としての性質も兼ね備えている。二分木とは異なり、一つのノードに複数のキー)が登録される。

ノードはn個の子ノード(C1~Cn)と、n-1個のキー(K1~Kn-1)を持っている。nの数はノードごとに異なってよいが、最大値は決まっている。キー昇順小さい順)に整列ソート)されており、子ノードへのリンクは各キーの中間にあるとみなされる。C1はK1の左、C2はK1とK2の中間、…CnはKn-1の右といった具合である。

例えば、キーとして自然数を格納できるB木で、根ノードが3つのキー(5,10,15)と4つの子ノード(C1,C2,C3,C4)を持つとき、キー1~4はC1(およびその子孫)に、6~9はC2に、11~14はC3に、16以上はC4にそれぞれ格納される。

この木から「13」を探索したい場合、まず根ノードキー探索する。存在しないので、最も近い10と15の間にある子ノードC3をたどってそのキーを調べる。この操作を繰り返し子孫ノードに適用し、途中でキーが見つかれば探索終了となり、葉ノードまで探しても無ければ存在しないことがわかる。

を挿入するには、探索によってが存在すべきノードを確定し、キーに空きがあれば登録する。空きが無ければノードを中央のキーで2つに分割する。中央のキー親ノードに移し、その左右に分割したノードへのリンクを登録する。親のキーもいっぱいの場合は再帰的に上位のノードへ分割処理を繰り返していく。

多数のを効率よく管理できるため、記憶装置の領域(ブロック)の管理などで広く応用されている。B+木やB*木などの派生構造が考案されており、リレーショナルデータベースRDBMS)のインデックス管理やファイルシステムブロック管理などに用いられている。

(2022.5.31更新)

他の辞典による解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。
ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる