cost_of_flow#

cost_of_flow(G, flowDict, weight='weight')[source]#

计算图G上由flowDict给定的流的费用。

请注意,此函数不检查flowDict流的有效性。如果图G和流不具有相同的边集,此函数将失败。

Parameters:
GNetworkX图

要在其上找到满足所有需求的最低成本流的DiGraph。

weight字符串

图G的边应具有一个属性weight,该属性指示在该边上发送一个单位的流所产生的成本。如果不存在,则权重被视为0。默认值:’weight’。

flowDict字典

由节点键控的字典的字典,使得flowDict[u][v]是边(u, v)的流。

Returns:
cost整数, 浮点数

流的总成本。这是通过对所有边的流的乘积和边的权重求和得到的。

Notes

如果边权重或需求是浮点数,此算法不保证能工作(溢出和舍入误差可能导致问题)。作为一种解决方法,您可以通过将相关的边属性乘以一个方便的常数因子(例如100)来使用整数。

Examples

>>> G = nx.DiGraph()
>>> G.add_node("a", demand=-5)
>>> G.add_node("d", demand=5)
>>> G.add_edge("a", "b", weight=3, capacity=4)
>>> G.add_edge("a", "c", weight=6, capacity=10)
>>> G.add_edge("b", "d", weight=1, capacity=9)
>>> G.add_edge("c", "d", weight=2, capacity=5)
>>> flowDict = nx.min_cost_flow(G)
>>> flowDict
{'a': {'b': 4, 'c': 1}, 'd': {}, 'b': {'d': 4}, 'c': {'d': 1}}
>>> nx.cost_of_flow(G, flowDict)
24