【发布时间】:2010-03-03 18:32:29
【问题描述】:
我有带有浮点坐标的二维点 (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(!) 什么意思保持原样,1 代表第三个,1 代表第四个=> 将绘制一个矩形,所有其他点 => 根据任务的错误结果。
有任何想法吗?至少哪些算法会有所帮助,在哪里寻找......
附:现在,结果中的组/点数无关紧要,即例如上面的另一个允许结果可能是 (1,0-4,2) 和 (2,2-5,4) 矩形,并且没有剩余点
【问题讨论】:
-
所以你可以使用的矩形的尺寸是固定的并且是轴对齐的?我想你想尽量减少遗漏的点数..对吗?
-
是的,尺寸是固定的 (xy),我不能旋转它们(xy 表示 xy,我不能切换它们 y i>x),并且它们轴对齐。关于最小化,暂时没有。结果不应该包含点,这些点的另一个点比给定的距离更近,仅此而已
-
必须是矩形且准确吗?您可以使用类似 k 表示聚类:jsfiddle.net/8NpNp/2
-
你为什么没有在你的问题中放一张图片?这里examples!
标签: algorithm