我有以下邻接矩阵:
array([[0, 1, 1, 0, 0, 0, 0],
[1, 0, 1, 0, 0, 0, 0],
[1, 1, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 0, 1],
[0, 0, 0, 1, 0, 1, 0],
[0, 0, 0, 0, 1, 0, 1],
[0, 0, 0, 1, 0, 1, 0]])
可以像下面这样绘制:
我的目标是识别连接的图 ABC 和 DEFG。似乎我需要使用深度优先搜索算法,而 Scipy 实现了该算法。下面是我的代码:
from scipy.sparse import csr_matrix
from scipy.sparse.csgraph import depth_first_order
import numpy as np
test = np.asarray([
[0, 1, 1, 0, 0, 0, 0],
[1, 0, 1, 0, 0, 0, 0],
[1, 1, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 0, 1],
[0, 0, 0, 1, 0, 1, 0],
[0, 0, 0, 0, 1, 0, 1],
[0, 0, 0, 1, 0, 1, 0]
])
graph = csr_matrix(test)
result = depth_first_order(graph, 0)
但是我没有得到结果:
>>> result
(array([0, 1, 2]), array([-9999, 0, 1, -9999, -9999, -9999, -9999]))
那是什么 array([-9999, 0, 1, -9999, -9999, -9999, -9999])
?此外,在文档中,他们谈论的是一种稀疏矩阵而不是邻接矩阵。但是按定义,邻接矩阵似乎也是一种稀疏矩阵,所以对我来说不太清楚。
array([0, 0, 0, 1, 1, 1, 1]
简单地索引了连接组件:0代表ABC,1代表DEFG。在你回答之前,我曾经在寻找这个函数时错过了这一点,可能是因为我的邻接矩阵中只有两个图形。 - snoob dogg