1
我想在考虑边缘权重的同时使用Networkx计算图形中两个节点之间的最小边缘切割。我尝试了minimum_edge_cut和minimum_st_edge_cut函数,但它们给出了相同的结果,因为它们只考虑边的数量。我公司生产的简单的图形来解决这个问题(其中,我试图找到节点0和4之间的最小边切割)如下:其具有总边加权考虑边缘权重的最小s-t边缘切割
G = nx.Graph()
G.add_nodes_from([0,1,2,3,4])
G.add_edges_from([(0,1),(0,2),(1,3),(3,4),(2,3)], weight = 1)
G[3][4]['weight']=3
G[0][1]['weight']=2
G[2][3]['weight']=2
print minimum_st_edge_cut(G, 0, 4)
print nx.minimum_edge_cut(G,0,4)
node_pos=nx.spring_layout(G)
nx.draw_networkx(G,node_pos,with_labels = True)
edge_labels = dict (((i,j),G[i][j]['weight']) for (i,j) in G.edges())
nx.draw_networkx_edge_labels(G, node_pos, edge_labels=edge_labels)
plt.show()
从两个函数的输出是
[(3, 4)]
3.虽然如果权重被考虑在内时,输出边缘应[(0,2),(1,3)]
具有2
总边缘权重我不知道如果Networkx provid如果不是这样,那么用最简单的方法计算它就能解决问题。
道歉最初误读你以后。会多想一想。 – Joel
@joel检查我写的答案,这是我的想法,但如果您有任何意见,将不胜感激。即使是我回答我自己的问题,因为这是我第一次这样做。 –