【问题标题】:NetwrokX nx.add_edges_from() how to add a one way edge?NetworkX nx.add_edges_from() 如何添加单向边?
【发布时间】:2021-08-02 20:03:05
【问题描述】:

我正在尝试构建分销网络图。在过去,我使用 add_edges_from() 能够在 1 步中导入所有图形。我有几个单向边缘,但是当我导入其中一些时,它们正在反向导入。有没有办法指导 jupyter 使边缘成为单向边缘。具体来说: RIC -> MAR, VB->RIC, VB->WDC, AND RIC-> NCA & NCA-> VB 应该是不同容量的2路。

import networkx as nx
D = nx.Graph()
edges= [('CD', 'MAR', {'capacity': 200}), 
        ('CD', 'RIC', {'capacity': 200}), 
        ('CD', 'NCA',{'capacity': 150}), 
        ('RIC', 'NCA', {'capacity': 145}), 
        ('NCA', 'RIC', {'capacity': 125}), 
        ('RIC', 'MAR', {'capacity': 100}), 
        ('RIC', 'WDC', {'capacity': 230}), 
        ('NCA', 'WDC', {'capacity': 100}), 
        ('VB', 'RIC', {'capacity': 275}), 
        ('MAR', 'WDC', {'capacity': 150}), 
        ('NCA', 'VB', {'capacity': 200}), 
        ('VB', 'NCA', {'capacity': 175}), 
        ('VB', 'WDC', {'capacity': 50})]
D.add_edges_from(edges)
print('Number of Nodes:',D.number_of_nodes())
print('Nodes:', list (D.nodes))
print( 'Number of Edges',D.number_of_edges())
for i in range(len(D.edges)):
    print('Edge:',list(D.edges)[i] ,list(D.edges.values())[i])
maxflow=nx.maximum_flow(D,'CD','WDC')
print('Flow from each node (From Node: {Node reciveing: Flow})')
for key in maxflow[1]:
    print(key, ' : ', maxflow[1][key])

感谢您的帮助!

【问题讨论】:

    标签: networking graph jupyter-notebook networkx


    【解决方案1】:

    使用nx.DiGraph,有向图而不是nx.Graph,无向图。

    import networkx as nx
    D = nx.DiGraph()
    edges= [('CD', 'MAR', {'capacity': 200}), 
            ('CD', 'RIC', {'capacity': 200}), 
            ('CD', 'NCA',{'capacity': 150}), 
            ('RIC', 'NCA', {'capacity': 145}), 
            ('NCA', 'RIC', {'capacity': 125}), 
            ('RIC', 'MAR', {'capacity': 100}), 
            ('RIC', 'WDC', {'capacity': 230}), 
            ('NCA', 'WDC', {'capacity': 100}), 
            ('VB', 'RIC', {'capacity': 275}), 
            ('MAR', 'WDC', {'capacity': 150}), 
            ('NCA', 'VB', {'capacity': 200}), 
            ('VB', 'NCA', {'capacity': 175}), 
            ('VB', 'WDC', {'capacity': 50})]
    D.add_edges_from(edges)
    nx.draw_networkx(D)
    

    输出:

    【讨论】:

      猜你喜欢
      • 2017-06-28
      • 1970-01-01
      • 2021-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-24
      • 1970-01-01
      相关资源
      最近更新 更多