プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

データ構造の仮想ツリーでのスプレー


仮想ツリーでは、一部のエッジは実線として扱われ、一部は破線として扱われます。通常のスプレイは、堅い木でのみ実行されます。仮想ツリーのノードyで表示するには、次の方法を実装します。

アルゴリズムは、パスごとに1回ずつ、ツリーを3回調べ、それを変更します。最初のパスでは、ノードyから開始して、ソリッドツリーのみでスプレイすることにより、yからツリー全体のルートへのパスが破線になります。このパスは、スプライシングによって確実に作成されます。ノードyでの最後のスプレイにより、yがツリーのルートになります。非公式ではありませんが、アルゴリズムは次のように説明されています

Splay(y)のアルゴリズム

パス1 仮想ツリーを上に移動しますが、スプレイはソリッドサブツリー内でのみ実行されます。このパスの終わりに、yからルートへのパスが破線になります。

パス2 ノードyから上に移動し、yの適切な祖先ごとにスプライシングします。このステップの終わりに、yからルートへのパスが実線になります。ただし、元のツリー(パス1の前のツリー)のノードyとそのすべての子は、左の子になります。

パス3 ノードyからルートまで歩き、通常の方法で広がります。

これにより、事前の知識を利用して確率推定を改善できます。与えられた葉のセットに対して。したがって、目標は、外部パスの重みが最小のツリーを構築することです。

以下に例を示します

文字頻度表

レター z k m c u d l e
頻度 2 7 24 32 37 42 42 120

ハフマンコード

レター 頻度 コード ビット
e 120 0 1
d 42 101 3
l 42 110 3
u 37 37100 3
c 32 1110 4
m 24 11111 5
k 7 111101 6
z 2 111100 6

ハフマンツリー(上記の例)を以下に示します

データ構造の仮想ツリーでのスプレー


  1. データ構造のBSPツリー

    コンピュータサイエンスでは、超平面をパーティションとして実装することにより、空間を2つの凸集合に再帰的に分割するために、バイナリ空間分割(BSP)と呼ばれる方法が実装されています。この細分化のプロセスにより、BSPツリーと呼ばれるツリーデータ構造の形式で領域内のオブジェクトが表現されます。 バイナリ空間分割は、1969年に3Dコンピュータグラフィックスのコンテキストで発明されました。BSPツリーの構造により、レンダリングに役立つシーン内のオブジェクトに関する空間情報が可能になります。たとえば、オブジェクトは前から後ろに並べられます。すばやくアクセスできるように、特定の場所にいる視聴者を尊重し

  2. データ構造の範囲ツリー

    範囲ツリーは、ポイントのリストを保持するための順序付けられたツリーデータ構造として定義されます。これにより、特定の範囲内のすべてのポイントを効率的に取得でき、通常は2次元以上で実装されます。 O(log d のクエリ時間が速いことを除いて、kdツリーと同じです。 n + k)が、O(n log d-1 のストレージが悪い n)、dはスペースの次元を示し、nはツリー内のポイントの数を示し、kは特定のクエリで取得されたポイントの数を示します。範囲ツリーは、間隔ツリーで区別できます。ポイントを格納して特定の範囲内のポイントを効率的に取得できるようにする代わりに、間隔ツリーは間隔を保存し、特定のポ