TツリーとB-/B+ツリーの定義を調べました。Web上の論文から、ディスクドライブやキャッシュメモリなどの階層メモリでBツリーのパフォーマンスが向上することがわかりました。
私が理解できないのは、フラットメモリでもTツリーが使用された理由です。
それらは、AVLツリーのスペース効率の良い代替手段として宣伝されています。
最悪の場合、Tツリーのすべてのリーフノードには1つの要素のみが含まれ、すべての内部ノードには許容される最小量が含まれます。これはほぼ満杯です。これは、割り当てられたスペースの平均で半分しか使用されないことを意味します。私が誤解しない限り、これは、Bツリーのノードが半分いっぱいになっている場合のBツリーの最悪の場合と同じ使用率です。
両方のツリーがキーをノードにローカルに格納し、ポインタを使用してレコードを参照すると仮定すると、唯一の違いは、Bツリーが各ブランチのポインタを格納する必要があることです。これにより、キーのサイズにもよりますが、通常、最大50%以下のオーバーヘッド(Tツリーに対して)が発生します。実際、これは、親ポインター、ノードに埋め込まれたレコード、レコードに埋め込まれたキーがないと仮定すると、AVLツリーで予想されるオーバーヘッドに近いものです。これは、代わりにBツリーを使用できないようにする期待される効率の向上ですか?
Tツリーは通常、AVLツリーの上に実装されます。AVLツリーはBツリーよりもバランスが取れています。これはTツリーのアプリケーションと関連付けることができますか?