日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

RTree算法及介绍

發布時間:2023/12/2 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RTree算法及介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

空間索引是對存儲在介質上的數據位置信息的描述,用來提高系統對數據獲取的效率。GIS涉及的各種海量復雜數據存儲于外存,如果對磁盤上的數據的位置不加以記錄和組織,每查詢一個數據項都要掃描整個數據文件,則這種訪問磁盤的代價將嚴重影響系統的效率。因此索引的建立與處理至關重要。此外GIS所表現的地理數據多維性使得傳統的B樹索引不再適合,因為B樹所針對的字符、數字等傳統數據類型是在一個良序集之中,即都是在一個維度上,集合中任給兩個元素,都可以在這個維度上確定其關系只可能是大于、小于、等于三種,若對多個字段進行索引,必須指定各個字段的優先級形成一個組合字段,而地理數據的多維性,在任何方向上并不存在優先級問題,因此B樹并不能對地理數據進行有效的索引,所以需要研究特殊的能適應多維特性的空間索引方式。

1984年Guttman發表了《R樹:一種空間查詢的動態索引結構》[1]一種高度平衡樹,由中間節點和葉節點組成,實際數據對象的最小外接矩形存儲在葉節點中,中間節點通過聚集其低層節點的外接矩形形成,包含所有這些外接矩形。其后,人們在此基礎上針對不同空間運算提出了不同改進,才形成了一個繁榮的索引樹族,是目前流行的空間索引。

R樹是一種采用對象界定技術的高度平衡樹,是B?樹在?k?維空間上的自然擴展,它將空間對象按范圍劃分,每個結點都對應一個區域和一個磁盤頁,非葉結點的磁盤頁中存儲其所有子結點的區域范圍,非葉結點的所有子結點的區域都落在它的區域范圍之內;葉結點的磁盤頁中存儲其區域范圍之內的所有空間對象的外接矩形。每個結點所能擁有的子結點數目有上、下限,下限保證對磁盤空間的有效利用,上限保證每個結點對應一個磁盤頁,當插入新的結點導致某結點要求的空間大于一個磁盤頁時,該結點一分為二。R樹是一種動態索引結構,即:它的查詢可與插入或刪除同時進行,而且不需要定期地對樹結構進行重新組織。

R-Tree數據結構

(1)R-Tree是n叉樹,n稱為R-Tree的扇(fan)。

(2)每個結點對應一個矩形。

(3)葉子結點上包含了小于等于n的對象,其對應的矩為所有對象的外包矩形。

(4)非葉結點的矩形為所有子結點矩形的外包矩形。

R-tree具有以下性質:

(1)除根節點外,每個節點的項數介于最小項數m和最大項數M之間;

(2)根節點至少有兩個孩子,除非它是葉子節點;

(3)所有葉子節點位于同一層;

(4)同一節點中項,其排列沒有順序要求

R-Tree的的評價標準為:

(1)位置上相鄰的結點盡量在樹中聚集為一個父結點。

(2)同一層中各兄弟結點相交部分比例盡量小。

R樹是一種用于處理多維數據的數據結構,用來訪問二維或者更高維區域對象組成的空間數據.R樹是一棵平衡樹。樹上有兩類結點:葉子結點和非葉子結點。每一個結點由若干個索引項構成。對于葉子結點,索引項形如(Index,Obj_ID)。其中,Index表示包圍空間數據對象的最小外接矩形MBR,Obj_ID標識一個空間數據對象。對于一個非葉子結點,它的索引項形如(Index,Child_Pointer)。?Child_Pointer指向該結點的子結點。Index仍指一個矩形區域,該矩形區域包圍了子結點上所有索引項MBR的最小矩形區域。一棵R樹的如圖1所示。

R-Tree算法描述

(I)插入算法

?????基本思想:找到合適的葉子節點,插入之,若需分裂,則由下至上調整MBR值。算法如下:

?????I1:?調用ChooseLeaf來選擇一個合適的葉子節點L以容納需插入項E

