LoginSignup
5
3

More than 5 years have passed since last update.

Rツリーインデックス

Posted at

はじめに

最近インデックスのお勉強をしています
インデックスは集合論に近いと聞いて、数学出身の身からすると多少の興味は湧きます
Rツリーインデックスという地図検索で使われているインデックスの勉強をしたので、備忘録としてまとめます

Rツリーインデックスとは

  • 別名空間インデックス
  • 検索した図形が他の図形に含まれているか、重なるかの判定とかに使える
  • RツリーのRは Rectangle のこと
  • 最小外接矩形という概念を用いてインデックスを構成する
    • 最小外接矩形とはある図形をちょうど囲う長方形のこと

最小外接矩形の囲い方

◯が適当な地図とします
最小外接矩形は長方形ですので、◯を四角で囲います その四角を子ノードとして扱います
スクリーンショット 2016-05-24 0.07.25.png

これを複数の画像に施して、適当な子ノードを親ノードにまとめます
まとめた親ノードを更にまとめて・・・を繰り返して、1個のルートノードにまでまとめます

3世代だとこんな感じ
最小外接矩形の最小性から、本当は親ノードと子ノードはくっついてなきゃいけないんだけど、くっついているテイで見てください
ルートノードと親ノードも同様です
ルートノード(R8)⇒親ノード(R6,R7)⇒子ノード(R1,R2,R3,R4,R5)
スクリーンショット 2016-05-24 0.10.05.png

ツリー構造を書くとこんな感じです

スクリーンショット 2016-05-24 0.22.03.png

検索

基本的にはBツリーと同じように検索します
検索する図形を黄色と赤色とする
スクリーンショット 2016-05-24 0.29.13.png

①まず黄色の場合
これはBツリーと同じように、R8⇒R6⇒R3と検索する
と言うわけではないです。
赤色探す話しを先にします

②赤色の場合
まずルートノードR8に含まれるのは明らか これはよし
次に、R6に含まれる事を確認
Bツリーならこの後子ノードを見に行きますが
RツリーはR6に含まれる事を確認しても、R7に含まれるかを確認します。
黄色を探す時も本当はR7に含まれるか確認しています(黄色はここがBツリーと違う)

各色の検索をする際に、なめたノードをツリー構造に線を引いて表現
赤色は結局全ての子ノードに含まれていないか見ています
黄色はR7に含まれていないのでR4,R5は見ていません
スクリーンショット 2016-05-24 0.34.50.png

おわり

Bツリーの話しは一切しませんでした。ごめんなさい。
ザックリと自分が理解している概念を書いているので、誤りがあったらごめんなさい。
なんでここで懺悔してるんだ・・・
図形のインデックスとかもろ集合っぽくて楽しい
インデックスが楽しいと言うか集合が楽しい
学生やってた頃が懐かしい。。
早く集合の考え方を社会に活かしたいものですね。

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3