scipy.sparse.csgraph.construct_dist_matrix

scipy.sparse.csgraph.construct_dist_matrix(graph, predecessors, directed=True, null_value=np.inf)

从前置矩阵构造距离矩阵

0.11.0 新版功能.

参数
graph类似阵列或稀疏

有向图或无向图的N×N矩阵表示。如果是密集的,则非边由零或无穷大表示。

predecessorsarray_like

每个节点的前置任务的N x N矩阵(请参阅下面的注释)。

directed布尔值,可选

如果为True(默认值),则对有向图进行操作:仅沿路径csgraph从点i移动到点j [i, j] 。如果为false,则对无向图进行操作:算法可以沿着csgraph从i点前进到j点。 [i, j] 或csgraph [j, i] 。

null_value布尔值,可选

用于未连接节点之间距离的值。默认值为np.inf

退货
dist_matrixndarray

沿前置矩阵指定的路径的节点之间距离的N x N矩阵。如果不存在路径,则距离为零。

注意事项

前置矩阵的形式由返回 shortest_path 。前导矩阵的行i包含关于从点i开始的最短路径的信息:每个条目前导 [i, j] 给出从点i到点j的路径中上一个节点的索引。如果点i和j之间不存在路径,则前置节点 [i, j] =-9999

示例

>>> from scipy.sparse import csr_matrix
>>> from scipy.sparse.csgraph import construct_dist_matrix
>>> graph = [
... [0, 1, 2, 0],
... [0, 0, 0, 1],
... [0, 0, 0, 3],
... [0, 0, 0, 0]
... ]
>>> graph = csr_matrix(graph)
>>> print(graph)
  (0, 1)    1
  (0, 2)    2
  (1, 3)    1
  (2, 3)    3
>>> pred = np.array([[-9999, 0, 0, 2],
...                  [1, -9999, 0, 1],
...                  [2, 0, -9999, 2],
...                  [1, 3, 3, -9999]], dtype=np.int32)
>>> construct_dist_matrix(graph=graph, predecessors=pred, directed=False)
array([[0., 1., 2., 5.],
       [1., 0., 3., 1.],
       [2., 3., 0., 3.],
       [2., 1., 3., 0.]])