scipy.sparse.csgraph.construct_dist_matrix¶
-
scipy.sparse.csgraph.
construct_dist_matrix
(graph, predecessors, directed=True, null_value=np.inf)¶ Construct distance matrix from a predecessor matrix
New in version 0.11.0.
Parameters: - graph : array_like or sparse
The N x N matrix representation of a directed or undirected graph. If dense, then non-edges are indicated by zeros or infinities.
- predecessors : array_like
The N x N matrix of predecessors of each node (see Notes below).
- directed : bool, optional
If True (default), then operate on a directed graph: only move from point i to point j along paths csgraph[i, j]. If False, then operate on an undirected graph: the algorithm can progress from point i to j along csgraph[i, j] or csgraph[j, i].
- null_value : bool, optional
value to use for distances between unconnected nodes. Default is np.inf
Returns: - dist_matrix : ndarray
The N x N matrix of distances between nodes along the path specified by the predecessor matrix. If no path exists, the distance is zero.
Notes
The predecessor matrix is of the form returned by
graph_shortest_path
. Row i of the predecessor matrix contains information on the shortest paths from point i: each entry predecessors[i, j] gives the index of the previous node in the path from point i to point j. If no path exists between point i and j, then predecessors[i, j] = -9999Examples
>>> 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.]])