【问题标题】:Difference between quadtree and kd-tree四叉树和kd树的区别
【发布时间】:2012-11-09 09:22:48
【问题描述】:

四叉树和kd-tree的主要区别是什么?我知道他们在多个维度上分割点,但我不明白为什么我们会使用一个而不是另一个。 我需要一个允许我计算给定区域中有多少点(2D 点)的结构。 基本上,我正在尝试检测点簇。

【问题讨论】:

标签: computational-geometry kdtree quadtree


【解决方案1】:

区别(算法上)是:在四叉树中,到达一个节点的数据被分成一个固定(2^d)、大小相等的单元,而在 kdtrees 中,数据根据一些数据分析被分成两个区域(例如某个坐标的中位数)。由于维度中的指数依赖性,四叉树不能很好地扩展到高维度。数据结构的查询时间复杂度也不同。

由于您对 2D 点感兴趣,因此任何一种数据结构都可能适合您。 KD 树很容易查询范围,并且通常比四叉树更受欢迎。我建议你使用它们。

【讨论】:

  • 小心:kd-trees 在维数上也呈指数增长。主要区别在于 kd 树最终更深但更窄。
  • 深度与维数有什么关系?深度不是$\log(N)$吗?
  • @EduardoReis 在四叉树的 d 维版本中,宽度是深度的指数。仅当数据平衡时,深度 log(N) 是不可能的。
猜你喜欢
  • 2017-08-09
  • 1970-01-01
  • 2011-05-18
  • 2011-09-16
  • 1970-01-01
  • 2013-01-23
  • 1970-01-01
  • 1970-01-01
  • 2017-01-09
相关资源
最近更新 更多