• 大小: 5KB
    文件类型: .java
    金币: 1
    下载: 0 次
    发布日期: 2021-05-09
  • 语言: Java
  • 标签: LPA社团  

资源简介

标签传播算法,能快速准确的识别网络社团,效率高,接近线性,但是对于二分图会产生震荡现象

资源截图

代码片段和文件信息

package lpa;
import java.util.Arrays;

public class other {
static int Vertex=7;
static int[] Lable_t=new int[Vertex];//存放各个点的标签t时刻
static int[] Lable_t_1=new int[Vertex];//存放各个点的标签t-1时刻
static int[] Importance_sorting=new int[Vertex];//存放各个点的重要度
static int[] Vertex_neighbour_lable=new int[Vertex];//存放邻居节点的标签个
static int[] Sum_degree=new int[Vertex];//存放邻居节点的标签个
//static int[][] Degree_array=new int[Vertex][2];//暂时没用
static int [][] Adjmartrix=new int[Vertex][Vertex];//存放邻接矩阵
/**********************
 * 对排过序的每个元素进行标签赋值
 * 把孤立节点排除在外
 * *************************/
public static void main(String[] args) {
int Iteration=0;
//int Edge_graph[][]={{12}{14}{13}{23}{24}{34}};
//int Edge_graph[][]={{12}{14}{23}{36}{45}{56}};
//int Edge_graph[][]={{12}{14}{23}{36}{56}{45}};
//int Edge_graph[][]={{12}{13}{23}{34}{46}{45}{65}};
int Edge_graph[][]={{12}{13}{23}{34}{45}{75}{65}{67}};
//int Edge_graph[][]={{12}{13}{23}{45}{56}};
//int Edge_graph[][]={{14}{15}{16}{23}{27}{34}{37}{46}{56}{58}{67}{616}{714}{89}{811}{812}{910}{1011}{1013}{1112}{1116}{1213}{1415}{1418}{1517}{1519}{1520}{1617}{1620}{1621}{1819}{1920}{1921}};
/**********************初始化*************************/
Initing(Edge_graph);
Ininting_Degree_Sorting(Edge_graph);//对重要度进行排序,亦是随机序列
//Sum_degree_vertex(Edge_graph);
/*****************对每一个节点,返回所有邻居中某标签数最多的标签值*****************/
while(!Arrays.equals(Lable_t_1Lable_t)){
Iteration++;
Lable_Spread();
}
for(int i=0;i System.out.print(Lable_t[i]+“ “);
}
System.out.print(“\n“);
for(int i=0;i System.out.print(i+“ “);
}
System.out.print(“\n“);
System.out.println(“Iteration:“+Iteration);
}
/**********************数据初始化*************************/
public static void Initing(int edge[][]){//
for(int i=0;i Adjmartrix[edge[i][0]-1][edge[i][1]-1]=1;
Adjmartrix[edge[i][1]-1][edge[i][0]-1]=1;
}
Arrays.fill(Sum_degree0);
for(int i=0;i Lable_t[i]=i;
Importance_sorting[i]=0;
Lable_t_1[i]=0;
Vertex_neighbour_lable[i]=0;
}
}

/**********************选择更新策略*************************/
public static void Lable_Spread(){
for(int i=0;i Lable_t_1[i]=Lable_t[i];
Lable_Update();
//System.out.println(“Lable_Spread:“);
}
/**********************选择标签*************************/
public static int Lable_Select(int v){
int ve

评论

共有 条评论

相关资源