k-d樹(shù)(k-dimensional樹(shù)的簡(jiǎn)稱),是一種分割k維數(shù)據(jù)空間的數(shù)據(jù)結(jié)構(gòu)。主要應(yīng)用于多維空間關(guān)鍵數(shù)據(jù)的搜索(如:范圍搜索和最近鄰搜索)。K-D樹(shù)是二進(jìn)制空間分割樹(shù)的特殊的情況。
| 外文名稱 | k-dimensional樹(shù) | 簡(jiǎn)稱 | kd-tree |
|---|---|---|---|
| 屬于 | 分割k維數(shù)據(jù)空間的數(shù)據(jù)結(jié)構(gòu) | 用于 | 多維空間關(guān)鍵數(shù)據(jù)的搜索 |
kd-tree構(gòu)建算法
k-d樹(shù)是一個(gè)二叉樹(shù),每個(gè)節(jié)點(diǎn)表示一個(gè)空間范圍。表1給出的是k-d樹(shù)每個(gè)節(jié)點(diǎn)中主要包含的數(shù)據(jù)結(jié)構(gòu)。
表1 k-d樹(shù)中每個(gè)節(jié)點(diǎn)的數(shù)據(jù)類型
域名 | 數(shù)據(jù)類型 | 描述 |
Node-data | 數(shù)據(jù)矢量 | 數(shù)據(jù)集中某個(gè)數(shù)據(jù)點(diǎn),是n維矢量(這里也就是k維) |
Range | 空間矢量 | 該節(jié)點(diǎn)所代表的空間范圍 |
split | 整數(shù) | 垂直于分割超平面的方向軸序號(hào) |
Left | k-d樹(shù) | 由位于該節(jié)點(diǎn)分割超平面左子空間內(nèi)所有數(shù)據(jù)點(diǎn)所構(gòu)成的k-d樹(shù) |
Right | k-d樹(shù) | 由位于該節(jié)點(diǎn)分割超平面右子空間內(nèi)所有數(shù)據(jù)點(diǎn)所構(gòu)成的k-d樹(shù) |
parent | k-d樹(shù) | 父節(jié)點(diǎn) |
從上面對(duì)k-d樹(shù)節(jié)點(diǎn)的數(shù)據(jù)類型的描述可以看出構(gòu)建k-d樹(shù)是一個(gè)逐級(jí)展開(kāi)的遞歸過(guò)程。表2給出的是構(gòu)建k-d樹(shù)的偽碼。
表2 構(gòu)建k-d樹(shù)的偽碼
算法:構(gòu)建k-d樹(shù)(createKDTree) |
輸入:數(shù)據(jù)點(diǎn)集Data-set和其所在的空間Range |
輸出:Kd,類型為k-d tree |
1.If Data-set為空,則返回空的k-d tree |
2.調(diào)用節(jié)點(diǎn)生成程序: (1)確定split域:對(duì)于所有描述子數(shù)據(jù)(特征矢量),統(tǒng)計(jì)它們?cè)诿總€(gè)維上的數(shù)據(jù)方差。以SURF特征為例,描述子為64維,可計(jì)算64個(gè)方差。挑選出最大值,對(duì)應(yīng)的維就是split域的值。數(shù)據(jù)方差大表明沿該坐標(biāo)軸方向上的數(shù)據(jù)分散得比較開(kāi),在這個(gè)方向上進(jìn)行數(shù)據(jù)分割有較好的分辨率; (2)確定Node-data域:數(shù)據(jù)點(diǎn)集Data-set按其第split域的值排序。位于正中間的那個(gè)數(shù)據(jù)點(diǎn)被選為Node-data。此時(shí)新的Data-set' = Data-set\Node-data(除去其中Node-data這一點(diǎn))。 |
3.dataleft = {d屬于Data-set' && d[split] ≤ Node-data[split]} Left_Range = {Range && dataleft} dataright = {d屬于Data-set' && d[split] > Node-data[split]} Right_Range = {Range && dataright} |
4.left = 由(dataleft,Left_Range)建立的k-d tree,即遞歸調(diào)用createKDTree(dataleft,Left_ Range)。并設(shè)置left的parent域?yàn)镵d; right = 由(dataright,Right_Range)建立的k-d tree,即調(diào)用createKDTree(dataright,Right_ Range)。并設(shè)置right的parent域?yàn)镵d。 |
以上述舉的實(shí)例來(lái)看,過(guò)程如下:
由于此例簡(jiǎn)單,數(shù)據(jù)維度只有2維,所以可以簡(jiǎn)單地給x,y兩個(gè)方向軸編號(hào)為0,1,也即split={0,1}。
(1)確定split域的首先該取的值。分別計(jì)算x,y方向上數(shù)據(jù)的方差得知x方向上的方差最大,所以split域值首先取0,也就是x軸方向;
(2)確定Node-data的域值。根據(jù)x軸方向的值2,5,9,4,8,7排序選出中值為7,所以Node-data = (7,2)。這樣,該節(jié)點(diǎn)的分割超平面就是通過(guò)(7,2)并垂直于split = 0(x軸)的直線x = 7;
(3)確定左子空間和右子空間。分割超平面x = 7將整個(gè)空間分為兩部分,如圖2所示。x < = 7的部分為左子空間,包含3個(gè)節(jié)點(diǎn){(2,3),(5,4),(4,7)};另一部分為右子空間,包含2個(gè)節(jié)點(diǎn){(9,6),(8,1)}。
如算法所述,k-d樹(shù)的構(gòu)建是一個(gè)遞歸的過(guò)程。然后對(duì)左子空間和右子空間內(nèi)的數(shù)據(jù)重復(fù)根節(jié)點(diǎn)的過(guò)程就可以得到下一級(jí)子節(jié)點(diǎn)(5,4)和(9,6)(也就是左右子空間的'根'節(jié)點(diǎn)),同時(shí)將空間和數(shù)據(jù)集進(jìn)一步細(xì)分。如此反復(fù)直到空間中只包含一個(gè)數(shù)據(jù)點(diǎn),如圖1所示。最后生成的k-d樹(shù)如圖3所示。
kd-tree查找算法
在k-d樹(shù)中進(jìn)行數(shù)據(jù)的查找也是特征匹配的重要環(huán)節(jié),其目的是檢索在k-d樹(shù)中與查詢點(diǎn)距離最近的數(shù)據(jù)點(diǎn)。這里先以一個(gè)簡(jiǎn)單的實(shí)例來(lái)描述最鄰近查找的基本思路。
星號(hào)表示要查詢的點(diǎn)(2.1,3.1)。通過(guò)二叉搜索,順著搜索路徑很快就能找到最鄰近的近似點(diǎn),也就是葉子節(jié)點(diǎn)(2,3)。而找到的葉子節(jié)點(diǎn)并不一定就是最鄰近的,最鄰近肯定距離查詢點(diǎn)更近,應(yīng)該位于以查詢點(diǎn)為圓心且通過(guò)葉子節(jié)點(diǎn)的圓域內(nèi)。為了找到真正的最近鄰,還需要進(jìn)行'回溯'操作:算法沿搜索路徑反向查找是否有距離查詢點(diǎn)更近的數(shù)據(jù)點(diǎn)。此例中先從(7,2)點(diǎn)開(kāi)始進(jìn)行二叉查找,然后到達(dá)(5,4),最后到達(dá)(2,3),此時(shí)搜索路徑中的節(jié)點(diǎn)為<(7,2),(5,4),(2,3)>,首先以(2,3)作為當(dāng)前最近鄰點(diǎn),計(jì)算其到查詢點(diǎn)(2.1,3.1)的距離為0.1414,然后回溯到其父節(jié)點(diǎn)(5,4),并判斷在該父節(jié)點(diǎn)的其他子節(jié)點(diǎn)空間中是否有距離查詢點(diǎn)更近的數(shù)據(jù)點(diǎn)。以(2.1,3.1)為圓心,以0.1414為半徑畫圓,如圖4所示。發(fā)現(xiàn)該圓并不和超平面y = 4交割,因此不用進(jìn)入(5,4)節(jié)點(diǎn)右子空間中去搜索。
再回溯到(7,2),以(2.1,3.1)為圓心,以0.1414為半徑的圓更不會(huì)與x = 7超平面交割,因此不用進(jìn)入(7,2)右子空間進(jìn)行查找。至此,搜索路徑中的節(jié)點(diǎn)已經(jīng)全部回溯完,結(jié)束整個(gè)搜索,返回最近鄰點(diǎn)(2,3),最近距離為0.1414。
一個(gè)復(fù)雜點(diǎn)了例子如查找點(diǎn)為(2,4.5)。同樣先進(jìn)行二叉查找,先從(7,2)查找到(5,4)節(jié)點(diǎn),在進(jìn)行查找時(shí)是由y = 4為分割超平面的,由于查找點(diǎn)為y值為4.5,因此進(jìn)入右子空間查找到(4,7),形成搜索路徑<(7,2),(5,4),(4,7)>,取(4,7)為當(dāng)前最近鄰點(diǎn),計(jì)算其與目標(biāo)查找點(diǎn)的距離為3.202。然后回溯到(5,4),計(jì)算其與查找點(diǎn)之間的距離為3.041。以(2,4.5)為圓心,以3.041為半徑作圓,如圖5所示??梢?jiàn)該圓和y = 4超平面交割,所以需要進(jìn)入(5,4)左子空間進(jìn)行查找。此時(shí)需將(2,3)節(jié)點(diǎn)加入搜索路徑中得<(7,2),(2,3)>。回溯至(2,3)葉子節(jié)點(diǎn),(2,3)距離(2,4.5)比(5,4)要近,所以最近鄰點(diǎn)更新為(2,3),最近距離更新為1.5?;厮葜?7,2),以(2,4.5)為圓心1.5為半徑作圓,并不和x = 7分割超平面交割,如圖6所示。至此,搜索路徑回溯完。返回最近鄰點(diǎn)(2,3),最近距離1.5。k-d樹(shù)查詢算法的偽代碼如下所示。
kd-tree實(shí)例
先以一個(gè)簡(jiǎn)單直觀的實(shí)例來(lái)介紹k-d樹(shù)算法。假設(shè)有6個(gè)二維數(shù)據(jù)點(diǎn){(2,3),(5,4),(9,6),(4,7),(8,1),(7,2)},數(shù)據(jù)點(diǎn)位于二維空間內(nèi)(如圖1中黑點(diǎn)所示)。k-d樹(shù)算法就是要確定圖1中這些分割空間的分割線(多維空間即為分割平面,一般為超平面)。下面就要通過(guò)一步步展示k-d樹(shù)是如何確定這些分割線的。
k-d樹(shù)算法可以分為兩大部分,一部分是有關(guān)k-d樹(shù)本身這種數(shù)據(jù)結(jié)構(gòu)建立的算法,另一部分是在建立的k-d樹(shù)上如何進(jìn)行最鄰近查找的算法。
你好:這是空調(diào)管道的孔洞,用墻洞口定義布置,藍(lán)色那條長(zhǎng)虛線表示空調(diào)管道。
KD板是由 實(shí)木薄皮+夾板 制成的,是一種涂裝木皮板,這個(gè)名字源自臺(tái)灣科定。表面的實(shí)木貼皮給予非常逼真的實(shí)木觸感和觀感,很有檔次感。與生態(tài)板不同就是表面用的是實(shí)木皮,厚度在3.6mm,價(jià)格¥200~¥...
韓國(guó)“phyto?tree黃瓜膠”最近很火熱,最讓人愛(ài)不釋手的地方在于其有著強(qiáng)大的美白補(bǔ)水修復(fù)功能??諝獾姆蹓m、大氣中的紫外線、化妝品殘留等這些無(wú)一不在傷害我們的肌膚。您可以找韓國(guó)代購(gòu)買,價(jià)格都在30...
鎢鋼KD20
格式:pdf
大?。?span id="wgwwmke" class="single-tag-height">7KB
頁(yè)數(shù): 2頁(yè)
評(píng)分: 4.5
日本 KD20 鎢鋼化學(xué)成分, KD20 鎢鋼板、 KD20 鎢鋼硬度, KD20 鎢鋼價(jià)格 KD20 鎢鋼的性能 : 具有較好的韌性和相適的耐磨性,主要用于線材,棒材加工用的拉制模。同 時(shí)也適合鑄鐵,有色金屬及其合金與非金屬材料不平整表面和間斷切削時(shí)的粗 車,精刨精銑,一般孔和深孔的鉆孔,擴(kuò)孔及制作木工等 。 硬度 :91.5 抗折力 :2990 引伸力 :580 壓縮強(qiáng)度 :5400 耐沖擊強(qiáng)度 :29 KD20 鎢鋼的用途: 具有良好的韌性和耐磨性 ,用線材和管拉模零件沖壓凹模, 電機(jī)定轉(zhuǎn)子, EI鋼片,LED線架沖壓. KD20 鎢鋼的特點(diǎn): 1、模具壽命的延長(zhǎng)(疲勞強(qiáng)度高,不容易產(chǎn)生應(yīng)力集中) 2、壽命穩(wěn)定性好(裂紋的發(fā)生及擴(kuò)展時(shí)間延遲 3、粘附,啃傷大幅度減少(潤(rùn)滑劑產(chǎn)生的腐蝕極其輕微) 4、線切割電火花加工過(guò)程中的耐腐蝕性大大改良(抗電加工腐蝕能
KD型多用戶電表
格式:pdf
大?。?span id="woaoooy" class="single-tag-height">7KB
頁(yè)數(shù): 16頁(yè)
評(píng)分: 4.5
目錄 1.概述 ........................................................................................................................................ 3 2.產(chǎn)品種類 ................................................................................................................................ 3 2.1 KD-BASA1(預(yù)付費(fèi)智能安全用電控制型)多用戶電表 ............................................. 3 2.11 主要技術(shù)特點(diǎn) .....................