diff options
| author | loicseguin <none@none> | 2010-08-10 04:37:04 +0000 |
|---|---|---|
| committer | loicseguin <none@none> | 2010-08-10 04:37:04 +0000 |
| commit | d2ce0539c4c85636b7c7d3ada4ea608b5bd8cf1c (patch) | |
| tree | 979d9c12fa10b553dbf3c8698d7e62f43de52622 /networkx/algorithms/flow/maxflow.py | |
| parent | 8d486e86e95da56ec26544303b24dcf22f06bf00 (diff) | |
| download | networkx-d2ce0539c4c85636b7c7d3ada4ea608b5bd8cf1c.tar.gz | |
Fixed bug in handling of infinite capacity edges with no flow.
--HG--
extra : convert_revision : svn%3A3ed01bd8-26fb-0310-9e4c-ca1a4053419f/networkx/trunk%401901
Diffstat (limited to 'networkx/algorithms/flow/maxflow.py')
| -rw-r--r-- | networkx/algorithms/flow/maxflow.py | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/networkx/algorithms/flow/maxflow.py b/networkx/algorithms/flow/maxflow.py index 17ea393c..cd2f62e8 100644 --- a/networkx/algorithms/flow/maxflow.py +++ b/networkx/algorithms/flow/maxflow.py @@ -65,13 +65,15 @@ def _create_flow_graph(G, H, infcapFlows, capacity = 'capacity'): try: flowGraph[u][v]['flow'] = H[v][u][capacity] except KeyError: - # Infinite capacity digon in the original graph. - if nx.is_directed(G): - flowGraph[u][v]['flow'] = max(infcapFlows[(u, v)] - - infcapFlows[(v, u)], 0) - else: - flowGraph[u][v]['flow'] = abs(infcapFlows[(u, v)] - - infcapFlows[(v, u)]) + try: # Infinite capacity digon in the original graph. + if nx.is_directed(G): + flowDict[u][v] = max(infcapFlows[(u, v)] + - infcapFlows[(v, u)], 0) + else: + flowDict[u][v] = abs(infcapFlows[(u, v)] + - infcapFlows[(v, u)]) + except KeyError: # Zero flow + flowDict[u][v] = 0 else: flowGraph[u][v]['flow'] = G[u][v][capacity] @@ -96,13 +98,15 @@ def _create_flow_dict(G, H, infcapFlows, capacity = 'capacity'): try: flowDict[u][v] = H[v][u][capacity] except KeyError: - # Infinite capacity digon in the original graph. - if nx.is_directed(G): - flowDict[u][v] = max(infcapFlows[(u, v)] + try: # Infinite capacity digon in the original graph. + if nx.is_directed(G): + flowDict[u][v] = max(infcapFlows[(u, v)] - infcapFlows[(v, u)], 0) - else: - flowDict[u][v] = abs(infcapFlows[(u, v)] + else: + flowDict[u][v] = abs(infcapFlows[(u, v)] - infcapFlows[(v, u)]) + except KeyError: # Zero flow + flowDict[u][v] = 0 else: flowDict[u][v] = G[u][v][capacity] return flowDict |
