Задача. Есть дом, вода из которого стекает в реку по водопроводу. Водопровод — это набор однонаправленных труб, концы которых соединены с домом, рекой или одним из соединительных узлов. Также для каждой трубы известна ее прочность — сколько воды она может выдержать. Необходимо найти максимальный объем воды, который может вытекать из дома в единицу времени.
Поставим задачу более формально. Есть граф в котором выделены две вершины, соответствующие дому и реке , а остальные вершины соответствуют узлам. Ребра этого графа соответствуют трубам водопровода, и у каждого ребра есть пропускная способность — максимальное количество воды, которое может по нему течь. Обозначим за пропускную способность ребра из в , а — количество воды, текущее по нему.
Заметим некоторые свойства воды, текущей в водопроводе. Например, для любой вершины, которая соответствует узлу, объем втекающей в неё воды равен объему вытекающей из неё воды:
Это значит, что вода не может появится из ниоткуда и исчезнуть в никуда.
Также удобно считать, что у любого ребра есть ровно одно обратное, и , то есть если по ребру из в перетекает потока, то по ребру из в перетекает потока.
Теперь замечание о втекающем и вытекающем объеме звучит так, что для любой вершины , кроме истока и стока :
Наша задача тогда — это найти такую функцию , максимизирующую , удовлетворяющую предыдущим равенствам, и при этом не превышающая ни одну пропускную способность: Эта сложная задача имеет множество решений, которые мы разберем в этой главе.