我今天开始使用python包'networkx'
,我很难理解你如何从外部文件中读取输入数据。
文档中显示的示例涉及可以直接从shell中读取的小型网络。
我有一个遗留文件,用这种格式指定一个大型电网:
'from_node' 'to_node' 'edge_name' 'edge_capacity' 'flow_cost'
下一组牌上写着:
'node type' (source or sink), 'capacity', 'cost'
我想解决最大流量问题。我怎样才能读取这样的输入数据文件?
答案 0 :(得分:1)
您可以使用parse_edgelist
:
In [1]: import networkx as nx
In [2]: lines = ["from to name capacity cost", "from1 to1 name1 capacity1 cost1"]
In [3]: G = nx.parse_edgelist(lines, data = (('name', str), ('capacity', str), ('cost', str)))
In [5]: G.edges(data=True)
Out[5]:
[('from1', 'to1', {'capacity': 'capacity1', 'cost': 'cost1', 'name': 'name1'}),
('to', 'from', {'capacity': 'capacity', 'cost': 'cost', 'name': 'name'})]
对于节点,您可以只迭代文本文件并注释图形。该文档提供了许多阅读图表的方法:
http://networkx.github.io/documentation/latest/reference/readwrite.html