📄 communitystructuredetectingofcomplexnetwork(realizethegnalgorithmbyjavacode).txt
字号:
import java.io.*;
class Progress {
Static int num[][];
Static int num1[][];
Static int cost[][];
Static int w[];
Static int d[];
Static int shorttree[][];
Static int f[];
Static int dist[][];
Static int path[][][];
Static int pathnum[];
Static int fl[]; //\u6807\u5FD7\u662F\u5426\u662F\u53F6\u5B50\u8282\u70B9
Static float edgeweight[][]; //\u4068\u793A\u8FB9\u4ECB\u6570
Static int bubble[];
void pro(int n) {
try {
File f1 = new File("D:\\毕业设计\\毕业设计信息及程序\\学生信息.txt");
File f2 = new File("D:\\毕业设计\\毕业设计信息及程序\\全部学生号码.txt");
FileReader Ones = new FileReader(f1);
BufferedReader One = new BufferedReader(Ones);
FileReader Twos = new FileReader(f2);
BufferedReader Two = new BufferedReader(Twos);
String s1 = new String();
String s2 = new String();
String s = new String();
s1 = s2 = s = null;
num = new int[n][n];
num1 = new int[n][n];
int count1 = 0, count2 = 0, c1 = 0, c2 = 0, flag1 = 0, flag2 = 0;
for (int m = 0; m < n; m++) {
for (int k = 0; k < n; k++) {
num[m][k] = 0;
num1[m][k] = 0;
}
}
while ((s = One.readLine()) != null) {
if (flag1 == 1 && flag2 == 1&&c1<40&&c2<40) {
num[c1][c2]++;
}
count1 = 0;
count2 = 0;
flag1 = 0;
flag2 = 0;
c1 = 0;
c2 = 0;
s1 = s;
s = One.readLine();
while ((s2 = Two.readLine()) != null) {
if (s2.equals(s1)) {
c1 = count1;
flag1 = 1;
} else {
count1++;
}
if (s2.equals(s)) {
c2 = count2;
flag2 = 1;
} else {
count2++;
}
}
f2 = new File("D:\\毕业设计\\毕业设计信息及程序\\全部学生号码.txt");
Twos = new FileReader(f2);
Two = new BufferedReader(Twos);
}
/* for(int i=0;i<n;i++)
{ for(int j=0;j<n;j++)
{System.out.print(num[i][j]);
if(num[i][j]<10)
System.out.print(" ");
else if(num[i][j]>=10&&num[i][j]<100)
System.out.print(" ");
else if(num[i][j]>=100&&num[i][j]<1000)
System.out.print(" ");
else if(num[i][j]>=1000&&num[i][j]<10000)
System.out.print(" ");
}
System.out.println(" ");
}
*/
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
num[i][j] = num[i][j] + num[j][i];
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
num[j][i] = num[i][j];
}
}
for (int i = 0; i < n; i++) {
num[i][i] = 0;
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
num1[i][j] = num[i][j];
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (num[i][j] > 1) {
num[i][j] = 1;
} else {
num[i][j] = 0;
}
}
}
/* for(int i=0;i<n;i++)
{ for(int j=0;j<n;j++)
{System.out.print(num[i][j]);
if(num[i][j]<10)
System.out.print(" ");
else if(num[i][j]>=10&&num[i][j]<100)
System.out.print(" ");
else if(num[i][j]>=100&&num[i][j]<1000)
System.out.print(" ");
else if(num[i][j]>=1000&&num[i][j]<10000)
System.out.print(" ");
}
System.out.println(" ");
}
*/
System.out.println("num[][]矩阵为:");
for(int i=0;i<n;i++)
{ for(int j=0;j<n;j++)
{
System.out.print(num[i][j]);
System.out.print(" ");
}
System.out.println(" ");
}
} catch (IOException e) { //try
System.out.println("IOException!");
}
} //Pro()
void shortest_path(int n, int v) {
try {
int s[];
pathnum = new int[n];
cost = new int[n][n];
dist = new int[n][n];
s = new int[n];
path = new int[n][n][n];
int i, j;
for (i = 0; i < n; i++) { //\u7ED9cost\u8D4B\u503C
for (j = 0; j < n; j++) {
if (num[i][j] == 0) {
cost[i][j] = n + 1;
}
if (i == j) {
cost[i][j] = 0;
} else if (num[i][j] == 1) {
cost[i][j] = num[i][j];
}
}
}
s[v] = 1;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
//\u6807\u8BB0\u6570\u7EC4\u7F6E0
dist[i][j] = 1; //\u7B2Ci\u4E2A\u8282\u70B9\u7B2Cj\u6761\u8DEF\u5F40\u7640\u957F\u5EA6
path[i][j][0] = v; //\u7B2Ci\u4E2A\u8282\u70B9\u7640\u6BCF\u6761\u8DEF\u5F40\u7640\u8D77\u59CB\u70B9\u662Fv
}
pathnum[i] = 0;
s[i] = 0;
}
for (int m = 0; m < n; m++) {
if (s[m] == 0 && cost[m][v] == 1) {
path[m][0][1] = m;
s[m] = 1;
pathnum[m]++;
dist[m][pathnum[m] - 1]++;
}
}
for (i = 0; i < n; i++) {
int flag = 0;
if (s[i] == 0) {
for (j = 0; j < n; j++) {
if (cost[i][j] == 1 && s[j] == 1) {
flag = 1;
pathnum[i]++;
for (int b = 0; b < pathnum[j]; b++) {
int m = 0;
for (m = 0; m < dist[j][b]; m++) {
path[i][pathnum[i] - 1][m] = path[j][b][m];
}
path[i][pathnum[i] - 1][m] = i;
dist[i][pathnum[i] - 1] = dist[j][b] + 1;
}
} //if
}
if (flag == 1) {
s[i] = 1;
}
} //if
}
for (i = 0; i < n; i++) {
if (v != i)
for (j = 0; j < pathnum[i]; j++) { if(pathnum[i]==1)
System.out.println("\u4ECE\u9876\u70B9"+v+"\u5230\u9876\u70B9"+i+"\u7640\u8DEF\u5F40\u662F:");
else
System.out.println("\u4ECE\u9876\u70B9"+v+"\u5230\u9876\u70B9"+i+"\u7640\u7B2C"+(j+1)+"\u6761\u8DEF\u5F40\u662F:");
for (int k = 0; k < dist[i][j]; k++) {
System.out.print(path[i][j][k]);
System.out.print(" ");
}
System.out.println();
}
}
/* for( i=0;i<n;i++)
{ int min=n+1;
if(v!=i)
{ for( j=0;j<pathnum[i];j++)
if (dist[i][j] < min)
min = dist[i][j];
for (j = 0; j < pathnum[i]; j++) {
if (dist[i][j] == min) {
for (int k = 0; k < dist[i][j]; k++) {
System.out.print(path[i][j][k]);
// if(path[i][j][k]!=v)
// w[path[i][j][k]]++;
System.out.print(" ");
}
System.out.println();
}
} //for
}//if
}//for
*/
} catch (ArrayIndexOutOfBoundsException e) { //try
System.out.println("ArrayIndexOutOfBoundsException Exception!");
}
} //shortest_path
void distAndweight(int v, int n) {
int Q[] = new int[n];
int top = 0, rear = 0;
int topitem;
w = new int[n];
d = new int[n];
for (int i = 0; i < n; i++) {
w[i] = 0;
Q[i] = 0;
d[i] = 0;
}
d[v] = 0;
w[v] = 1;
for (int i = 0; i < n; i++) {
if (cost[i][v] == 1) {
d[i] = 1;
w[i] = 1;
Q[rear++] = i;
}
} while (top != rear) {
topitem = Q[top];
top++;
for (int i = 0; i < n; i++) {
if (cost[i][topitem] == 1) {
if (i != v && d[i] == 0) {
d[i] = d[topitem] + 1;
w[i] = w[topitem];
Q[rear++] = i;
} else if (d[i] == d[topitem] + 1) {
w[i] = w[topitem] + w[i];
} else if (d[i] != 0 && d[i] < d[topitem] + 1) {
d[i] = d[i];
}
}
}
} //while
} //distAndweight
/* void printw(int n,int v)
{
System.out.println("\u5F53\u6E40\u70B9\u4E3A"+v+"\u65F6");
for(int i=0;i<n;i++)
System.out.println(w[i]);
}
*/
void findleave(int v, int n) {
fl = new int[n];
int flagleave[] = new int[n];
for (int i = 0; i < n; i++) {
fl[i] = 0;
flagleave[i] = 0;
}
for (int i = 0; i < n; i++) {
if (v != i) {
for (int j = 0; j < pathnum[i]; j++) {
for (int k = 0; k < dist[i][j]; k++) {
flagleave[path[i][j][k]] = 1;
}
}
}
for (int m = 0; m < n; m++) {
fl[m] += flagleave[m];
}
for (int m = 0; m < n; m++) {
flagleave[m] = 0;
}
}
} //findleave()
void createshortree(int v, int n) {
shorttree = new int[n][n];
for (int i = 0; i < n; i++) {
if (v != i) {
for (int j = 0; j < pathnum[i]; j++) {
for (int k = 1; k < dist[i][j]; k++) {
shorttree[path[i][j][k - 1]][path[i][j][k]] = 1;
}
}
}
} //for
} //createshorttree
void bubblesort(int d[], int n) {
int i, j;
bubble = new int[n];
for (i = 0; i < n; i++) {
bubble[i] = d[i];
}
int flag = 1;
int temp;
i = n - 2;
while (i > 0 && flag == 1) {
flag = 0;
for (j = 1; j <= i; j++) {
if (bubble[j] < bubble[j + 1]) {
temp = bubble[j];
bubble[j] = bubble[j + 1];
bubble[j + 1] = temp;
flag = 1;
}
}
i--;
} //while
} //bubblesort
void calculate(int n) {
edgeweight = new float[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
edgeweight[i][j] = 0; //\u8FB9\u7640\u6743\u91CD\u521D\u59CB\u5316\u4E3A0
}
}
for (int i = 0; i < n; i++) {
if (fl[i] == 1) {
for (int j = 0; j < n; j++) {
if (shorttree[i][j] == 1 && w[i] != 0) {
edgeweight[i][j] = w[j] / w[i];
}
}
}
}
for (int j = 0; j < n; j++) {
for (int i = 0; i < n; i++) {
if (shorttree[j][i] == 1 && edgeweight[j][i] == 0) {
for (int m = 0; m < n; m++) {
if (shorttree[i][m] == 1 && d[m] > d[j]) {
edgeweight[j][i] = edgeweight[j][i] +
edgeweight[i][m];
}
}
if (w[j] != 0) {
edgeweight[j][i] = (edgeweight[j][i] + 1) * (w[i] / w[j]);
}
}
}
}
} //calculate
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -