GN算法是一種凝聚型的社區結構發現算法。該算法根據網絡中社區內部高內聚、社區之間低內聚的特點,逐步去除社區之間的邊,取得相對內聚的社區結構。算法用邊介數的概念來探測邊的位置,某邊的邊介數定義為網絡上所有頂點之間的最短路徑通過該邊的次數。由定義可知,如果一條邊連接兩個社區,那么這兩個社團節點之間的最短路徑通過該邊的次數就會最多,相應的邊介數最大。如果刪除該邊,那么兩個社團就會分割開。GN算就就是基於此思想反復計算當前網絡的最短路徑,計算每條邊的邊介數,刪除邊介數最大的邊。最后在一定條件下,算法停止,即可得到網絡的社區結構。
以圖1為例說明GN算法的執行流程。1.使用最短路徑算法求在圖1.a上求出頂點1到頂點8的最短路徑(圖中紅色部分)。2.反復調用步驟1,探測網絡所有頂點之間的最短路徑,統計出所有邊的邊介數,如圖1.b所示。3.統計出最大邊介數,然后刪除,得到如圖1.c所示的社區結構。
圖1.a.最短路 圖1.b.邊介數 圖1.c.刪除最大邊介數的邊