There are numerous problems that can be viewed as a network of vertices and edges, with a capacity associated with each edge over which commodities flow. The algorithms found in this chapter are, in many ways, the direct product of the need to solve these specific classes of problems. Ahuja (1993) contains an extensive discussion on numerous applications of network flow algorithms:
Given a set of tasks to be carried out by a set of employees, find an assignment that minimizes the overall expense when different employees may cost different amounts based upon the task to which they are assigned.
Given a set of applicants who have been interviewed for a set of job openings, find a matching that maximizes the number of applicants selected for jobs for which they are qualified.
Determine the most cost-effective way to ship goods from a set of supplying factories to a set of retail stores selling these goods.
Determine the most cost-effective way to ship goods from a set of supplying factories to a set of retail stores selling these goods, while potentially using a set of warehouses as intermediate stations.
Given a network that shows the potential capacity over which goods can be shipped between two locations, compute the maximum flow supported by the network.
One way to explain how these specialized problems are solved is to describe the relationship between network flow ...