ó žÃÒYc@sEddlZddlmZmZddlZddd„ƒYZdS(iÿÿÿÿN(t assert_equalt assert_raisestTestMinCostFlowcBsªeZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „Zd „Zd„Zd„Zd„Zd„ZRS(cCs tjƒ}|jdddƒ|jdddƒ|jddddd d ƒ|jdd dd d d ƒ|jddddd dƒ|jd dddd dƒtj|ƒ\}}iid d6dd 6d6id d6d6idd6d 6id6}t|dƒttj|ƒdƒt||ƒttj|ƒ|ƒttj||ƒdƒtj |ƒ\}}t|dƒttj||ƒdƒt||ƒdS(Ntatdemandiûÿÿÿtditbtweightitcapacityitcii ii ii( tnxtDiGraphtadd_nodetadd_edgetnetwork_simplexRtmin_cost_flow_costt min_cost_flowt cost_of_flowtcapacity_scaling(tselftGtflowCosttHtsoln((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_mincost.pyttest_simple_digraphs*     cCsòtjƒ}|jdddƒ|jdddƒ|jddddd d ƒ|jdd dd ƒ|jd ddd ƒ|jd dddƒ|jdd ddƒ|jddddd d ƒttjtj|ƒttjtj|ƒdS(NtsRiûÿÿÿttiRRiRiRR iúÿÿÿRiþÿÿÿ( R R R R RtNetworkXUnfeasibleRtNetworkXUnboundedR(RR((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_mincost.pyttest_negcycle_infcap s cCsòtjƒ}|jdddƒ|jdddƒ|jddddd d ƒ|jdd dd ƒ|jdd dd ƒ|jd dddƒ|jd dddƒ|jddddd d ƒttjtj|ƒttjtj|ƒdS(NRRiûÿÿÿRiRRiRiRR iúÿÿÿRiþÿÿÿ(R R R R RRRR(RR((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_mincost.pyttest_sum_demands_not_zero-s cCsòtjƒ}|jdddƒ|jdddƒ|jddddd d ƒ|jdd dd ƒ|jdd dd ƒ|jd dddƒ|jd dddƒ|jddddd d ƒttjtj|ƒttjtj|ƒdS(NRRiûÿÿÿRiRRiRiRR iúÿÿÿRiþÿÿÿ(R R R R RRRR(RR((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_mincost.pyttest_no_flow_satisfying_demands:s cCsRtjƒ}|jdddƒ|jdddƒ|jdddƒ|jdddƒ|jd dd ƒ|jd dd ƒ|jd ddƒ|jd ddƒ|jdddƒ|jddddƒ|jddddƒ|jddddƒ|jddddƒ|jddddƒ|jddddƒ|jd dddƒ|jd d ddƒ|jd dddƒ|jd dddƒ|jd d ddƒ|jd dddƒ|jd d ddƒ|jd d ddƒtj|ƒ\}}i idd6d6idd6dd6d6idd6d6id6idd6dd 6d 6idd6dd 6dd 6d 6idd6d 6idd6dd 6d 6idd6dd6d6}t|dƒttj|ƒdƒt||ƒttj|ƒ|ƒttj||ƒdƒtj |ƒ\}}t|dƒttj||ƒdƒt||ƒdS(NRRiRiþÿÿÿR RiteiüÿÿÿtftgthitrRi iiúÿÿÿiiii iÿÿÿÿiöÿÿÿi)( R R R R RRRRRR(RRRRR((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_mincost.pyttest_transshipmentGsV    cCsítjƒ}|jddddƒ|jddddddƒ|jddddƒ|jdd dd dd ƒ|jdd ddƒ|jd d dd dd ƒiid d6dd6d6id d6d6id d 6d6idd 6d6id d 6d 6id 6}tj|dd ddddƒ}t||ƒttj||ddƒdƒ|jd dddƒtj|ddddƒ\}}|jd dƒt|dƒt|d dd ƒ|d d=t||ƒttj||ddƒdƒdS(NRRt bandwidthiR i tcostRRiiRiiRRiZiœÿÿÿifþÿÿ(R R R tmax_flow_min_costRRRt remove_edge(RRRtflowR((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_mincost.pyttest_max_flow_min_costus4       cCsVtjƒ}|jdddƒ|jdddƒ|jdddƒ|jddidd6dd 6fdd id d6dd 6fdd idd 6fddidd6dd 6fddid d6d d 6fd didd6dd 6fd didd6d d 6fddidd 6fdd idd6dd 6fg ƒtj|ƒ\}}iidd6d d 6d6id d 6dd6dd6d6idd6dd6d 6id d6d6idd 6d6}t|dƒttj|ƒdƒt||ƒttj|ƒ|ƒttj||ƒdƒtj |ƒ\}}t|dƒt||ƒttj||ƒdƒdS(NiRiìÿÿÿiiiiRRiii ii ii i–( R R R tadd_edges_fromRRRRRR(RRRRR((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_mincost.pyt test_digraph1’s8  !    cCsçtjƒ}|jddddƒ|jddddƒ|jddddƒ|jdddd d d ƒ|jdddd d dƒ|jdd dd d d ƒ|jdd ddd dƒ|jdd dd d d ƒ|jddddd dƒ|jddddd dƒ|jd d ddd d ƒ|jd ddd d d ƒ|jd dddƒ|jd dddƒ|jddddƒtj|ddƒ}iidd6d d 6dd 6d6idd6d d 6dd6d6idd6d6idd 6dd6d 6idd6dd6d 6idd6d6idd6dd6dd6d6id6}t||ƒ|jddd dƒtj|ƒ\}}|jddƒt|dddƒt|dƒ|dd=t||ƒttj||ƒdƒdS(NRiRi iiiii Rii iiiRiiiiiœÿÿÿi iAôÿÿiÁ(R R R R(RRR)R(RRR*RR((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_mincost.pyt test_digraph2³sD      cCsatjƒ}|jddƒ|ddjidd6dd6ƒ|jddƒ|ddjidd6dd6ƒ|jddƒ|ddjidd6dd6ƒ|jdd ƒ|dd jidd6dd6ƒ|jddƒ|ddjidd6d d6ƒ|jdd ƒ|dd jid d6dd6ƒtj|dd d dd dƒ}td „|djƒDƒƒ}td|ƒtdtj||d dƒƒt|didd6dd6ƒt|didd6dd 6ƒt|didd6d d 6ƒt|d iƒ|jd dƒ|d djidd6ƒtj |d dd dƒ\}}|j d dƒtd„|djƒDƒƒ}td|ƒt|d ddƒt|dƒ|d d=t|didd6dd6ƒt|didd6dd 6ƒt|didd6d d 6ƒt|d iƒttj||d dƒdƒdS(sÝCombinatorial Optimization: Algorithms and Complexity, Papadimitriou Steiglitz at page 140 has an example, 7.1, but that admits multiple solutions, so I alter it a bit. From ticket #430 by mfrasca.RRiiiiRiRiRRcss|] }|VqdS(N((t.0tv((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_mincost.pys ðsiiœÿÿÿcss|] }|VqdS(N((R/R0((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_mincost.pys üsi‡þÿÿN( R R R tupdateR(tsumtvaluesRRRR)(RRtsolR*R((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_mincost.pyt test_digraph3ÚsF ######!  !    c Cstjƒ}|jddidd6dd6fddidd6dd6fddidd6dd6fddidd6dd6fddidd6dd6fddidd6dd6fddidd6dd6fgƒd |jdd  cCsôtjƒ}|jddddƒttjtj|ƒttjtj|ƒd|ddd(RRRR((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_mincost.pyttest_negative_selfloopsns.     ) cCsètjƒ}|jdddƒ|jdddƒ|jdddƒ|jdddƒ|jdddƒ|jd ddƒ|jddd dƒ|jddd dƒ|jddd dƒ|jd dd dƒ|jddd dƒtj|ƒ\}}t|dƒt|iidd6dd6dd6d6id6id6id6idd6d6idd6d 6ƒtj|ƒ\}}t|dƒt|iidd6dd6dd6d6id6id6id6idd6d6idd6d 6ƒdS( NiRiüÿÿÿiiiiiþÿÿÿiR(R R R R RRR(RRRR((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_mincost.pyttest_bone_shaped‹s(  W cCstjƒ}ttjtj|ƒttjtj|ƒtjƒ}ttjtj|ƒttjtj|ƒtjƒ}ttjtj|ƒttjtj|ƒ|j ddt dƒƒttjtj|ƒttj tj|ƒd|j dd<|j dddƒ|j dddt dƒ ƒttjtj|ƒttj tj|ƒd|ddd<|j dddt dƒƒttjtj|ƒd|ddds