Recall that an arc flow of a network is a vector that satisfies the constraint
with for all and
Note, here we have replaced the supply/node with which represents the imbalance. One may view as the inflow minus the outflow of node . If then is an excess node. If then is a deficit node. Otherwise, inflow and outflow are equal and is a balanced node.
In flow decomposition we go from flows on arcs to defining flows on paths and cycles. For example, consider the figure below:
We have decomposed the flow into the paths , and cycle . sends 4 units of flow, sends 3 units of flow and cycle has units of flow circulating.
If we denote the flow of a path/cycle by , then the set of paths and the set of cycles in the flow decomposition uniquely determine the flow . That is,
where is the indicator function
Flow Decomposition Theorem
Every path and cycle flow has a unique representation as nonnegative arc flows. Conversely, every nonnegative arc flow can be represented as a path and cycle flow (though not necessarily unique) with the following two properties:
- Every directed path with positive flow connects a deficit node to an excess node.
- At most paths and cycles have nonzero flow; out of these, at most cycles have nonzero flow.
Flow Decomposition Algorithm
Define the following:
The algorithm is outlined below:
Algorithm 4 Flow decomposition algorithm
procedure FlowDecomposition()
while do
Select
Do DFS starting at node until finding a cycle in or a path in from node to node
if cycle is found then
add to
update and
end if
if path is found then
add to
where is the starting node of
where is the ending node of
update , , and
end if
end while
end procedure
function Select(y)
if then
return
else
return
end if
end function