算法名称:社区发现中的标签传播算法(LPA)
算法输入:无向无权图邻接矩阵AdjacentMatrix,节点个数VerticeNum
算法输出:存储节点标签的分类数组Community
//初始化每个节点的标签
For i <- 0 to VerticeNum Do
Community[i] <- i
//寻找i节点的所有邻居存入Neighbor[i]
FindMaetexNonZero(i,AdjacentMatrix,NeighBor[i])
while 未达到分类标准 or 未超出迭代阈值 then
RandomSort(SS)//生成随机序数队列SS
For i <- 0 to VerticeNum Do
//统计节点i邻居中数量最多的标签
VectorFrequency(Neighbor[i], lable)
//若只有一个数量最多则直接赋值
if lable.size() = 1 then
Community[i] <- lable[0]
//若有多个相同数量的标签则随机选择一个
else then
Community[i] <- lable[random]
return Community
改进算法:
1、不重叠三角形初始化:
算法名称:标签传播算法不重叠三角形初始化(Findunitriangle)
算法输入:无向图邻接阵AdjacentMatrix,节点个数VerticeNum,各节点邻居集合Neighbor,分类数组Community
算法输出:存储节点标签的分类数组Community
//标记所有节点都未访问过
For i <- to VerticeNum Do isVisited[i] <- False
//社区标签
c=0
//寻找不重叠三角形赋予相同标签作为初始社区
For i <- 0 to VerticeNum Do
For j <- 0 to Neighbor[i].size