将2D分成N个区域,每个区域具有K个相邻点

时间:2017-11-23 15:11:38

标签: algorithm cluster-analysis hierarchical-clustering

如果在2D空间中有一个点集合,是否有一种算法可以将这些点分解为N"区域"每个包含K个相邻点?

例如,假设将这20个点聚为4个组,每组5个点。一个令人满意的解决方案可能如下所示:

enter image description here

动机:我试图优化visualization that loads lots of images into the browser。我计划在页面加载时加载非常低分辨率的图像,然后在用户放大该区域时增加区域中图像的分辨率。当然,我需要量化空间,因此如果用户直接滚动到上面示例的中间,我必须为4个组中的每个组获取高分辨率图像。

console.log('stackoverflow wants code for posts with codepen links')

1 个答案:

答案 0 :(得分:0)

算法可以是这样的:

- get a triangulation of the points (for example: Delaunay Triangulation): D
- get a planar graph from D: G
- Then partition G into connected subgraphs with equal size k

最后一步this solution简短易行(来自理论计算机科学网站):

  

计算图表的恒定度数生成树T,根据它,现在贪婪地找到大小为r的子树,提取它们,然后重复。当然,如果没有恒定度数生成树,那么上面显示的星形示例表明该算法可能会失败。