- •Формальное описание алгоритма 1 задачи “Ближайшая пара”
- •Лекция 2 Задача о битоническом пути
- •Битонический путь
- •Лекция 3 Динамическое программирование и оптимизационная задача перемножения матриц.
- •2. Алгоритмизация описанного процесса на основе (2) и (3).
- •Лекция 4 Оптимальная триангуляция треугольника.
- •Лекция 5
- •Циркуляция.
- •Лекция 6 Многополюсные максимальные потоки
- •Алгоритм гомори—ху
- •Лекция 7 Задача распределения капитала
- •1. Случай запрета коротких позиций.
- •2. Случай разрешения коротких позиций.
- •Случай наличия безрискового актива.
- •Лекция 8 Потоковые алгоритмы.
- •Лекция 9. Алгоритм Гомори.
- •Лекция 10 Многополюсные минимальные потоки.
- •Лекция 11 доминирующие множества и абсолютный центр.
- •Доминирующие множества.
- •Нахождение абсолютного p-центра
- •Ленкция 12 простой (классический) генетический алгоритм.
- •Лекция 13 Стохастическая задача размещения-распределения объектов.
Лекция 5
Задача о максимальном потоке при наличии нижних ограничений на поток.
Пусть
каждой дуге
орграфа (орсети)
поставлены в соответствие неотрицательные
числа
(или
.
)
называется пропускной
способностью дуги
,
а
- нижней границей дугового потока. При
этом
.
Выделим два узла в
:
– источник,
– сток. Остальные узлы будем называть
промежуточными.
Рассмотрим на такой сети функцию
,
определённую на множестве
;
значение, которое
принимает на дуге
,
обозначим как
.
Определение
2.1.
Потоком
из
в
в орсети
называется функция
,
удовлетворяющая условиям:
Условия
(2.1) называют уравнениями
сохранения,
а величину
- чистым
потоком из узла
.
Определение
2.2.
Величиной
(значением)
потока
называется чистый поток из узла
:
Для
каждого разреза
определим пропускную способность:
.
Лемма 2.1. Пусть - поток из в величины в сети , а - разрез, отделяющий от . Тогда:
.
Разрез
,
отделяющий источник и сток, будем
называть минимальным
разрезом,
если величина его пропускной способности
есть наименьшая среди значений пропускных
способностей всех разрезов, отделяющих
источник и сток. Минимальных разрезов
в конкретной орсети может быть несколько.
Поток будем называть максимальным
потоком,
если его величина наибольшая среди
величин всех потоков.
Теорема (о максимальном потоке и минимальном разрезе).
Для любой сети величина максимального потока из в равна значению пропускной способности минимального разреза.
Внесем несущественные изменения в алгоритм Форда-Фалкерсона.
Опишем процедуру расстановки меток, расширив множество формальных параметров.
Label (f,s,t,e,r);
1. for i:=1 to n do
2. [i]:=0
3. Q:=nil; Q<= s; [s]:=e; ftr[s]:=r
4. while [t]=0 & Q#nil do
5. i<=Q
6. for j:=1 to n do
7. if [ j ]=0 & c[ i , j ]-f[ i , j ]>0
8. then [ j ]=MIN([i],c[ i , j ]-f[ i , j ])
9. ftr[ j ]:=i
10. Q<=j
11. for j:=1 to n do
12. if [ j ]=0 & f[ j , i ]>l[I,j]
13. then [ j ]=min([ i ],f[ j , i ]-l[I,j])
14. ftr[ j ]:=-i
15. Q<=j
Алгоритм Форда-Фалкерсона
Вход: n, орграф задан матрицей c[n,n] , //матрица пропускных способностей дуг
источник s, сток t , l[n,n] , // матрица нижних границ дуговых потоков
f[n,n] // начальный допустимый поток
Выход: f[n,n], v // максимальный поток и его величина
1. v:=0
2. for i:=1 to n do v:=v+f[s,i] - f[i,s]
3. repeat
4. Label(f,s,t,∞,0)
5. if [t]>0
6. then v:=v+[t]
7. i:=t
8. while i#s do
9. j:=ABS(ftr[i])
10. if ftr[i]>0
11. then f[j,i]:=f[j,i]+ [t]
12. else f[i,j]:=f[i,j]- [t]
13. i:=j
14. until [t]=0
Построение начального допустимого потока связано с решением задачи о циркуляции.
