Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 在邻接矩阵中,如何找到给定的顶点';s的邻居';谁的邻居?_Algorithm_Matrix_Graph - Fatal编程技术网

Algorithm 在邻接矩阵中,如何找到给定的顶点';s的邻居';谁的邻居?

Algorithm 在邻接矩阵中,如何找到给定的顶点';s的邻居';谁的邻居?,algorithm,matrix,graph,Algorithm,Matrix,Graph,假设我们有一个4x4邻接矩阵,如下所示: 一个给定的顶点,比如说intv=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[

假设我们有一个4x4邻接矩阵,如下所示:

一个给定的顶点,比如说
intv=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 
                    }
                }
            }
        }
intv=1;

对于(inti=0;i你所说的似乎是正确的

请注意: 当循环从0开始时,图形的索引从1开始。您可能不担心这一点,但在任何情况下,让我们假设顶点的命名从1开始,数组从0开始

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

intv_i=v-1;

对于(int j=0;j<p>),如果A是邻接矩阵,则考虑由乘积和内积构成的^ ^ 2,并与成员< /P>的值求和。
A^2(i,j) = OR(k){ A(i,k) AND A(k,j) }
如果存在一个
k
使得
i
连接到
k
,并且
k
连接到
j
,那么这个矩阵就是通过连接原始图中可以由两条边连接的每一对顶点而形成的图

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