Если вы ищете «устойчивое» решение, то есть решение, в котором один и тот же поток происходит вдоль заданного ребра каждый день, то не может быть никакого «накопления» ресурсов в узлах (поскольку это подразумевает, что каждый запас продолжает расти с постоянной скоростью, в конечном итоге становясь бесконечно большим).
Таким образом, в этом случае мы можем забыть о емкости хранилища каждого узла, и проблема очень похожа на проблему Максимальный поток , которая может быть решена точно в полиноме время, без особых сложностей. Ссылка на Википедию предлагает множество алгоритмов - я предлагаю начать с Ford-Fulkerson, который не слишком сложен для реализации (другие могут быть проще, но я сам их не реализовал).
Чтобы действительно превратить вашу проблему в проблему Max Flow, вам нужно сделать одну вещь: Max Flow имеет дело с ограничениями на потоки по краям , а не в узлах . Чтобы преобразовать ваши ограничения «пропускной способности узла» в ограничения «пропускной способности ребра», просто превратите каждый узел в 3 узла, соединенных в линию (1 -> 2 -> 3), причем ребро между узлами 1 и 2 имеет емкость, равную « входная емкость "узла", а ребро между узлами 2 и 3 имеет емкость, равную "выходной емкости" узла. Затем убедитесь, что все входы в узел подключены к узлу 1, а все выходы подключены к узлу 3.
Как я уже сказал, это даст вам "устойчивое" решение. возможно возможно, что, указав заранее количество дней и используя емкость хранилища, вы сможете разработать стратегию, которая даст вам большую пропускную способность для этого количества дней, хотя я подозреваю, что кто-то умнее меня может доказать, что даже это невозможно. В любом случае, вы не можете добиться большего успеха, чем решение Max Flow, если хотите, чтобы каждый поток имел одинаковый поток каждый день.