如何使用哈希映射找到一个点属于哪个区域?

时间:2017-04-20 11:00:21

标签: algorithm hash geometry cluster-analysis

假设我们有一个2d空间分组,通过Voronoi Tessellation说:

enter image description here

我们有集群大纲,中点。给定这个空间中的一个点(x,y坐标)如何获取它的哈希值,以便它允许我们确定它属于哪个簇?

我知道我们可以通过使用树搜索添加图层和点所在的图来使我们的聚类形成二叉树。另外我知道我们可以将每个空间点(假设它是descreet)映射到一个簇并获得O(1)存储数据的负载。但我寻求一种方法来使用无序哈希映射样式从给定点获取集群。如何做到这一点(算法)?

2 个答案:

答案 0 :(得分:2)

在Voronoi站点(单元格“中心”)上构建kd-tree,然后在O(NlogN)时间内搜索最近的站点。

请注意,由于Voronoi图属性,点和最近的站点都属于同一个单元

另一种选择 - 构建trapezoid decomposition个单元格(可能是更复杂的方式)

答案 1 :(得分:0)

在Voronoi Tessellation中,每个“簇”是具有相应中点的最近邻点的点的轨迹。

因此,您感兴趣的实际上是找到新点的最近邻居(在所有中间点之间)。

如果您打算为此目的使用散列,也许您应该阅读有关位置敏感的散列。