我有一组对象。每个对象都放在"空间"我知道每个物体之间的距离。我正在寻找一种远离彼此分组对象的算法。我选择了团体数量。团体应该平衡" (每个组应包含相同数量的项目。)
示例:
假设我有4个对象
{ A, B, C, D }
我代表他们进入二维空间:
the points in a 2-dimension space http://i61.tinypic.com/b4ho51.png
我知道每个物体之间的距离,所以
{
AB = 1
AC = 3.6
AD = 5
BC = 2.8
BD = 4.2
and so on...
}
我希望算法将对象分为两组,并输出
{[ A, C ][ B, D ]}
the desired result http://i60.tinypic.com/2v19ok2.png
当然,对于4个物体来说这很容易,但是有更多物品很难。
我经常搜索,但我找不到任何这样的分组。 我已经阅读了很多关于k-means聚类和其他聚类方法的内容,但它们并不合适,因为它们将相似的对象分组。
什么是最佳解决方案?
修改
问题的形式化可能是每个组中元素之间距离的最大化。这就是为什么算法应该将A和C,B和D分组的原因。
A和D,B和C它不是一个好的解决方案。
算法应该处理N个项目(N> 2)和K个组(K
答案 0 :(得分:0)
你可以在这里滥用聚类算法,在它们期望相似性时给它们一个距离,反之亦然。
看一下层次聚类,应该很容易以你想要的方式“打破”它。
但更可能的是,除了这样的玩具场景之外,结果不会很有说服力,因为“不相似”不是传递性的。
通常,当A类似于B,B类似于C时,您需要在同一个群集中拥有A,B和C.
但是当A与B不同时,B与C不同,则A和C可能非常相似;所以你不希望它们集群......'''也许''完整的链接聚类(如上所述,当滥用时)可以为你工作。
答案 1 :(得分:0)
我的问题不是算法。问题是将问题本身正式化。基因帮助我做了他的评论
你需要正式确定一个好的"的定义。解。我建议成对距离的最大平方和。我确信最大化这个数量的问题是NP难的。反复挑选和删除“最远的一对”的简单解决方案。简单。所以现在你需要进行某种搜索。 - Gene 7月6日15:36
由于