In this demonstration exercise, you’ll encounter yet another area of graph theory, flow networks, and gain experience in exploring mathematical definitions with examples.
An important specialization of graphs are flow networks:
Definition (Flow Network) A flow network is a directed graph $G = (V, E)$ coupled with a capacity function $c : E \rightarrow \mathbb{R}^{+}$. $c$ describes the maximum amount of flow across a particular edge.
The prototypical real-life example of a flow network is a network of pipes that carry water. Each edge corresponds to a pipe and the pipes are connected at joints, represented by vertices. Flow in this context is literal water flow where the capacity represents how much water each pipe can hold.
In this formulation, we represent the flow through a network as a separate flow function:
Definition (Flow) Given a flow network $G = (V, E)$, a flow function $f$ is a function $f : E \rightarrow \mathbb{R}$ that describes the amount of flow traveling over a particular edge. **
Finally, it is common when discussing flow networks to distinguish two nodes, a source and sink node, $s, t \in V$, respectively. We think of them as the entry and exit points of flow in our network, whatever that means for the domain in question. We then define the flow value of the network as the flow going into the sink (and thus, out of the network!):
Definition (Flow Value) Given a flow network $G = (V, E)$ with flow function $f$ and source and sink vertices $s, t \in V$, respectively, the flow value $|f|$ of the flow function is the amount of flow that goes into the sink:
\[\sum_{v \in V} f(vt)\]Give two additional real-world examples of flow networks, explicitly describing what each of the components of the network:
| The flow value $ | f | $. |
Represent in each example.
Next, come up with an artificial example of a complete flow network with at least five vertices. Make sure to formally specify all the components of the network!
Note that to avoid cluttering our definitions, we make several assumptions about the shape of a flow network:
Using your artificial example, explore these three critical conditions under which a flow function is considered valid or feasible. All three conditions are specified in terms of a flow network with components as described above:
Condition 1 $\forall u, v \in V \ldotp f(u, v) \leq c(u, v)$.
Condition 2 $\forall u, v \in V \ldotp f(u, v) = -f(v, u)$. ~~~
Condition 3 $\forall v \in V - { s, t } \ldotp \sum_{(u, v) \in E} f(u, v) = \sum_{(u, v) \in E} f(v, u).$
If your artificial example does not meet these conditions, change it so it does!
For each condition:
Recall from the reading that a cut of a graph is a partition of the graph into two sets of vertices:
Definition (Cut) Let $G = (V,E)$ be a graph. A cut of the graph is a partition of its vertices $(S, V−S)$ with $S \subseteq V$. A non-trivial cut is one where $S \neq \emptyset$ and $S \neq V$.
In the context of flow networks, we define a $s$-$t$ cut to be a cut where $s$ is in one partition and $t$ is in the other.
A critical theorem of flow networks is the max-flow min-cut theorem:
Max-flow min-cut theorem For any flow network with source and sink vertices $s$ and $t$, the maximum flow value $|f|$ among all feasible flow functions is equal to the minimum capacity over all possible $s$-$t$ cuts.
The capacity of a $s$-$t$ cut is simply the sum of the capacities the edges that connect vertices across the two partitions induced by the cut.