В данном репозитории находится код, реализующий применение градиентных методов для решения так называемой транспортой задачи, которая сформулирована в статье.
Спуск производится по функции из двойственной задачи, параметр t. На каждом шаге алгоритма для каждой пары вершин (исток, сток) ищется кратчайший путь в графе с весами t. Подсчитывается сумма значений вида: длинна пути (сумма весов ребер) * поток по этому пути. Эта функция - \phi большое - соответсвует корректному распределению потоков в графе. Такое распределение является допустимым решением транспортной задачи (но не оптимальным). Градиентом этой функции будет как раз распределение потоков по ребрам. Этот градиент домножается на длину шага и суммируется со значениями на предыдущих шагах. Такая сумма так же является допустимым решением задачи, если ее отнормировать, чтобы потоки в точности соответствовали потокам из условия. Для шага градиентного спуска используется двойственная функция \phi большое (t) + h(t). Упомянутые выше градиенты нужны для восстановления ответа.