聚类问题的最优贪婪


16

|P|=nkknC={c1,c2,,ck}kD p i c jcost(C)=maximinjD(pi,cj)D表示输入点和中心点之间的欧几里得距离。每个点将自己分配给最近的聚类中心,将顶点分为k个不同的聚类。picjk

该问题称为(离散)聚类问题,它是NP困难的。从NP完全控制集问题的简化可以看出,如果存在ρ < 2的问题的ρ-近似算法,则P = NPkNPNPρρ<2P=NP

最佳逼近算法非常简单直观。一个第一纬点p P任意,并把它在该组Ç聚类中心。然后,选择一个下一个群集中心,使其距离所有其他群集中心尽可能远。因此,当| C | < ķ,我们发现反复的点Ĵ P的量,距离d Ĵ Ç 最大化,并且将其添加到Ç。一次| C | = k我们完成了。2pPC|C|<kjPD(j,C)C|C|=k

不难看出最优贪婪算法在时间内运行。这就提出了一个问题:我们可以达到o n k 时间吗?我们能做多少呢?O(nk)o(nk)

Answers:


7

实际上,可以以几何方式解决问题,即我们希望用k个球覆盖点,其中最大的球的半径最小。Vk

确实很容易实现,但是可以做得更好。Feder和Greene,1988年的近似聚类的最佳算法使用更聪明的数据结构获得了 Θ n log k 的运行时间,并进一步表明这在代数决策树模型中是最佳的。O(nk)Θ(nlogk)


1

我的问题:有没有办法使贪婪的采摘策略在时间内运行?o(|V|2)

在我看来,您已经描述了它。万一我在您的描述中读得太多,这就是我所了解的。具有将每个元素与到S的元素的距离之和关联的关联数据结构。可以以与p的距离为代价O | V |初始化此数据结构,并且此初始化可以在不增加复杂性的情况下产生副作用。可以在选择新元素之后以O | V |为代价更新它,再次产生下一个元素作为副作用。重复得到SVSO(|V|)pO(|V|)S。结果复杂度为O(k|V|)


1
但是请注意的界限:在最坏的情况下,它可能等于| |。V | 。我怀疑有些数据结构可以达到更好的界限,但是我真的不知道。k|V|
Juho 2012年

oOk3
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.