如果在2D空间中有一个点集合,是否有一种算法可以将这些点分解为N"区域"每个包含K个相邻点?
例如,假设将这20个点聚为4个组,每组5个点。一个令人满意的解决方案可能如下所示:
动机:我试图优化visualization that loads lots of images into the browser。我计划在页面加载时加载非常低分辨率的图像,然后在用户放大该区域时增加区域中图像的分辨率。当然,我需要量化空间,因此如果用户直接滚动到上面示例的中间,我必须为4个组中的每个组获取高分辨率图像。
console.log('stackoverflow wants code for posts with codepen links')
答案 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的子树,提取它们,然后重复。当然,如果没有恒定度数生成树,那么上面显示的星形示例表明该算法可能会失败。