假设我们有一个像这样的4x4邻接矩阵:
和给定的顶点,我们说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
}
}
}
}
答案 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
存在j
,k
已连接到i
并且k
已连接,则表示k
与j
相关联到PdfContentReaderTool <pdf file> [<output file>|stdout] [<page num>]
。所以这个矩阵是通过连接原始图中两个边连接的每对顶点形成的图。