- •Теория графов. Основные понятия и определения
- •Остовные деревья минимального веса. Алгоритмы Прима и Крускала
- •Нахождение кратчайших путей между двумя заданными вершинами. Алгоритм Дейкстры
- •Задача нахождения кратчайших цепей между всеми парами узлов в сети. Алгоритм Флойда
- •Сеть. Потоки на сетях. Задача нахождения потока максимальной мощности. Алгоритм Форда-Фалкерсона
- •Нахождение потока заданной мощности минимальной стоимости. Алгоритм Басакера-Гоуэна
Нахождение потока заданной мощности минимальной стоимости. Алгоритм Басакера-Гоуэна
Задана сеть, каждой дуге которой поставлено в соответствие 3 числа: с(х,у) – пропускная способность дуги, f(x,y) – поток по дуге, d(x,y) - стоимость провода единицы потока по дуге x,y. Требуется пропустить в сети поток заданной величины V или максимальный поток минимальной стоимости.

Алгоритм Басакера-Гоуэна
Шаг 0. Решение начинаем с нулевого потока V=0.
Шаг 1. Строим граф модифицированных стоимостей Gf по следующим правилам
1.Множество вершин графа Gf совпадает с множеством вершин графа G.
2.Если в графе G 0<f(x,y)<c(x,y) , тогда в графе строится 2 дуги: прямая, с длиной равной стоимости(e(x,y)=d(x,y)); e(x,y)=-d(x,y).
3.Если в графе G f(x,y)=0, то в графе Gf строится одна дуга e(x,y)=d(x,y).
4.Если f(x,y)=c(x,y), то рисуем e(x,y)=-d(x,y).
Шаг 2. Находим в графе Gf минимальный путь из S в T. Обозначим его P*. В исходном графе G определяем путь P, соответствующий Р*. На прямых дугах пути Р вычисляем €1=c(x,y)-f(x,y), €2=f(x,y), min €1. На прямых дугах +€, на обратных -.
Шаг 3. Получаем V=V*. Если в V = заданному потоку, то алгоритм свою работу заканчивает. В графе G построим поток мощности V min стоимости.
Замечание: Если задача на нахождение максимального потока мин стоимости, то алгоритм свою работу заканчивает когда в графе Gf нет ни одного пути Р* из S в T.
Алгоритм Клейна
Шаг 0. Решение начинаем с любого потока f, заданного с помощью алгоритма Форда-Фалкерсона. Вычисляем стоимость пропущенного потока f.
Шаг 1. Строим граф модифицированных стоимостей.
Шаг 2. Находим в графе Gf ориентированный цикл отрицательной длины p*. Если в Gf нет ни одного цикла отрицательной длины, то задача решена. Иначе переходим к шагу 3.
Шаг 3. В графе G определяем замкнутый путь p, соответствующий p*. Находим E. На прямых дугах пути p величину потока увеличиваем на У, а на обратных уменьшаем.
Шаг 4. Пересчитываем S и переходим к шагу 1.
