Как запустить реализацию Эдмондса-Карпа, если все пути имеют одинаковую длину? - PullRequest
0 голосов
/ 29 декабря 2011

Как выбрать начальный путь для алгоритма Эдмондса-Карпа , если все пути имеют одинаковую длину?В этом случае максимальный поток изменяется в соответствии с решением о последовательности пути.

1 Ответ

0 голосов
/ 31 декабря 2011

Я думаю, что есть проблема с тем, как вы обрабатываете мощности в вершинах.Обычный способ сделать это - разделить вершину v на две вершины v 'и v' 'и добавить ребро между v' и v '' с емкостью вершины.Все ребра, связанные с v (т. Е. Для которых v является пунктом назначения), должны быть связаны с v 'в новом графе, а все ребра из v должны начинаться с v' 'в новом графе.

Вы, вероятно, знаете, что когдаты давай потоку xaby 3 добавляешь в емкость обратные ребра.В этом случае вы добавите ребра ax 3, ba 3, yb 3. Если вы сделаете представление графа, как я описал, вы увидите, что есть дополнительный поток, который вы можете использовать в первом случае (я думаю, что он может проходить через xadcby,но не проверяли его).

Выбор кратчайшего пути не должен изменить ответ - как я уже упоминал в своем комментарии, мы выбираем только кратчайший путь на каждом шаге, чтобы избежать плохих случаев, когда производительность снижается, ноответ всегда один и тот же.

Надеюсь, этот ответ поможет.

...