0

我今天开始使用 python 包'networkx',我很难理解你是如何从外部文件中读取输入数据的。

文档中显示的示例处理可以直接从 shell 读取的小型网络。

我有一个旧文件,它指定了一个具有这种格式的大型电网:

'from_node'  'to_node'  'edge_name'  'edge_capacity'  'flow_cost'

下一组卡片上写着:

'node type' (source or sink), 'capacity', 'cost'

我想解决最大流量问题。我怎样才能读取这样的输入数据文件?

4

1 回答 1

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

于 2013-10-17T12:18:26.957 回答