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

feas_flow_with_lb(+Graph, +LowerBoundArg, +CapacityArg, +SourceNode, +SinkNode, -FlowValue, -FlowEdges, -FlowEdgesGraph)

Finds a feasible flow for a network with non-negative lower-bounds imposed on the edge flows,using an adapted Ford-Fulkerson maximum flow algorithm
Graph
a graph structure, no parallel edges, e(Src,Dest,EdgeData), EdgeData must be a structure with at least two arguments (for the lower and upper bounds of the edge capacity
LowerBoundArg
which argument of EdgeData to use as the minimum flow (lower bound) for edge (integer)
CapacityArg
which argument of EdgeData to use as (uppoer bound) edge capacity (integer),
SourceNode
source node number (integer)
SinkNode
sink node number (integer)
FlowValue
value of the flow
FlowEdges
list denoting edges with non-zero flow (form: Flow-Edge)
FlowEdgesGraph
a graph structure, original nodes (as in Graph) but only the edges that are in max flow

Description

This predicate returns a feasible flow for a network whose edges can have a (non-negative) lower bound imposed on the edge flows. This is done by transforming the network to one with zero lower-bounds and solving for feasibility. Normally this will serve as the starting point for obtaining the maximal flow for the original network, but this predicate is provided for cases where a feasible solution is sufficient. If there is a feasible solution, it returns the total flow value for this solution, a list of all edges with flow, and a graph of the edges with non-zero flow. It fails if there are no feasible flow.

Fail Conditions

There is no feasible flow from Source to Sink

See Also

max_flow_with_lb / 8, max_flow / 5, max_flow / 7