Алгоритм Эдмондса-Карпа
Версия от 01:55, 21 декабря 2010; Pavel Chuprikov (обсуждение | вклад) (→Корректность алгоритма Эдмондса-Карпа)
Эта статья находится в разработке!
Алгоритм
Для заданной транспортной сети
алгоритм Эдмондса-Карпа найходит поток максимальной величины из заданной вершины в заданную вершину .Псевдокод
Edmonds_Karp (G, s, t) for (для) каждого ребраdo while существует кратчайший путь из в в остаточной сети do for (для) каждого ребра do
Корректность алгоритма Эдмондса-Карпа
Алгоритм Эдмондса-Карпа является реализацией метода Форда-Фалкерсона. На каждой итерации цикла while поток в графе теореме Форда-Фалкерсона найденный поток максимальный. Оценка быстродействия будет проведена далее.
увеличивается вдоль одного из кратчайших путей в из истока в сток . Этот процесс повторяется до тех пор пока существует кратчайший путь в . Если в не существует кратчайшего пути из в , значит не существует никакого вообще никакого пути в следовательно поЛемма: |
Если в сети с источником и стоком увеличение потока производиться вдоль кратчайших путей в . То для всех вершин длина кратчайшего пути в остаточной сети не убывает после каждого увеличения потока. |
Доказательство: |
Предположим противное, пусть существует вершина , что после какого-то увеличения потока длина кратчайшего пути из в уменьшилась. Обозначим потоки до и после увеличения соответственно за и . Пусть — вершина, расстояние до которой минимально</tex> и уменьшилось с увеличением потока. Имеем . Рассмотрим путь , являющийся кратчайшим от к в . Тогда верно, что .По выбору и из предыдущего утверждения получаем, что .Предположим Пусть , тогда . Это противоречит . , но известно, что . Появление ребра после увеличения потока означает увеличение потока по обратному ребру . Увеличение потока производится вдоль кратчайшего пути, поэтому кратчайший путь из в вдоль которого происходило увеличения выглядит как , из чего получаем . Данное утверждение противоречит . Итак мы пришли к противоречию с существованием вершины , кратчайшее расстояние до которой уменьшилось с увеличением потока. |
Опираясь на предшествующую лемму докажем следующую теорему, которая ограничивает сверху число итераций цикла while в алгоритме Эдмондса-Карпа.
Теорема: |
Пусть для некоторой сети с источником и стоком выполняется алгоритм Эдмондса-Карпа, то общее число итераций цикла while составляет . |