社区发现算法(一)

 图分割方法大多是基于迭代二分法的,基本思想是将图分割成两个子图,然后迭代,最后得出要求的子图数。经典的算法有Kernighan-Lin算法和谱二分算法。


K-LKernighan-Lin)算法


K-LKernighan-Lin)算法是一种将已知网络划分为已知大小的两个社区的二分方法,它是一种贪婪算法。它的主要思想是为网络划分定义了一个函数增益QQ表示的是社区内部的边数与社区之间的边数之差,根据这个方法找出使增益函数Q的值成为最大值的划分社区的方法。具体策略是,将社区结构中的结点移动到其他的社区结构中或者交换不同社区结构中的结点。从初始解开始搜索,直到从当前的解出发找不到更优的候选解,然后停止。

K-L算法的缺陷是必须先指定了两个子图的大小,不然不会得到正确的结果,实际应用意义不大。


谱二分算法


当网络中存在两个社区结构时,就能够根据非零特征值所对应的特征向量中的元素值进行结点划分。把所有正元素对应的那些结点划分为同一个社区结构,而所有负元素对应的结点划分为另外一个社区结构。

谱二分算法利用的是Laplace矩阵的特征值和特征向量的性质来做社区划分。Laplace矩阵的第二小特征值λ2的值越小,划分的效果就越好。所以谱二分法使用Laplace矩阵的第二小特征值来划分社区。 

谱平分法的缺陷是,一次只能划分2个社区,如果需要划分多个,需要执行多次。如果只需要划分两个社区,谱平分法的效率比较高,但是要划分多个社区的时候,铺平分法的效率就不高了,它的优点也不能得到充分的体现,而且准确度也可能会降低。



你可能感兴趣的:(Algorithm,Graph)