Здраствуйте.
Я нашел описание min cost max flow, где описан процесс выдачи потенциалов: http://rain.ifmo.ru/cat/view.php/vis/graph-flow-match/min-cost-max-flow-2009/algorithm
Там не доказывается, что выбор потенциалов описанных образом позволит избежать появления ребер отрицательного веса.
Пусть у нас такая остаточная сеть. Вершина 4 -исток. Вершина 5 — сток:
Найдем кратчайший путь веса 1 4->0->2->5
и протолкнем через него одну единицу потока. Получим такую остаточную сеть:
Найдем такой кратчайший по весу путь:
Он действительно кратчайший
4->1
вес: 0+0-0=0
1->2
вес: 1+0-1=0
2->0
вес: -1+1-0=0
0->3
вес: 1+0-0=1
3->5
вес:0+0-1=-1 (Ребро с отрицательным весом)
Т.к. появилось ребро отрицательного веса, гарантий, что Дейкстра сработает нет. Я неправильно понял описанный по ссылке алгоритм, или он неверен?