web-dev-qa-db-ja.com

BツリーとRツリーの比較-リンクされた一連のリンクされたリストだけではありませんか?

私はBツリーにかなり精通しており、主にデータベースに電気、エアコン、ハードドライブスペースを十分に供給し続ける必要があります。二重(doubl [ie、ey]?)リンクリストに関連付けます。

今日、昼食時の開発者の1人がRツリーについて言及しました。

ウィキペディアに飛び乗って読み始めました。それは背の高いBの木のようなひどい音に聞こえました。残念ながら、数学に関する深い知識がないと、同僚の何が話しているのかを理解するのが難しくなります。

誰かがBツリーとRツリーのいくつかの違いを明確にできるかどうかを期待していました。とにかくみんなに尋ねることになるでしょうが、彼らが私の質問に答えてくれる保証はありません。彼らが神について取り乱し始める可能性が高いのは、何を知っているかです。 。 。

10
surfasb

Rツリーは、bツリーの一般化と考えることができます。 bツリーが、それが含むキーの「範囲内」にO(log n)アクセスを提供する場合、Rツリーは、それが含むキーの「K次元領域」にO(log n)アクセスを提供します。

郵便番号を郡名にマップする場合は、Bツリーを使用できます。「郵便番号が60000から61000のすべての郡は何ですか?」ただし、Bツリーは「シカゴから100マイル以内にあるすべての郡は何ですか?」のようなクエリの郡名にGPS座標をマップするのには不適切です。 Rツリーは、重複する境界ボックスに従ってキーを分割するため、複数のディメンションに対してクエリを実行する必要がある場合に、キーを保存するのが自然な方法です。

ほとんどのツリー構造は、リストの構成方法(具体的には、要素の追加と削除の方法、および該当する場合はノードのリバランス方法)を無視する限り、リンクリストの形式に減らすことができます。本質的には、あるデータ構造を別のデータ構造と区別する挿入/削除/検索アルゴリズムです。

Rツリーのノードには通常、境界ボックスが含まれています。これにより、特定の場所の「近く」にあるレコードを検索する場合に必要になる可能性があるため、場所に効率的にインデックスを付けることができます。 Bツリーの要素の順序は単純です。何かが別の要素以上であるかどうかを直接比較できます。 Rツリーでは、各エントリの目的は、境界ボックスに含まれる要素を決定することです。

Bツリーを使用すると、2次メモリ(ハードディスクなど)内の注文可能なアイテムを効率的に検索できます。Rツリーを使用すると、特定のポイントまたはバウンディングボックスの「近く」にある要素を効率的に検索できます。二次記憶。

6
JasonTrue