【发布时间】:2012-11-09 09:22:48
【问题描述】:
四叉树和kd-tree的主要区别是什么?我知道他们在多个维度上分割点,但我不明白为什么我们会使用一个而不是另一个。 我需要一个允许我计算给定区域中有多少点(2D 点)的结构。 基本上,我正在尝试检测点簇。
【问题讨论】:
标签: computational-geometry kdtree quadtree
四叉树和kd-tree的主要区别是什么?我知道他们在多个维度上分割点,但我不明白为什么我们会使用一个而不是另一个。 我需要一个允许我计算给定区域中有多少点(2D 点)的结构。 基本上,我正在尝试检测点簇。
【问题讨论】:
标签: computational-geometry kdtree quadtree
区别(算法上)是:在四叉树中,到达一个节点的数据被分成一个固定(2^d)、大小相等的单元,而在 kdtrees 中,数据根据一些数据分析被分成两个区域(例如某个坐标的中位数)。由于维度中的指数依赖性,四叉树不能很好地扩展到高维度。数据结构的查询时间复杂度也不同。
由于您对 2D 点感兴趣,因此任何一种数据结构都可能适合您。 KD 树很容易查询范围,并且通常比四叉树更受欢迎。我建议你使用它们。
【讨论】: