【问题标题】:Boost Graph Library: Is there a neat algorithm built into BGL for community detection?Boost Graph Library:BGL 中是否有一种用于社区检测的简洁算法?
【发布时间】:2010-09-21 07:21:59
【问题描述】:

有人将 BGL 用于大型生产服务器吗?

  • 您的网络由多少个节点组成?
  • community detection你是怎么处理的
  • BGL 是否有任何很棒的方法来检测社区?
  • 有时两个社区可能通过一个或两个边连接在一起,但这些边不可靠并且可能会消失。有时根本没有边。

有人能简单谈谈如何解决这个问题。 请打开我的心扉,启发我。

到目前为止,我已经设法确定两个节点是否在一个岛上(在一个社区中) 以最便宜的方式,但现在我需要确定不同岛屿上的哪两个节点彼此最接近。我们只能尽量少地使用不可靠的地理数据。

如果我们将其比喻为大陆和岛屿,并将其排除在社会距离背景之外。我想计算出水域中哪两块土地最靠近。

【问题讨论】:

    标签: c++ algorithm boost-graph


    【解决方案1】:

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

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

    【讨论】:

    • 根据我们的工作方式,我们可能会提供一些 Boost,但我会为代码感到羞耻!请注意,社区可以加强它!
    • 哦,非常感谢带宽缩减器的建议,您可能为我指出了解决另一个棘手问题的正确方向。
    【解决方案2】:

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

    “岛”是指断开的子图吗?

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

    这种“社交距离”是您必须定义的。一旦你完成了大部分工作。

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

    @大卫尼姆

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

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

    【讨论】:

    • 岛 == 断开子图
    • stbuton,关于重量问题,你是对的,这是我的错,我忽略了有重量。只是描述它们的性质有点困难,我想当然地认为人们会理解有重量。
    猜你喜欢
    • 1970-01-01
    • 2012-03-17
    • 1970-01-01
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    • 2016-02-23
    • 2015-05-11
    • 1970-01-01
    相关资源
    最近更新 更多