maths.free › Combinatorics & Graph Theory › 13. Network Flows › A Concrete Example
A Concrete Example
Let's apply the Labeling Algorithm to the network flow shown in . Then we start with the source: \[\begin{aligned}\end{aligned}\] Since the source S is the first vertex labeled, it is also the first one scanned.
A Concrete Example
Let's apply the Labeling Algorithm to the network flow shown in . Then we start with the source: \[\begin{aligned}\end{aligned}\] Since the source \(S\) is the first vertex labeled, it is also the first one scanned. So we look at the neighbors of \(S\) using the pseudo-alphabetic order on the vertices. Thus, the first one to be considered is vertex \(B\) and since the edge \((S,B)\) is not full, we label \(B\) as \[\begin{aligned}\end{aligned}\] We then consider vertex \(E\) and label it as \[\begin{aligned}\end{aligned}\] Next is vertex \(F\), which is labeled as \[\begin{aligned}\end{aligned}\] At this point, the scan from \(S\) is complete.
The first vertex after \(S\) to be labeled was \(B\), so we now scan from \(B\). The (unlabeled) neighbors of \(B\) to be considered, in order, are \(A\), \(C\), and\(D\). This results in the following labels: \[\begin{aligned}A\amp:\quad(B,+,8) \\ C\amp:\quad(B,+,8) \\ D\amp:\quad(B,-,6)\end{aligned}\] The next vertex to be scanned is \(E\), but \(E\) has no unlabeled neighbors, so we then move on to \(F\), which again has no unlabeled neighbors. Finally, we scan from \(A\), and using the pseudo-alphabetic order, we first consider the sink \(T\) (which in this case is the only remaining unlabeled vertex). This results in the following label for \(T\). \[\begin{aligned}\end{aligned}\] Now that the sink is labeled, we know there is an augmenting path. We discover this path by backtracking. The sink \(T\) got its label from \(A\), \(A\) got its label from \(B\), and \(B\) got its label from \(S\). Therefore, the augmenting path is \(P=(S,B,A,T)\) with \(\delta=8\). All edges on this path are forward. The flow is then updated by increasing the flow on the edges of \(P\) by \(8\). This results in the flow shown in . The value of this flow is \(38\).
Here is the sequence (reading down the columns) of labels that will be found when the labeling algorithm is applied to this updated flow. (Note that in the scan from \(S\), the vertex \(B\) will not be labeled, since now the edge \((S,B)\) is full.) \[\begin{aligned}S:\amp\quad(*,+,\infty)\amp D:\amp\quad(E,+,12) \\ E:\amp\quad(S,+,28)\amp A:\amp\quad(F,+,12) \\ F:\amp\quad(S,+,15)\amp C:\amp\quad(B,+,10) \\ B:\amp\quad(E,+,19)\amp T:\amp\quad(A,+,12)\end{aligned}\] This labeling results in the augmenting path \(P=(S,F,A,T)\) with \(\delta=12\).
After this update, the value of the flow has been increased and is now \(50=38+12\). We start the labeling process over again and repeat until we reach a stage where some vertices (including the source) are labeled and some vertices (including the sink) are unlabeled.
How the Labeling Algorithm Halts
Consider the network flow in .
The value of the current flow is \(172\). Applying the labeling algorithm using the pseudo-alphabetic order results in the following labels (reading down the columns): \[\begin{aligned}S:\amp\quad(*,+,\infty)\amp E:\amp\quad(I,-,3) \\ C:\amp\quad(S,+,8)\amp G:\amp\quad(E,-,3) \\ F:\amp\quad(S,+,23)\amp L:\amp\quad(E,+,3) \\ H:\amp\quad(C,+,7)\amp B:\amp\quad(G,+,3) \\ I:\amp\quad(H,+,7)\amp T:\amp\quad(L,+,3)\end{aligned}\] These labels result in the augmenting path \(P=(S,C,H,I,E,L,T)\) with \(\delta =3\). After updating the flow and increasing its value to \(175\), the labeling algorithm halts with the following labels: \[\begin{aligned}S:\amp\quad(*,+,\infty)\amp H:\amp\quad(C,+,4) \\ C:\amp\quad(S,+,5)\amp I:\amp\quad(H,+,4) \\ F:\amp\quad(S,+,23)\end{aligned}\] Now we observe that the labeled and unlabeled vertices are \(L=\{S,C,F,H,I\}\) and \(U=\{T,A,B,D,E,G,J,K\}\). Furthermore, the capacity of the cut \(V=L\cup U\) is \[\begin{aligned}\end{aligned}\] This shows that we have found a cut whose capacity is exactly equal to the value of the current flow. In turn, this shows that the flow is optimal.
Symbols used here
Not a number: "grows without bound" in limits and intervals.
In either; in both; in A but not B.
Small positive tolerances in the definition of a limit.
Least upper bound, greatest lower bound.
n × (n−1) × … × 1; the number of orderings of n things. 0! = 1.
Number of k-element subsets of n things: n!/(k!(n−k)!).
Add a_k for k = 1 up to n.
Multiply a_k for k = 1 up to n.
The set with no elements; the number of elements of A.
Questions people ask
Permutation or combination?
Ask whether order matters. A lock code is a permutation (order matters); a hand of cards is a combination (it does not).
What is a graph in this sense?
Dots (vertices) joined by lines (edges) — not a plot. Road maps, social networks and molecules are graphs; questions like "is there a route" and "how few colours" are graph theory.
נסה את שלך.
Parts of this page are adapted from Keller & Trotter, Applied Combinatorics (CC BY-SA 4.0). Condensed and re-explained here; errors are ours.
יותר בפנים. Combinatorics & Graph Theory
The counting principlesPigeonhole principle and inclusion–exclusionBinomial coefficients and Pascal's triangleRecurrences and generating functionsGraphs: vertices, edges, degreesPaths, cycles, trees, Euler and HamiltonColouring and planar graphs