繁体   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