关于在位图中查找质量簇的问题,我回答了一半。我说一半是因为我把它留在了位图中的所有点都按质量排序的条件下,然后留给读者过滤从同一簇中删除点的列表。
然后,当考虑这一步时,我发现解决方案并没有像我想象的那样跳出来。所以现在我向你们寻求帮助。我们有一个具有类似质量的点列表(一个 Python 元组列表,但您可以用任何语言表示它):
[ (6, 2, 6.1580555555555554),
(2, 1, 5.4861111111111107),
(1, 1, 4.6736111111111107),
(1, 4, 4.5938888888888885),
(2, 0, 4.54),
(1, 5, 4.4480555555555554),
(4, 7, 4.4480555555555554),
(5, 7, 4.4059637188208614),
(4, 8, 4.3659637188208613),
(1, 0, 4.3611111111111107),
(5, 8, 4.3342191043083904),
(5, 2, 4.119574829931973),
...
(8, 8, 0.27611111111111108),
(0, 8, 0.24138888888888888) ]
每个元组的形式为:
(x, y, mass)
请注意,列表在此处排序。如果您的解决方案不希望对它们进行排序,那完全可以。
如果你还记得的话,挑战是找到主要的质量群。集群的数量是未知的。但是您知道位图的尺寸。有时,一个簇中的几个点的质量比下一个(按大小)簇的中心大。所以我想要做的是从质量较高的点出发并删除同一簇中的点(附近的点)。
当我尝试这样做时,我最终不得不一遍又一遍地遍历列表的某些部分。我有一种感觉,我对此很愚蠢。你会怎么做?伪代码或真实代码。当然,如果您可以使用 Python 代码从我在该答案中留下的地方开始,那么我更容易尝试它。
下一步是计算位图中真正有多少簇。我仍在努力定义这个问题,所以我可能会带着一个问题回来。
编辑:我应该澄清一下,我知道这个问题没有“正确”的答案。问题的名称是关键。我的集群的第一阶段已经完成。我正在寻找一种快速、准确“足够”的方法来过滤掉附近的点。
如果您看到我如何使问题更清楚,请告诉我。