networkx中邻接矩阵的路径

2024-05-17 15:16:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用networkx库将图中的路径转换为邻接矩阵。 我可以将整个图转换成邻接矩阵:

>>>import networkx as nx
>>>DG=nx.DiGraph()
>>>DG.add_edges_from([(1,2), (2,3),(1,3)])
>>>nx.to_numpy_matrix(DG)
....matrix([[ 0.,  1.,  1.],
    [ 0.,  0.,  1.],
    [ 0.,  0.,  0.]])

但是,在找到从节点1到节点3的所有简单路径后:

^{pr2}$

我不能把它们变成邻接矩阵。 我想选择一条路径,然后把它变成一个邻接矩阵, 例如,第二条路径应该返回:

....matrix([[ 0.,  0.,  1.],
    [ 0.,  0.,  0.],
    [ 0.,  0.,  0.]])

Tags: tofromimport路径numpynetworkxadd节点
1条回答
网友
1楼 · 发布于 2024-05-17 15:16:06

这不是邻接矩阵。但您可以按照以下方式轻松构建:

import networkx as nx
import numpy as np

DG=nx.DiGraph()
DG.add_edges_from([(1,2), (2,3),(1,3)])
paths = list(nx.all_simple_paths(DG,1,3))

for path in paths:
    matrix = np.matrix(np.zeros((len(DG), len(DG))))
    for i in range(len(path)-1):
        matrix[path[i]-1], path[i+1]-1] = 1  # edit: credits to @Joel
    print(matrix)

输出:

^{pr2}$

相关问题 更多 >