基於標籤傳播的非重疊社區發現算法LPA
LPA主要思想是起初每個節點擁有獨立的標籤,那麼網絡中有n不同標籤,每次迭代中對於每個節點將其標籤更改爲其鄰接點中出現次數最多的標籤,如果這樣的標籤有多個,則隨機選擇一個。通過迭代,直到每個節點的標籤與其鄰接點中出現次數最多的標籤相同,則達到穩定狀態,算法結束。此時具有相同標籤的節點即屬於同一個社區。
LPA算法執行步驟:
利用igraph,給出LPA的R代碼
> library('igraph')
> karate <- graph.famous("Zachary")
> community <- label.propagation.community(karate)
> modularity(community)
[1] 0.3717949
> membership(community)
[1] 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 2 1 1 2 1 2 1 2 2 2 2 2 2 2 2 2 2 2 2
> plot(community,karate)
基於標籤傳播的重疊社區發現算法COPRA
LPA算法雖然有很多優勢,但無法發現重疊社區結構。對此,基於LPA算法,引入了新的標籤結構(c,b),其中,c表示社區標識符,b表示節點x在社區c中的從屬係數,且0≤b≤1。頂點x的所有從屬係數之和等於1,通過bt(c,b)表示迭代次數t時的頂點x對於社區c的從屬係數,N(x)表示頂點x的鄰接頂點集。