?????I2:?若L中還能容納E,則加入之;否則調用SplitNode來獲取兩個節點L和LL,它們包含E和L中原有的所有項

?????I3:?調用AdjustTree,傳遞參數L,LL(若產生了分裂)

?????I4:?若節點分裂向上傳播導致根節點的分裂,則生成新的根節點。

算法ChooseLeaf:?選擇一個合適的葉子節點以放置新項E。合適的評價標準是插入E后的節點MBR面積增加度最少。

?????C1:?設N指向根結點root

?????C2:?若N是葉子節點,返回N??

?????C3:?若N不是葉子節點,讓F表示N中的一項,該項F容納E后,則N在面積上只需作面積最小擴展

?????C4:?設N指向葉子節點,則返回C2.

算法AdjustTree:?從葉子節點向根節點進行調整

?????A1:?設N=L,若L進行了分裂,則設NN=LL

?????A2:?若N為根節點,則返回

?????A3:?設P為N的雙親節點,EN為節點P中指向N的項,調整項EN的MBR

?????A4:?若NN存在,創建一個新項ENN,使其指向NN,同時計算出ENN的MBR.將ENN加入P,若不能容納則調用SplitNode產生節點P和PP,包含ENN和原來P中所有項

?????A5:?設N=P,?NN=PP,?轉至A2.

算法SplitNode:?將M+1項分成兩組,將它們加入到兩個新節點。

判斷節點分裂好壞的一個標準為:分裂后,兩個新節點對應的MBR的面積之和最小。下圖展示了節點分裂的一個例子。

一個時間復雜度為二次(Quadratic)的分裂算法如下:

??????S1:?調用PickSeeds選出兩項,將它們分別作為兩組的第一個元素;

??????S2:?若所有項都已分配完,則返回;若一組中的項如此之少,以至于將剩下的所有項添至其中才能滿足項數達到m的要求,則進行分配且返回;

??????S3:?調用PickNext選擇下一項,將其分配到某組中,該組在容納該項后,MBR只需作最小面積擴展,轉至S2.

算法PickSeeds:

??????PS1:?對每一項E1和E2,計算d=area(E1和E2合并之后的MBR)?–?area(E1)?–?area(E2);

??????PS2:選擇d值最大的一對項。

算法PickNext:

??????PN1:對每一項E,計算d1=<將E加入組1后MBR增加的面積>,同理計算d2;

??????PN2:選出d1和d2值差距最大的項。

(2)R-tree刪除算法

算法Delete(Entry?E):從R-tree中刪除項E

D1:調用FindLeaf來尋找存放E的葉子結點L?;若沒有找到則停止;

D2:從L中刪去E;

D3:調用CondenseTree,傳遞參數L?:

D4::若根結點只有一個孩子,則讓該孩子結點成為新根節點。

算法FindLeaf?(NODE??T,??Entry??E?)

FL1:若T不是葉子結點,則對于T中每一個與E相重疊的項,將該項所指的結點作參數,遞歸調用FindLeaf

FL2:若T是葉子結點,則檢查T中是否有與E相等的項,若有,則返回T

算法CondenseTree?:傳遞參數結點L?,該結點進行了刪除項的操作

CT1:設N=L?,將存儲被刪結點的集合Q置為空;

CT2:若N是根,轉至CT6;否則,設P為N的父節點,EN為P中指向N的項;

CT3:若N中的項數小于m,在P中刪除EN,并把N加入到集合Q中;

CT4:若N沒有被刪除,調整EN的MBR;

CT5:設N=P,轉向CT2;

CT6:重新插入集合Q中所有節點中的所有項,對于葉子節點中的項仍插入到葉子節點

中,但對于中間節點的項需要插入到其原來所在的那一層。


R樹主要變體

R樹最初由Guttman于1984年提出,其后,人們在此基礎上針對不同的空間操作需求提出了各種改進方案。經過二十多年的發展,不斷產生的R樹變體逐漸形成了一個枝繁葉茂的空間索引R樹家族。

