当它们彼此靠近时将点分组

时间:2010-03-03 18:32:30

标签: algorithm

我有浮点坐标的2d点(x,y),当我绘制它们时,如果它们彼此接近,我需要对点进行分组,并且它们应该在有固定大小的矩形的帮助下进行分组。问题是这些矩形不应该相交,所有点邻居都应该分组 如果附近有纸,可以绘制一个大矩形,例如4 * 5cm - 所有点所在的区域。现在随机地放点,比方说,如果有距离为1厘米的点 - 它们应该被分组为矩形2 * 3。

我找不到算法如何制作它,性能也很重要......我寻找嵌套,聚类但我需要的是有点不同。顺便说一句,如果某些分组矩形必须超出公共区域以适应条件,那就让它成为现实,这不是问题。例如。你有4 * 5区域和分数

(1,0), (2,1), (4,1), (4,3), (2,4) 

然后结果应该像rectangles (0,0 - 3,2) & (3,1 - 6,3) and one point left (2,4),因为所有其他点都已分组,此点现在没有任何邻居 我的点坐标不是整数而是浮点数,点数可以是几百(最多500)。而且我不想在相同的矩形上打破区域并且只计算有多少点,我的意思是例如上面我可以制作反角(0,0 - 3,2),(3,0 - 6,2) ,(0,3 - 3,6),(3,3 - 6,6)并且只是总结第一个矩形的第2点,第二个是(!),第二个是什么意思,保留原样,1表示第3个,1表示第4个=>将绘制一个矩形,所有其他点=>根据任务错误的结果。 有任何想法吗?至少哪些算法可以有用,在哪里寻找......

P.S。现在结果中的组/点数无关紧要,e.i。例如上面的另一个允许结果可能是(1,0-4,2)和(2,2-5,4)矩形,没有剩下的点

1 个答案:

答案 0 :(得分:1)

一般问题是“nearest neighbor”搜索。解决方案计算难度大(时间复杂度)。对于人类而言,这是一项非常简单的任务,计算起来并不容易。