四叉树和kd-tree之间的主要区别是什么?我知道它们都可以在多个维度中分割点,但我不明白为什么会选择其中之一。
我需要一种结构,可以让我计算在给定区域内有多少个点(2D点)。基本上,我正在尝试检测点的聚集。
四叉树和kd-tree之间的主要区别是什么?我知道它们都可以在多个维度中分割点,但我不明白为什么会选择其中之一。
我需要一种结构,可以让我计算在给定区域内有多少个点(2D点)。基本上,我正在尝试检测点的聚集。
算法上的不同之处在于:在四叉树中,到达一个节点的数据被分成固定(2 ^ d)大小的等分单元格,而在kd树中,数据是基于某些数据分析(例如某些坐标的中位数)分为两个区域。由于在维度上呈指数依赖关系,四叉树在高维情况下无法很好地扩展。这两种数据结构的查询时间复杂度也有所不同。
由于您对2D点感兴趣,任何一种数据结构都可以使用。KD树非常容易查询范围,通常优先于四叉树。我建议您使用它们。