首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >有效的图聚类算法

有效的图聚类算法
EN

Software Engineering用户
提问于 2012-01-19 01:44:27
回答 3查看 22.3K关注 0票数 20

我正在寻找一个有效的算法,以找到一个大图上的簇(它有大约5000个顶点和10000条边)。

到目前为止,我使用的是在JUNG java库中实现的Girvan算法,但是当我尝试删除很多边缘时,它是相当慢的。

你能建议我一个更好的替代大图吗?

EN

回答 3

Software Engineering用户

发布于 2012-01-19 06:30:40

我个人建议马尔可夫聚类。我在过去几次使用它,取得了很好的效果。

亲和力传播是另一个可行的选择,但它似乎不如马尔可夫聚类一致。

还有各种其他选项,但这两个选项都是现成的,并且非常适合于具体的聚类图问题(您可以将其看作稀疏矩阵)。您正在使用的距离度量也是一个考虑因素。如果你使用适当的度量标准,你的生活会更容易。

我在寻找性能基准时发现了本论文,这是一个很好的主题调查。

票数 13
EN

Software Engineering用户

发布于 2012-01-22 13:47:45

层次聚类

这是一个朋友推荐给我的。根据维基百科的说法:

在该方法中,定义了一个量化节点对之间某些(通常是拓扑)相似性类型的相似性度量。常用的度量包括邻接矩阵的余弦相似度、Jaccard指数和行间Hamming距离。然后,根据这一度量,将相似节点分组为社区。有几种常见的分组方案,其中最简单的两种是单连锁聚类,其中两组被认为是独立的群落当且仅当不同组中所有对节点的相似性低于给定的阈值,以及完全连锁聚类,其中每个组内的所有节点的相似性都大于阈值。

马尔可夫聚类

这就是我在你的情况下所用的。这是一个非常有用的算法。我找到了一个关于算法的链接到一个不错的PDF。这是一个伟大的算法,而且,由于缺乏一个更好的术语,非常“强大”。试试看。

票数 10
EN

Software Engineering用户

发布于 2012-01-19 02:52:12

对于这里的问题,我认为您应该想一种方法,将顶点-边映射到每个顶点的一组坐标。我不知道是否有更好的办法来做到这一点。但是,我认为您可以首先将每个顶点表示为一个维度,然后,某个顶点的边值将成为您需要为该维度处理的值。在此之后,您可以做一个简单的欧几里得距离,并使用它。

票数 5
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/130840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档