Задача на максимальный поток в Visual Basic - VB
Формулировка задачи:
У меня есть граф, в нём 25 точек.
необходимо решить задачу на максимальный поток. выходим из Донецка, приходим в Киев.
вот как я находил это на графе меньшего размера:
а вот сам алгоритм нахождения (Форда — Фалкерсона):
1) Обнуляем все потоки. Остаточная сеть изначально совпадает с исходной сетью.
2) В остаточной сети находим любой путь из источника в сток. Если такого пути нет, останавливаемся.
3) Пускаем через найденный путь (он называется увеличивающим путём или увеличивающей цепью) максимально возможный поток:
1. На найденном пути в остаточной сети ищем ребро с минимальной пропускной способностью Cmin .
2. Для каждого ребра на найденном пути увеличиваем поток на Cmin , а в противоположном ему — уменьшаем на Cmin .
3. Модифицируем остаточную сеть. Для всех рёбер на найденном пути, а также для противоположных им рёбер, вычисляем новую пропускную способность. Если она стала ненулевой, добавляем ребро к остаточной сети, а если обнулилась, стираем его.
4) Возвращаемся на шаг 2.
я сделал только часть, обнулил все потоки, но не пойму как выбрать путь из источника в сток, и что делать после этого.
вот код:
Спойлер
Спойлер
Если у кого-то есть какие-то идеи, need your help
Решение задачи: «Задача на максимальный поток в Visual Basic»
textual
Листинг программы
a(1, 5) = 337
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д