2012-09-10 59 views
0

我有一個有向圖(實際上它是一個超圖,但它可以忽略這一刻)。排名集羣的質量

從這張圖我挑選各種子圖,我正在尋找一個函數,通過它們的「羣集質量」來排列各種這樣的子集。

「集羣質量」應該是高時的子集的成員之間存在很多鏈接

「集羣質量」應該是低的,當從所述子集中的許多成員或從該子集之外存在很多鏈接。

我的問題是:

  • 什麼是 '集羣質量' 正確的說法?

  • 在這種情況下確實存在哪些相關算法/函數?

  • JVM上存在哪些實現。斯卡拉首選,但從Java可以調用的東西很好?

背景:這個想法是提取從源代碼字(類&方法名稱或其片段),並找到那些可能通過查找那些由「好簇」,從而可能代表用來更好地描述該應用程序代碼中的一些知識概念。

回答

2

關於與聚類分析相關的算法/函數,有幾個。圖中的聚類與圖分區密切相關,圖分區最近一直是活躍的研究領域,特別是隨着Facebook和Twitter等在線社交網絡的出現,其基礎結構自然由(社交)圖表表示。

這就是說,根據我的經驗,兩個聚類措施浮現在腦海。一種是模塊化,其基本上將子圖(羣集)與如果邊緣隨機分佈的情況下的子圖形相比較。

另一個是電導,它測量聚類候選者上隨機遊走將收斂到某種均勻分佈的速度。

另一個更鬆散的測量方法是查看聚類係數,該係數測量圖中三角形(3個週期)的數量與可能存在的可能三角形的數量。總而言之,有很多關於這個主題的算法(和學術論文),我上面提到的三個是更一般的用例。

關於JVM上的實現,我沒有意識到與這些算法一起使用的庫,但Scala的流行圖庫是Graph for Scala(將被合併到Scala Extended Core Library中未來)以及Twitter發佈的Cassovary。