簡體   English   中英

八叉樹的近似最近鄰算法

[英]Approximate nearest neighbor algorithm for Octrees

有誰知道八叉樹這種近似最近鄰技術的起源(紙,書等)?

http://www.cs.ucdavis.edu/~amenta/w11/nnLecture.pdf

我無法從提供的偽代碼中實現它。 我也很難找到該技術的原始出版物,我希望它有更多細節。

謝謝你的幫助。

這不是確切的答案,而是一個近似值(使用主題的術語:))。

太大了,無法發表評論,我認為這是一個很好的起點。

該論文提到,Voronoi圖的展開維數沒有超過三個,並且暗示八叉樹可以展開。 就術語而言,這是錯誤的。

在R ^ 3中定義了八叉樹。 簡單地說,您會看到2D的這種數據結構,其中有一個四叉樹 這些樹的每個節點有2 ^ D個子節點 ,其中D是維。 這意味着:

 1. 2D: 2^D children per node, i.e. 4 children per node.

 2. 3D: 2^D children per node, i.e. 8 children per node.

 3. and so on.

對於exampe, octree ,源於希臘文辛,這意味着8,它指的是此樹有每個節點的8個孩子。

我已經為NN (最近鄰居)實現了這種樹,即使我將樹做成多態的,也不會浪費任何內存,但這不會擴展到10維以上。

此外,本文還提到了kd-trees 注意,當維度變大時,查詢時間不再是O(logn) ,而是比蠻力法(即檢查所有點)略短。 尺寸越高, kd-trees性能越差。

kd-tree實際上是嵌入幾何中的二叉樹。 我的意思是,每個節點都有兩個孩子,並且在每個級別上,我們將數據集減半(通常在方差最大的坐標中間,以便我們可以利用數據集的結構)。 這將形成一棵完美的樹。

在此處輸入圖片說明 在這里,您可以看到一個kd-tree ,它是我的一個朋友,在8D中得到64點。 在此版本中,我們每個葉子存儲4點。

框中的數字表示點號(從1開始,即test.points文件中的行號)。

符號“ 8 @ 0.532”是指一個內部節點,其中的數據沿第八維(同樣,維從1開始,以便於人類理解)在0.532處拆分。

因此,我們傾向於關注近似NN ,這意味着我們付出了一些准確性上的損失,但是卻獲得了一定的提速。 (您可能知道,一切都是折衷的)。

Box ,它可能意味着一個minimum bounding box

這很簡單,這是一個示例:

假設您具有2D數據集:

-1 -2
 0  5
 8 -5

為了構造邊界框,我們需要找到每個維度上的最小和最大坐標。 請注意,對於存儲Boudning框,足以存儲其最小和最大角。

在這里,我們有min = (-1, -5) and max = (8, 5) 這樣,邊界框將按照順時針方向形成,即從最大角開始,即具有角的矩形:

( 8,  5)  // ( max.x, max.y)
( 8, -5)  // ( max.x, min.y)
(-1, -5)  // ( min.x, min.y)
(-1,  5)  // ( min.x, max.y)

請注意,數據集的所有點都位於此邊界框內。

至於論文,實際上是演講,而不是論文。 它沒有解釋如何編寫算法。 而且,它沒有提供任何獨特的信息來嘗試查找另一個.pdf,該信息在鏈接中更詳細地說明了.pdf。

[編輯] OP的評論。

1)Q: dequeue box B, containing representative point p

我要說的是,出隊意味着提取隊列的“第一個”元素。 入隊,意味着將隊列中的元素推回。 隊列縫將邊界框作為元素。

2)Q: r = d(q,B)

也許,他的意思是從盒子的角度說。 不清楚。

您可以計算從查詢點到框的最近角或框的代表的(歐幾里得)距離。

3) for all children B' of B containing points in P

P是數據集。 每個框都在每個級別上划分為8個子框(對於octree)。

4)Q: while dN >= (1+e)r do

近似誤差e實際上是我們所謂的epsilon 它通常是一個參數,表示在檢查時:

while delta >= r do

你不那么嚴格,你就做

while delta >= (1 + e)*r do

這意味着您進入循環的時間少於上述確切條件的時間。 因此,我認為這是說要在隊列中插入框B的每個子框。 恕我直言,這不是那么聰明。

關於e = 0.01的最后一條注釋,只需在上述條件下進行數學運算即可。 您將看到答案是否定的,因為作為發布鏈接的狀態, e是一個乘法因子。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM