com.raphtory.algorithms.generic.community.SLPA
SLPA
SLPA(iterNumber: Int = 50, speakerRule: Rule = ChooseRandom(), listenerRule: Rule = MostCommon())
find overlapping communities using synchronous label propagation
This returns the overlapping communities of the graph by a variant of the synchronous label propagation algorithm. In this algorithm, each node maintains a memory of labels. At each step, a vertex chooses a label from its memory to send to all its neighbours according to a Speaking Rule (defaults to choosing a label at random from memory). Then each vertex chooses a label from its received queue of labels to add to memory according to a Listening Rule (defaults to choosing the most commonly received label). Instead of converging based on some criterium, the labels a node “remembers” is stored and the algorithm terminates after a set number of iterations. At this point, Raphtory returns the name of each vertex and its memory of labels (the size of which is the number of iterations).
Parameters
iterNumber: Int = 50
Number of iterations to run (default 50).
speakerRule: Rule = ChooseRandom()
rule for choosing label to propagate (default: ChooseRandom())
listenerRule: Rule = MostCommon()
rule for choosing label to add to mem (default: MostCommon())
States
memory: Queue[Long]
memory of labels
Returns
vertex name |
label memory |
---|---|
|
|
Rules
Fifo()
Return labels in first-in-first-out order
MostCommon()
Return most common label
ChooseRandom()
Sample label at random from list of labels
Note
This implementation is based on the paper SLPA: Uncovering Overlapping Communities in Social Networks via A Speaker-listener Interaction Dynamic Process by Jierui Xie, Boleslaw K. Szymanski and Xiaoming Liu (2011)