我正在寻找一个有效的算法,以找到一个大图上的簇(它有大约5000个顶点和10000条边)。
到目前为止,我使用的是在JUNG java库中实现的Girvan算法,但是当我尝试删除很多边缘时,它是相当慢的。
你能建议我一个更好的替代大图吗?
发布于 2012-01-19 06:30:40
发布于 2012-01-22 13:47:45
这是一个朋友推荐给我的。根据维基百科的说法:
在该方法中,定义了一个量化节点对之间某些(通常是拓扑)相似性类型的相似性度量。常用的度量包括邻接矩阵的余弦相似度、Jaccard指数和行间Hamming距离。然后,根据这一度量,将相似节点分组为社区。有几种常见的分组方案,其中最简单的两种是单连锁聚类,其中两组被认为是独立的群落当且仅当不同组中所有对节点的相似性低于给定的阈值,以及完全连锁聚类,其中每个组内的所有节点的相似性都大于阈值。
这就是我在你的情况下所用的。这是一个非常有用的算法。我找到了一个关于算法的链接到一个不错的PDF。这是一个伟大的算法,而且,由于缺乏一个更好的术语,非常“强大”。试试看。
发布于 2012-01-19 02:52:12
对于这里的问题,我认为您应该想一种方法,将顶点-边映射到每个顶点的一组坐标。我不知道是否有更好的办法来做到这一点。但是,我认为您可以首先将每个顶点表示为一个维度,然后,某个顶点的边值将成为您需要为该维度处理的值。在此之后,您可以做一个简单的欧几里得距离,并使用它。
https://softwareengineering.stackexchange.com/questions/130840
复制相似问题