summaryrefslogtreecommitdiff
path: root/networkx/algorithms/flow/maxflow.py
diff options
context:
space:
mode:
authorloicseguin <none@none>2010-08-10 04:37:04 +0000
committerloicseguin <none@none>2010-08-10 04:37:04 +0000
commitd2ce0539c4c85636b7c7d3ada4ea608b5bd8cf1c (patch)
tree979d9c12fa10b553dbf3c8698d7e62f43de52622 /networkx/algorithms/flow/maxflow.py
parent8d486e86e95da56ec26544303b24dcf22f06bf00 (diff)
downloadnetworkx-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.py28
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