用于分组不相关对象的算法

时间:2014-07-06 14:51:58

标签: algorithm cluster-analysis

我有一组对象。每个对象都放在"空间"我知道每个物体之间的距离。我正在寻找一种远离彼此分组对象的算法。我选择了团体数量。团体应该平衡" (每个组应包含相同数量的项目。)

示例:

假设我有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

2 个答案:

答案 0 :(得分:0)

你可以在这里滥用聚类算法,在它们期望相似性时给它们一个距离,反之亦然。

看一下层次聚类,应该很容易以你想要的方式“打破”它。

但更可能的是,除了这样的玩具场景之外,结果不会很有说服力,因为“不相似”不是传递性的。

通常,当A类似于B,B类似于C时,您需要在同一个群集中拥有A,B和C.

但是当A与B不同时,B与C不同,则A和C可能非常相似;所以你不希望它们集群......'''也许''完整的链接聚类(如上所述,当滥用时)可以为你工作。

答案 1 :(得分:0)

我的问题不是算法。问题是将问题本身正式化。基因帮助我做了他的评论

  

你需要正式确定一个好的"的定义。解。我建议成对距离的最大平方和。我确信最大化这个数量的问题是NP难的。反复挑选和删除“最远的一对”的简单解决方案。简单。所以现在你需要进行某种搜索。 - Gene 7月6日15:36

由于