1 / 12

The SR-tree: An Index Structure for High-Dimensional Nearest Neighbor Queries

The SR-tree: An Index Structure for High-Dimensional Nearest Neighbor Queries. N. Katayama, and S. Satoh, Proceedings of the 1997 International Conference on Management of Data, ACM SIGMOD, pp. 369-380, 1997. K-D-B-Tree. B+-tree に似た構造の平衡木 空間を再帰的に平面で分割 木の同じ高さにある部分木が表わす空間同士は交差しない ノードの分割が問題

alexis
Télécharger la présentation

The SR-tree: An Index Structure for High-Dimensional Nearest Neighbor Queries

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. The SR-tree: An Index Structure for High-Dimensional Nearest Neighbor Queries N. Katayama, and S. Satoh, Proceedings of the 1997 International Conference on Management of Data, ACM SIGMOD, pp. 369-380, 1997

  2. K-D-B-Tree • B+-treeに似た構造の平衡木 • 空間を再帰的に平面で分割 • 木の同じ高さにある部分木が表わす空間同士は交差しない • ノードの分割が問題 • 部分木の表わす空間が交差しないように分割を行なう • 分割時に空に近いノードができることがある • このため充填率が高くない

  3. VAMsplit R-Tree • R-Treeを最適化したもの • 木の構築法はk-d treeを基にしている • 座標軸と平行な線で空間を再帰的に分割 • R*-tree、SS-Treeよりも検索性能が良いと報告されている • あらかじめデータの特徴を調べておいてからtreeを作成 • dynamicなindexではない

  4. TV-Tree • R*-treeを改良したもの • 多次元の特徴ベクトルを主な対象としている • 一部の次元を重要視することで、空間全体の次元数を減らす • 最も重要視された軸で同じ座標値を持つ点が複数存在した場合、最も重要視する軸が変更される • 以下の2つの条件を満さなければ、TV-Treeの優位性は保たれない • 次元を重要度順に並べることができる • 軸を変更するような特徴ベクトルが存在する

  5. SS-Tree • nearest neighbor queryの性能向上のための木 • 図形の近似形状は球(2次元ならば円) • 球の中心は、球に含まれる点の重心 • 球を格納するための記憶量は、MBRのより小さい • 球 : 中心の座標値と半径 • MBR: 対角の2点 • SS-Treeのreinsertは同じノードにエントリが挿入されない限り、reinsertを繰り返す • R*-Treeでは同じ高さでは一度だけしかreinsertを行なわない • 挿入するノードの重心と最も近くに重心があるノードに挿入する

  6. SS-Treeのノードの構造 struct SSElem { SSElemPtr child_array_ptr; // Child pointer int immed_children; // Children in array int total_children // Children in subtree int height; // Height above leaf int update_count; // w/out refresh values(論文ではノードが // 5回変わる毎にradius,varianceを再計算) float radius; // of enclosing sphere(重心から最も離れた // feature vectorまでの距離以上) float variance; // Sum squared dist. float centroid[DIM]; // FVect or mean value char data[DATA_SIZE]; // Data repr. elem };

  7. SR-Tree(Sphere/Rectangle-Tree) • 最近傍点探索のためのインデックス • 対象とするデータは点データ • データをsphereとrectangleで階層的に管理

  8. Bounding Sphere vs. Rectangle • bounding sphereとbounding rectangleの体積と直径の平均の比較 • 体積 • Sphereの方が大きい • 直径(rectangleでは、rectangleの対角線の長さ) • Rectangleの方が大きい • nearest neighborでは、直径が小さい(sphere)の方が良い性能を示す • このため、SS-TreeはR*-Treeよりnearest neighborの性能が良い

  9. SR-tree ノードの構造 • leaf node • L : (E1, ... ,En) (mL<n<ML) • Ei : (p, data) • p : point • data : pのattribute • leaf以外のnode • N : (C1, ... , Cn) (mN<n<MN) • Ci : (S, R, w, child_pointer) • S : bounding sphere • R : bounding rectangle • w : Ciの子ノード以下の部分木に含まれるpointの総数 • child_pointer : 子ノードへのポインタ

  10. n xi = ∑ Ck.xi× Ck.w k=1 n ∑Ck.w k=1 insert • sphereの重心が最も近いノードに挿入 • SS-treeと同じreinsert algorithmを採用 • 挿入後のbounding sphereの中心の更新 • sphereの中心X=(x1,x2,...,xn) • Ckはk番目の子ノードを指す • Ck.wはk番目の子ノードに含まれるpointの数 子ノードに含まれるpointの数 を重みとした、子ノードの中心の平均

  11. dsの候補 drの候補 r = min(ds,dr) ds = max( ||x-Ck.x|| + Ck.r ) dr = max( MAXDIST(x,Ck.R) ) 1<k<n 1<k<n insert • 挿入後のbounding sphereの半径の更新 • Ck.Rはk番目の子ノードのbounding rectangle • Ck.rはk番目の子ノードのbounding sphereの半径 • MAXDIST(p,R)はpからR中の最も離れた位置にある点までの距離 bounding sphereは全てのpointを含む最小の円であることが望ましい

  12. ds query point dr nearest neighbor search • query pointからbounding rectangleまでの最短距離とquery pointからbounding sphereまでの最短距離の大きい方の距離を使用する • ソート、pruning strategyなどで使用 d = max(ds,dr) ds = max( 0, ||p - Ck.x|| - Ck.r ) dr = MINDIST(p, Ck.R)

More Related