【问题标题】:data structure to find value for closest point to input data查找最接近输入数据点的值的数据结构
【发布时间】:2020-11-05 00:11:15
【问题描述】:

我有一个数据集,其中我将一个值映射到一个三维点。例如(1,2,3)->5; (2,4,1)->7;等等。
我需要存储这些并能够快速找到所需的值。如果每个可能的输入都有一个条目,我可以只使用一个 3D 数组(或字典),使用该点作为索引并且根本不进行搜索。

然而,输入是实值的,因此数据集中并非每个点都存在。我想找到与输入数据最近的 n 个点并获取它们的相关值以执行插值。
我可以使用哪种数据结构来有效地实现这一点?数据结构只需创建一次,以后无需更改。

【问题讨论】:

  • find value for closes point... 建议基于树的结构可能是平衡的,如红黑。
  • KD-Tree 支持高效的最近邻搜索。
  • 在给定 R^3(实数值)中的一个点的情况下,您是否需要在 Z^3(仅整数)中找到最近的点?
  • 你能谈谈数据点的分布吗?不同的数据结构在不同的分布上效果最好。
  • 我需要在 R^3 中找到点,示例可能很糟糕,抱歉。

标签: algorithm data-structures nearest-neighbor


【解决方案1】:

你想要的是K-d tree
它是一种专门设计用于划分k 维空间的点的数据结构,它可以非常快速地找到给定点的最近邻居 (O(log n))。
您可能也不需要自己实现 kd 树,因为该结构的实现存在于多种语言中(我在 python 中使用过它,我敢打赌您可以在大多数常用语言中找到可靠的实现)。

【讨论】:

  • 据我所知,K-d-tree 只存储点本身。因此,在找到最近的点之后,我会使用不同的数据结构(如字典或哈希映射)来查找与这些点关联的值,对吗?
  • 是的,哈希映射可以很好地完成这项工作,这是一种将键映射到值的快速实用的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-11
  • 2022-10-24
相关资源
最近更新 更多