扩展邻接矩阵邻居

时间:2014-04-20 13:25:28

标签: matlab

我有一个邻接矩阵。例如,以下,

+---+-------------------------------+
|   |   1     2     3     4     5   |
+---+-------------------------------+
| 1 |   0     1     0     0     0   |
| 2 |   1     0     0     0     1   |
| 3 |   0     0     0     1     0   |
| 4 |   0     0     1     0     1   |
| 5 |   0     1     0     1     0   |
+---+-------------------------------+ 

我们如何提取以下邻接矩阵,没有for循环,其中每个元素(行或列)添加了已存在的邻居的邻居?例如,元素3与元素4相邻,因此在新的邻接矩阵中,元素3将具有元素45的邻居。

+---+-------------------------------+
|   |   1     2     3     4     5   |
+---+-------------------------------+
| 1 |   0     1     0     0     1   |
| 2 |   1     0     0     1     1   |
| 3 |   0     0     0     1     1   |
| 4 |   0     1     1     0     1   |
| 5 |   1     1     1     1     0   |
+---+-------------------------------+ 

致以最诚挚的问候,

透特

1 个答案:

答案 0 :(得分:1)

如果A是你的邻接矩阵,那么你想要的矩阵是A2,其中:

A2 = (A+A^2) > 0

这是因为邻接矩阵的平方具有分量s_ij,其中s_ij是i和j之间的长度为2的路径的数量。 (In fact (A^n)_ij is the number of paths from i to j of length n)。

因此,如果您添加A(其中包含由长度为1的路径连接的所有对)到A ^ 2,其中包含由长度为2的路径链接的所有对,您将获得长度为多少的路径1或2.(我们只关心这种情况是否正面)。长度为2的路径是邻居邻居的路径。

您可能希望将对角线设置为零,但