复杂网络社区发现算法:Girvan–Newman与贪心模块化优化
在复杂网络分析中,社区发现是一个重要的研究领域,它有助于我们理解网络的结构和功能。本文将介绍两种经典的社区发现算法:Girvan–Newman算法和贪心模块化优化算法。
1. Girvan–Newman算法
Girvan–Newman算法是一种基于分裂的社区发现算法。其核心思想是,如果一个图可以被划分为一组紧密连接的社区,且连接不同社区的边只占很小的比例,那么连接两个社区的边将介导大量的最短路径,即它们的介数(betweenness)值较大。相反,端点属于同一社区的边通常被较短路径穿过的比例相对较小,介数值也较小。因此,该算法通过连续移除介数最大的边,直到图分裂成多个组件。
1.1 算法步骤
Girvan–Newman算法基于三个步骤的迭代:
1. 计算所有边的介数。
2. 移除图中介数最大的边。
3. 对得到的图进行组件分析。
在每一步,算法使用components()函数输出连通组件的数量,并计算相应的模块化值。算法在所有边都被移除且图由等于节点数N的组件组成时终止。
以下是该算法的伪代码:
Algorithm 46 girvan_newman() Input: G(V, E) Output: community dendrogram 1: for k=0 to K-1 do 2: brandes_edges(G) 3: e ← get_max_be