前言
在之前的工作中,我们已讲社交数据处理完毕,并构建了社交网络图。之后我们将处理所得到的图,在此空间网络图中查找满足条件的子图。即将此个社区挖掘问题转化为了图问题,满足条件的子图就是社区。
在1.1节中提到过在一个巨大的图中挖掘社区主要分两步:化简和枚举社区。
为什么要化简:现实中的社交网络图是巨大的,每个用户作为社交网络图中的一个点,那么一个社交网络中点的规模可以达到万级、百万级;社交网络图中存在不会对社区挖掘造成影响的数据,这些数据没有挖掘价值,但会对降低社区挖掘的效率;根据判定社区的条件不同(社区的定义不同),社区挖掘的复杂度也是不同的,有些社区挖掘问题是np-hard问题,这是减小图的规模可大大提高社区挖掘算法的效率。
为什么要枚举社区:在此个社区挖掘问题中,我们定义社区为:满足结构性约束和参与度约束的子图。在一个空间网络中查找出所有极大的社区是np-hard问题,只能通过穷举来解决。
化简
在之后的文章中将从三个方面对图进行简化。分别是从结构性(参与度)方面、相似性方面和连通图提取方面。已有学者从这三个方面做过研究,但我所写的都是我基于邻接链表表示的图实现的简化算法。
简化步骤是为了服务社区挖掘的,我们期望经过简化步骤处理后得到一个最简化的图,这就要求我们对一个空间网络的三个方面都进行化简。可以预见的是三个方面可以按照不同的顺序进行化简,当然对应的效率也会不同,我们期望找到一个效率最高的顺序。
枚举社区
在化简后的图中通过枚举子图,然后判断子图是否为社区来枚举社区。首先此枚举是一个穷举过程,将图的点集的所有子集枚举出来,然后判断每一个子集构成的图是否为社区;然后不是所有的社区都需要枚举过程,在本次np-hard问题中,我们需要枚举。
综合来看,做的工作只是将对大的空间网络图的枚举算法转化为了效率更高的对较小的空间网络图的枚举算法,都是需要穷举才能得到我们想要的社区。