3

Guttman の元の論文に基づいて R ツリーの実装を書いています。マウスで移動/サイズ変更できる画面上の多くの長方形を含む、私が書いているプログラムにRツリーを使用することを考えていました。

特定の四角形にある四角形のみを効率的に選択して描画したい (100 以上のアイテムを反復して境界が交差するかどうかを確認する代わりに)。Guttman の論文を数回読んだ後に私が見つけた問題は、2D オブジェクトの z オーダーを維持できないことです。

たとえば、オブジェクトを移動すると、削除されてから再挿入されます。再挿入すると、挿入先のノードは適切な順序を追跡できなくなります。私が見た R ツリーのほとんどの実装では、配列を使用し、空の位置を見つけるだけです。再挿入すると、基本的に z オーダーの配置が破棄されます。

したがって、長方形と交差するすべての長方形を描画しようとすると、それらが返される順序は必ずしも正しいとは限りません。

この仮定は間違っていますか?配列を使用する代わりに、AVL または Red-Black ツリーを使用し、Comparerz-index で比較する a を使用してツリーに挿入できると考えていました。このように、z オーダーは常に維持されます (これが最も重要な要素です)。

返却時に仕分けも考えていたのですが、こちらの方が高くつくのではないかと思っています。

4

1 に答える 1

2

R-tree は何らかの理由で回答レコードを順序付けすることを想定していません。

答えを並べ替えるだけです。遅すぎません。

ところで、私の r-tree コードを郵送できます。それは私にとってはうまくいきますが、GuttmanまたはBeckmanが彼らの論文に書いたものかどうかを誰かがチェックしてくれると非常に便利です...

空間インデックスの順序は、厳密な順序とは本質的に異なります...空間インデックスと単なるB +ツリーの違いです。

2 つのインデックスを作成して結合することもできます。インデックスが必要だと本当に確信していますか? 何か動作が遅い?

于 2010-08-26T18:43:49.200 に答える