Boost Graph Library:BGL内置了一个用于社区检测的简洁算法吗?

时间:2008-11-07 15:23:54

标签: c++ algorithm boost-graph

那里有人使用BGL进行大型生产服务器吗?

  • 您的网络包含多少个节点?
  • 你如何处理community detection
  • BGL有没有很好的方法来检测社区?
  • 有时两个社区可能会被一个或两个边连接在一起,但这些边缘不可靠并且可能逐渐消失。有时根本没有边缘。

有人可以简单地谈谈如何解决这个问题。 请敞开心扉,激励我。

到目前为止,我已经设法解决了两个节点是否在岛上(在社区中) 以最昂贵的方式,但现在我需要弄清楚不同岛屿上的哪两个节点彼此最接近。我们只能极少使用不可靠的地理数据。

如果我们将其与大陆和岛屿进行比较,并将其从社会距离背景中移除。我想弄清楚哪两块土地最接近一块水。

2 个答案:

答案 0 :(得分:6)

我已经将BGL用于具有数百万个节点的图形,但是您可以使用的图形大小取决于您尝试运行的算法。您可以快速计算节点之间的距离。根据您的数据,有4种最短路径算法最适用:(单对点,所有点对,稀疏和密集图,......)。

至于社区检测,BGL中没有专门为此设置的任何算法(但也许你可以在完成项目时贡献一个)。有一些算法可能有助于构建社区检测算法。 max-flow/min-cut算法通常用于社区检测(如果两个节点之间可能存在大量流量,那么它们可能位于同一社区中,如果没有多少流量,那么最小切割可能代表社区之间的道路)。还有启发式方法可以对图表的节点进行排序以减少bandwidth。构成“社区”的节点可能在这样的排序中彼此接近。

答案 1 :(得分:0)

据我所知,BGL没有专门用于社区检测的算法。

“岛屿”是指断开连接的子图?

此外,图表没有任何“距离”的概念。

这种“社交距离”是你必须要定义的东西。完成后,大部分工作就完成了。

您链接的页面上列出了许多方法,其中大多数只需要您定义类似“距离”指标的内容,然后将定义插入算法中。

@ David Nehme

没有边权重的图只是关于连通性,它们没有距离的概念。如果你想谈论网络,那么你可以谈论距离。但是没有边缘权重的图形没有任何距离,除非你想假设所有边缘的隐含边权重为1。但这实际上只是将图形转变为网络。

此外,他正在谈论两个断开的图之间的距离。要对此进行建模,您必须引入节点之间距离的外部概念,与边距离分开。

相关问题