⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 attribute.java

📁 复杂网络中的小世界网络模型 用于实现小世界网络的模拟使用
💻 JAVA
字号:
import static java.util.Arrays.fill;
import java.util.Arrays;
class Attribute {
	static int N0, i, j;

	static int[][] matrix;

	Attribute(int n, int w[][]) {
		// int i,j;
		N0 = n;
		matrix = w;
		/*
		 * System.out.println(); for (i = 0; i < N0; i++) { for (j = 0; j < N0;
		 * j++) { if (j % N0 == N0 - 1) { System.out.print(matrix[i][j]);
		 * System.out.println(); } else { System.out.print(matrix[i][j]);
		 * System.out.print(","); } } }
		 */
	}

	public void cluster() {
		double sum = 0;
		double[] c = new double[N0];
		fill(c, -1);
		// int[][] NW = new int[N0][N0];
		int[] K = new int[N0];
		// fill(NW, 0);
		fill(K, -1);
		for (i = 0; i < N0; i++) {
			int k = -1, k0 = 0;
			int Ei = 0;
			for (j = 0; j < N0; j++) {
				if (matrix[i][j] != 0) {
					k += 1;
					K[k] = j;
					k0 = k + 1;
				}

			}
			// System.out.println(k0);
			int[][] NW = new int[k0][k0];
			for (int m = 0; m < k0; m++)
				for (int n = 0; n < k0; n++)
					NW[m][n] = 0;
			for (int m = 0; m < k0; m++) {
				for (int n = 0; n < k0; n++) {
					int x = K[m];
					int y = K[n];
					if (matrix[x][y] != 0)
						NW[m][n] = 1;
				}
			}
			for (int m = 0; m < k0; m++) {
				for (int n = 0; n < k0; n++) {
					if (NW[m][n] == 1) {
						Ei += 1;
					}
				}
			}
			// System.out.println(Ei);
			c[i] = (double) Ei / ((double) k0 * ((double) k0 - 1));
			// System.out.println(c[i]);
		}
		for (i = 0; i < N0; i++)
			sum = sum + c[i];
		double Ci = sum / (double) N0;
		System.out.println("the average cluster is:" + Ci);

	}

	public void avepath() {
		int[][] path = new int[N0][N0];
		float[][] md = new float[N0][N0];
		for (int m = 0; m < N0; m++)
			for (int n = 0; n < N0; n++) {
				md[m][n] = 0;
				path[m][n] = 0;
			}
		double sum = 0;
		for (i = 0; i < N0; i++) {
			for (j = 0; j < N0; j++) {
				md[i][j] = (float) matrix[i][j];
				if (md[i][j] == 0) {
					md[i][j] = Float.POSITIVE_INFINITY;
				}
				if (i != j && md[i][j] < Float.POSITIVE_INFINITY) {
					path[i][j] = i;
				} else
					path[i][j] = -1;
			}
		}
		for (int k = 0; k < N0; k++) {
			for (i = 0; i < N0; i++) {
				for (j = 0; j < N0; j++) {
					if (md[i][k] + md[k][j] < md[i][j] && i != j) {
						md[i][j] = md[i][k] + md[k][j];
						path[i][j] = path[k][j];
					} else if (i == j)
						md[i][j] = 0;
				}
			}
		}
		/*
		 * for(i=0;i<N0;i++) for(j=0;j<N0;j++){ System.out.print(md[i][j]);
		 * if(j%N0==N0-1) System.out.println(); else System.out.print(","); }
		 * for(i=0;i<N0;i++) for(j=0;j<N0;j++){ System.out.print(path[i][j]);
		 * if(j%N0==N0-1) System.out.println(); else System.out.print(","); }
		 */
		for (i = 0; i < N0; i++) {
			for (j = 0; j < N0; j++) {
				if (i >= j) {
					sum = sum + (double) md[i][j];
				}
			}
		}
		// System.out.println(sum);
		double L = (2 * sum) / ((double) N0 * ((double) N0 + 1));
		System.out.println("the average path is:" + L);
		float Di = 0;
		for (i = 0; i < N0; i++) {
			for (j = 0; j < N0; j++) {
				if (Di < md[i][j])
					Di = md[i][j];
			}
		}
		System.out.println("the net's diameter is :" + Di);
	}
public void distribute(){
	float []ki=new float[N0];
	fill(ki,0);
	float [] t=new float[N0];
	fill(t,0);
	int [] s=new int[N0];
	fill(s,0);
	for(i=0;i<N0;i++){
		ki[i]=0;
		for(j=0;j<N0;j++){
			if(matrix[i][j]!=0)
				ki[i]=ki[i]+matrix[i][j];
		}
	}
	Arrays.sort(ki);
	j=-1;
	for(i=0;i<N0;i++){
		if(i==0||ki[i]!=ki[i-1]){
			j+=1;
			t[j]=ki[i];		
		}
		if(ki[i]==t[j]){
			s[j]+=1;
		}
	}
	int c=j+1;
	float [][]pki=new float[2][c];
	for(j=0;j<c;j++){
		pki[0][j]=t[j];
		pki[1][j]=(float)s[j]/(float)N0;
	}
	System.out.println("the nodes distribute is:");
  for(i=0;i<2;i++)
	  for(j=0;j<c;j++){
		  System.out.print(pki[i][j]);
		  if(j%c==c-1)
			  System.out.println();
		  else System.out.print(",");
	  }
}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -