将networkx maximum_flow输出转换为数组

时间:2017-01-28 16:45:03

标签: python

我目前正在尝试通过将max-flow-min-cut算法应用于有向图来模拟网络流问题。我设法创建图表并使用

求解最大流量(和流量)
nx.maximum_flow(DG, s="S", t="T")

以下是:

(11.0,
{'A1': {'A4': 1.0, 'A5': 0, 'T': 3.0},
'A2': {'A1': 4.0, 'A8': 2.0, 'T': 1.0},
'A3': {'A7': 3.0},
'A4': {'A3': 0, 'A8': 0, 'T': 1.0},
'A5': {'A3': 2.0, 'A8': 1.0},
'A6': {'A2': 7.0},
'A7': {'T': 3.0},
'A8': {'T': 3.0},
'S': {'A3': 1.0, 'A5': 3.0, 'A6': 7.0},
'T': {}})

这是一个两值元组(11,其余值在一个值中)。现在我想创建一个包含流量的数组,例如A1 - > A4,A5 - > A8和A6 - > A2。

但是,我没有从中创建任何类型的列表,因为我对Python很陌生。

理想情况下,我最终得到的结论是:

y = np.array([1.0, 1.0, 7.0]).reshape(3,1)

[[ 1.]
 [ 1.]
 [ 7.]]

1 个答案:

答案 0 :(得分:0)

我不明白什么是问题。

import numpy as np

data = (
    11.0,
    {
        'A1': {'A4': 1.0, 'A5': 0, 'T': 3.0},
        'A2': {'A1': 4.0, 'A8': 2.0, 'T': 1.0},
        'A3': {'A7': 3.0},
        'A4': {'A3': 0, 'A8': 0, 'T': 1.0},
        'A5': {'A3': 2.0, 'A8': 1.0},
        'A6': {'A2': 7.0},
        'A7': {'T': 3.0},
        'A8': {'T': 3.0},
        'S': {'A3': 1.0, 'A5': 3.0, 'A6': 7.0},
        'T': {}
    }
)

lst = [ data[1]['A1']['A4'], data[1]['A5']['A8'], data[1]['A6']['A2'] ]

y = np.array( lst ).reshape(3,1)

print(y)

结果:

[[ 1.]
 [ 1.]
 [ 7.]]