[ library(max_flow) | Reference Manual | Alphabetic Index ]

# max_flow(+Graph, +CapacityArg, +SourceNode, +SinkNode, -MaxFlowValue, -MaxFlowEdges, -MaxFlowEdgesGraph)

Ford-Fulkerson maximum flow algorithm

Graph
  a graph structure, no parallel edges, e(Src,Dest,EdgeData)
CapacityArg
  which argument of EdgeData to use as edge capacity (integer), (0 if EdgeData is a single number and -1 if every edge capacity is 1)
SourceNode
  source node number (integer)
SinkNode
  sink node number (integer)
MaxFlowValue
  value of the maximum flow
MaxFlowEdges
  list denoting edges with non-zero flow (form: Flow-Edge)
MaxFlowEdgesGraph
  a graph structure, original nodes (as in Graph) but only the edges that are in max flow

## Description

This predicate provides an implementation of the Ford-Fulkerson max-flow algorithm between two nodes in a graph. It returns the maximal achievable flow allowed by the capacities in the network, a list of all edges with non-zero flow, and a graph of the edges with non-zero flow.

### Fail Conditions

There is no feasible flow between Source and Sink nodes (they are not connected).

## See Also

max_flow / 5, max_flow / 7, max_flow_with_lb / 6, max_flow_with_lb / 8, max_flow_eplex : max_flow_eplex / 5, max_flow_eplex : max_flow_eplex_dual / 5, max_flow_eplex : max_flow_eplex_dual / 7, all_min_cuts : all_min_cuts / 8, all_min_cuts : all_min_cuts / 9, all_min_cuts : all_min_cuts_list / 5, all_min_cuts_eplex : all_min_cuts_eplex / 7, all_min_cuts_eplex : all_min_cuts_eplex / 8