sno*_*ogg 9 python numpy graph scipy
我有以下邻接矩阵:
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]])
Run Code Online (Sandbox Code Playgroud)
可以这样画:
我的目标是确定连通图 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)
Run Code Online (Sandbox Code Playgroud)
但我没有得到结果:
>>> result
(array([0, 1, 2]), array([-9999, 0, 1, -9999, -9999, -9999, -9999]))
Run Code Online (Sandbox Code Playgroud)
那是array([-9999, 0, 1, -9999, -9999, -9999, -9999])什么?此外,在文档中,他们谈论的是稀疏矩阵而不是邻接矩阵。但是根据定义,邻接矩阵似乎是一个稀疏矩阵,所以我不清楚。
虽然您确实可以使用 DFS 来查找连接的组件,但 SciPy 使用scipy.sparse.csgraph.connected_components. 以你的例子:
In [3]: connected_components(test)
Out[3]: (2, array([0, 0, 0, 1, 1, 1, 1], dtype=int32))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3307 次 |
| 最近记录: |