14.1: Introduction
Before delving into the particular combinatorial problems we wish to consider in this chapter, we will state a key theorem. When working with network flow problems, our examples thus far have always had integer capacities and we always found a maximum flow in which every edge carried an integer amount of flow. It is not, however, immediately obvious that this can always be done. Why, for example, could it not be the case that the maximum flow in a particularly pathological network with integer capacities is 23/3? Or how about something even worse, such as \(\sqrt{21 \pi}\)? We can rule out the latter because network flow problems fall into a larger class of problems known as linear programming problems, and a major theorem tells us that if a linear program is posed with all integer constraints (capacities in our case), the solution must be a rational number. However, in the case of network flows, something even stronger is true.
In a network flow problem in which every edge has integer capacity, there is a maximum flow in which every edge carries an integer amount of flow.
Notice that the above theorem does not guarantee that every maximum flow has integer flow on every edge, just that we are able to find one. With this theorem in hand, we now see that if we consider network flow problems in which the capacities are all 1 we can find a maximum flow in which every edge carries a flow of either 0 or 1. This can give us a combinatorial interpretation of the flow, in a sense using the full edges as edges that we “take” in some useful sense.