如何在Java中创建邻接矩阵

时间:2015-12-02 07:02:57

标签: java arrays matrix graph vertex

所以这是我现在的代码:

for (int i = 0; i < 3; i++){
            for (int j = 0; j < 3; j++){
                System.out.print(B[i][j] + ": ");
                if (i < 2){
                    temp2 = B[i+1][j];
                    System.out.print(temp2 + "-");
                }

                if (j < 2){
                    temp2 = B[i][j+1];
                    System.out.print(temp2 + "-");
                }

                if (i > 0){
                    temp2 = B[i-1][j];
                    System.out.print(temp2 + "-");
                }
                if (j > 0){
                    temp2 = B[i][j-1];
                    System.out.print(temp2 + "-");
                }
                System.out.println(" ");
            }
        }

它现在正在做的是打印出一个如下所示的列表:

1: 4-0
0: 2-3-1
3: 6-0
4: 7-2-1
2: 5-6-0-4
6: 8-3-2
7: 5-4
5: 8-2-7
8: 6-5

此列表是此图的相邻顶点

1 0 3  
4 2 6
7 5 8

我已经检查过,它会为这个2d数组中的每个值打印出正确的相邻顶点。所以我想知道如何将其变成邻接矩阵。我知道我必须首先创建一个大小为9x9的二维数组,但是我实际上将值放在数组中的正确位置时遇到了麻烦。所以当我找到相邻的顶点时,我怎么能把这个值放到一个邻接矩阵中呢?我也可以尝试将这些放入链表中,因为这会占用更少的空间,但我认为矩阵会更容易。

1 个答案:

答案 0 :(得分:0)

如果您调用9x9邻接矩阵M,并且您发现节点0与2,3和1相邻,则设置

M[0][2]=1
M[0][3]=1
M[0][1]=1

因为邻接矩阵是对称的:

M[2][0]=1
M[3][0]=1
M[1][0]=1

索引会告诉您要引用的节点,如果节点相邻则值为1,否则为0。 这听起来像是你应该弄清楚的家庭作业。