1?R+樹[2]

在Guttman的工作的基礎上,許多R樹的變種被開發出來,?Sellis等提出了R+樹[10],R+樹與R樹類似,主要區別在于R+樹中兄弟結點對應的空間區域無重疊,這樣劃分空間消除了R樹因允許結點間的重疊而產生的“死區域”(一個結點內不含本結點數據的空白區域),減少了無效查詢數,從而大大提高空間索引的效率,但對于插入、刪除空間對象的操作,則由于操作要保證空間區域無重疊而效率降低。同時R+樹對跨區域的空間物體的數據的存儲是有冗余的,而且隨著數據庫中數據的增多,冗余信息會不斷增長。

2?R*樹[3]

在1990年,Beckman和Kriegel提出了最佳動態R樹的變種——R*樹[11]。R*樹和R樹一樣允許矩形的重疊,但在構造算法R*樹不僅考慮了索引空間的“面積”,而且還考慮了索引空間的重疊。該方法對結點的插入、分裂算法進行了改進,并采用“強制重新插入”的方法使樹的結構得到優化。但R*樹算法仍然不能有效地降低空間的重疊程度,尤其是在數據量較大、空間維數增加時表現的更為明顯。R*樹無法處理維數高于20的情況。

3?QR樹

QR樹利用四叉樹將空間劃分成一些子空間,在各子空間內使用許多R樹索引,從而改良索引空間的重疊。QR樹結合了四叉樹與R樹的優勢,是二者的綜合應用。實驗證明:與R樹相比,QR樹以略大(有時甚至略小)的空間開銷代價,換取了更高的性能,且索引目標數越多,QR樹的整體性能越好。

4?SS樹

SS樹對R*樹進行了改進,通過以下措施提高了最鄰近查詢的性能:用最小邊界圓代替最小邊界矩形表示區域的形狀,增強了最鄰近查詢的性能,減少將近一半存儲空間;SS樹改進了R*樹的強制重插機制。當維數增加到5是,R樹及其變種中的邊界矩形的重疊將達到90%,因此在高維情況(≧5)下,其性能將變的很差,甚至不如順序掃描。

5?X樹

X樹是線性數組和層狀的R樹的雜合體,通過引入超級結點,大大地減少了最小邊界矩形之間的重疊,提高了查詢效率。X樹用邊界圓進行索引,邊界矩形的直徑(對角線)比邊界圓大,SS樹將點分到小直徑區域。由于區域的直徑對最鄰近查詢性能的影響較大,因此SS樹的最鄰近查詢性能優于R*樹;邊界矩形的平均容積比邊界圓小,R*樹將點分到小容積區域;由于大的容積會產生較多的覆蓋,因此邊界矩形在容積方面要優于邊界圓。SR樹既采用了最小邊界圓(MBS),也采用了最小邊界矩形(MBR),相對于SS樹,減小了區域的面積,提高了區域之間的分離性,相對于R*樹,提高了鄰近查詢的性能。

參考文獻

[1]?A.?Guttman.?R-Trees:?a?dynamic?index?structure?for?spatial?searching.?In?SIGMOD?Conference,?1984.

[2]Sellis?T.?K.?,Roussopoulos?N.?,?Faloutsos?C.?.?The?R+-tree:?A?dynamic?index?for?multidimensional?objects.?In?Proceedings?of?the?13th?VLDB,?Brighton,?England,?1987,??507~?518.

[3]Beckmann?N.?,?Kriegel?H.?P.?,?Schneider?R.?,?Seeger?B.?.?The?R*-tree:?An?efficient?and?robust?access?method?for?points?and?rectangle.?In:?Proceedings?of?SIGMOD,?Atlantic?City,?New?Jersey,?1990,?322~331.

http://blog.csdn.net/jiqiren007/archive/2010/03/14/5377750.aspx

?

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的RTree算法及介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。