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

📄 communitystructuredetectingofcomplexnetwork(realizethegnalgorithmbyjavacode).txt

📁 复杂网络社团结构的发现
💻 TXT
📖 第 1 页 / 共 2 页
字号:
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 + -