路径

距离

sknetwork.path.get_distances(input_matrix: csr_matrix, source: int | Iterable | None = None, source_row: int | Iterable | None = None, source_col: int | Iterable | None = None, transpose: bool = False, force_bipartite: bool = False) ndarray | Tuple[ndarray, ndarray][source]

获取从源节点(或一组源节点)到其他节点的跳数距离。

参数:
  • input_matrix – 图的邻接矩阵或二部邻接矩阵。

  • source – 如果是整数,则为源节点的索引。如果列表或数组,则为源节点的索引(返回到其中一个节点的最短距离)。

  • source_row – 对于二部图,源节点在行和列上的索引。参数 source_row 是 source 的别名(至少其中一个必须为 None)。

  • source_col – 对于二部图,源节点在行和列上的索引。参数 source_row 是 source 的别名(至少其中一个必须为 None)。

  • transpose – 如果为 True,则转置输入矩阵。

  • force_bipartite – 如果为 True,则将输入矩阵视为二部图的二部邻接矩阵。如果指定了参数 source_row 或 source_col,则将其设置为 True

返回值:

distances – 从源节点到其他节点的距离向量(如果不存在从源节点到目标节点的路径,则距离为 -1)。对于二部图,返回两个向量,一个用于行,另一个用于列。

返回值类型:

形状为 (n_nodes,) 的 np.ndarray

示例

>>> from sknetwork.data import cyclic_digraph
>>> adjacency = cyclic_digraph(3)
>>> get_distances(adjacency, source=0)
array([0, 1, 2])
>>> get_distances(adjacency, source=[0, 2])
array([0, 1, 0])

最短路径

sknetwork.path.get_shortest_path(input_matrix: csr_matrix, source: int | Iterable | None = None, source_row: int | Iterable | None = None, source_col: int | Iterable | None = None, force_bipartite: bool = False) ndarray | Tuple[ndarray, ndarray][source]

获取从源节点(或一组源节点)到其他节点的最短路径(以跳数表示)。

参数:
  • input_matrix – 图的邻接矩阵或二部邻接矩阵。

  • source – 如果是整数,则为源节点的索引。如果是列表,则为源节点的索引(返回到其中一个节点的最短距离)。

  • source_row – 对于二部图,源节点在行和列上的索引。参数 source_row 是 source 的别名(至少其中一个必须为 None)。

  • source_col – 对于二部图,源节点在行和列上的索引。参数 source_row 是 source 的别名(至少其中一个必须为 None)。

  • force_bipartite – 如果为 True,则将输入矩阵视为二部图的二部邻接矩阵。如果指定了参数 source_row 或 source_col,则将其设置为 True

返回值:

path – 从源节点(或一组源节点)到其他节点的最短路径的邻接矩阵。如果输入图是二部图,则矩阵的形状为 (n_row + n_col, n_row + n_col),其中新索引对应于原始图的行列。

返回值类型:

sparse.csr_matrix

示例

>>> from sknetwork.data import cyclic_digraph
>>> adjacency = cyclic_digraph(3)
>>> path = get_shortest_path(adjacency, source=0)
>>> path.toarray().astype(int)
array([[0, 1, 0],
       [0, 0, 1],
       [0, 0, 0]])