smallworld.java

来自「复杂网络中的小世界网络模型 用于实现小世界网络的模拟使用」· Java 代码 · 共 116 行

JAVA
116
字号
import java.util.Scanner;
import java.util.Random;
import java.util.Arrays;

public class Smallworld {
    
    public static void main(String[] args) {
        System.out.print("please enter the number of the node:");
        Scanner in1 = new Scanner(System.in);
        int N0 = in1.nextInt();
        System.out.println("the number of the node is:" + N0);
        int[][] w = new int[N0][N0];
        float[] N = new float[N0];
        float[] Nj = new float[N0];
        int[] min = new int[3];
        float[][] Ni = new float[N0][N0];
        int i, j, l;
        float X;
        for (i = 0; i < N0; i++) {
            for (j = 0; j < N0; j++) {
                if ((i + 1) % N0 == j | (i + 2) % N0 == j)
                    w[i][j] = 1;
                else
                    w[i][j] = 0;
            }
        }
        for (i = 0; i < N0; i++) {
            for (j = 0; j < N0; j++) {
                if (w[i][j] == 1)
                    w[j][i] = 1;
            }
        }
        
                /*
                 * for(i=0;i<N0;i++){ for(j=0;j<N0;j++){ if(j%N0==N0-1){
                 * System.out.print(w[i][j]); System.out.println(); } else
                 * System.out.print(w[i][j]); } }
                 */
        System.out.print("please enter the Multiples of link:");
        Scanner in2 = new Scanner(System.in);
        int S = in2.nextInt();
        // System.out.println("the Multiples is:"+S);
        for (i = 0; i < N0; i++) {
            Random n = new Random();
            N[i] = n.nextFloat();
        }
                /*
                 * for (i=0;i<N0;i++){ System.out.print(N[i]); System.out.print(","); }
                 */
        for (l = 0; l < S; l++) {
            for (i = 0; i < N0; i++) {
                for (j = 0; j < N0; j++) {
                    if (i == j)
                        Ni[i][j] = 1;
                    else if (N[i] > N[j])
                        Ni[i][j] = N[i] - N[j];
                    else if (N[i] < N[j])
                        Ni[i][j] = N[j] - N[i];
                }
                
            }
            
                        /*
                         * for (i=0;i<N0;i++){ System.out.println(); for(j=0;j<N0;j++){
                         * System.out.print(Ni[i][j]); System.out.print(","); } }
                         */
            for (i = 0; i < N0; i++) {
                for (j = 0; j < N0; j++)
                    Nj[j] = Ni[i][j];
                Arrays.sort(Ni[i]);
                
                Random x = new Random();
                X = x.nextFloat();
                for (int m = 0; m < 3; m++) {
                    for (int n = 0; n < N0; n++) {
                        if (Ni[i][m] == Nj[n]) {
                            min[m] = n;
                            // System.out.println(n);
                        }
                    }
                }
                if (X >= 0 && X <= 0.5) {
                    w[i][min[0]] += 1;
                    w[min[0]][i] = w[i][min[0]];
                } else if (X >= 0.5 && X <= 0.8) {
                    w[i][min[1]] += 1;
                    w[min[1]][i] = w[i][min[1]];
                } else if (X >= 0.8 && X <= 1) {
                    w[i][min[2]] += 1;
                    w[min[2]][i] = w[i][min[2]];
                }
            }
                        /*
                         * for (i=0;i<N0;i++){ System.out.println(); for(j=0;j<N0;j++){
                         * System.out.print(Ni[i][j]); System.out.print(","); } }
                         */
        }
        for (i = 0; i < N0; i++) {
            for (j = 0; j < N0; j++) {
                if (j % N0 == N0 - 1) {
                    System.out.print(w[i][j]);
                    System.out.println();
                } else {
                    System.out.print(w[i][j]);
                    System.out.print(",");
                }
            }
        }
        Attribute sw = new Attribute(N0, w);
        sw.cluster();
        sw.avepath();
        sw.distribute();
        
    }
}

⌨️ 快捷键说明

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