在邻接矩阵中,如何找到给定顶点的邻居的邻居?

时间:2017-01-12 03:37:01

标签: algorithm matrix graph

假设我们有一个像这样的4x4邻接矩阵:

enter image description here

和给定的顶点,我们说int v=1

如何找到顶点1的邻居的邻居,并将它们添加到列表中?例如,如果我想从顶点1到顶点4,我必须首先到顶点2,然后从顶点2到顶点4,因为没有从1到4的直接路径。我想添加顶点4和同样是一个清单。

现在这就是我所得到的:

int v=1;
for(int i=0;i<adjmat.length;i++){
            if (i==v){
                for(int j=0;j<adjmat[i].length;j++){
                    if (j!=i){ // self loops do not count
                        // if adjmat[i][j] has a neighbor, add the neighbor to a list 
                    }
                }
            }
        }

2 个答案:

答案 0 :(得分:0)

你所拥有的似乎是正确的。

只需几点说明: 当你的循环从0开始时,你的图形的索引从1开始。你可能并不担心这个,但无论如何,让我们假设顶点以1开头命名,并且数组以0开头。

然后唯一真正关心的是你的最外层循环。如果你只需要找到一个顶点v的邻居的邻居(例如,v = 1)

int v_i = v-1;
for(int j=0;j<adjmat[v_i].length;j++){
    if (v_i!=j){ // self loops do not count
        // if adjmat[i][j] has a neighbor, add the neighbor to a list 
        //*NOTE maybe only if that neighbor is also not a self loop, one of v's first neighbors, or v 
    }
}

答案 1 :(得分:0)

如果A是邻接矩阵,则考虑通过矩阵乘法构造的A ^ 2,其中AND用于内积并且用OR求和。会员的价值

A^2(i,j) = OR(k){ A(i,k) AND A(k,j) }

如果i存在jk已连接到i并且k已连接,则表示kj相关联到PdfContentReaderTool <pdf file> [<output file>|stdout] [<page num>] 。所以这个矩阵是通过连接原始图中两个边连接的每对顶点形成的图。