我什么时候应该使用kd树?

时间:2012-02-28 19:30:40

标签: algorithm kdtree

前几天,我正在阅读 kd-trees 。我一直在寻找一个具体而简单的情况,这种数据结构可能很有用。有没有人有这样的例子?

5 个答案:

答案 0 :(得分:7)

我已经将它们用作查找机器学习的给定点的最近邻居的有效方法。

答案 1 :(得分:7)

我使用kd树来模拟通过波浪产生的喷雾的光传输。这使得可以渲染不仅仅被灯照亮的喷雾液滴,而且可以产生来自其他液滴的间接照明。

我将喷射点存放在kd树中,然后使用kd树快速找到彼此靠近的点,从而相互照亮了哪些水滴。 (实际上,它有点复杂,但结构仍然是kd树。)这使得通过喷雾呈现出漂亮的光芒成为可能。

以下是使用方法的图片。

Simulated light transport

注意灯光周围的喷雾如何散射光线。

答案 2 :(得分:4)

它们用于光线加工,将场景分解成几个方框。它加速了碰撞,因为如果光线不与边界框碰撞,它肯定不会与其内容发生碰撞。

答案 3 :(得分:1)

VTK有一个:http://www.vtk.org/doc/nightly/html/classvtkKdTree.html为例。

查看FindClosestPoint等功能。在给定大量输入点的情况下,该类需要相对较长的时间来构建。但是在构建树之后,像这样的函数运行得非常快。

答案 4 :(得分:1)

我在定价项目中使用它们。目标是找到符合多个标准的最佳价格。