- •Министерство образования Республики Беларусь
- •I. Решение систем линейных уравнений методом Жордана-Гаусса
- •Матрицы и
- •Решение системы, полученное после приравнивания нулю всех свободных переменных, называется базисным. Алгоритм приведения матрицы к базисному виду
- •Контрольные задания для самостоятельного решения
- •Варианты:
- •II. Решение задачи линейного программирования геометрическим методом
- •III. Решение задачи линейного программирования Симплекс-методом
- •Контрольные задания для самостоятельного решения
- •Варианты:
- •Алгоритм Симплекс-метода
- •Контрольные задания для самостоятельного решения
- •Варианты:
- •IV. Двойственность в линейном программировании. Двойственный симплекс-метод
- •Контрольные задания для самостоятельного решения Задание 4. Решить задачу линейного программирования двойственным симплекс-методом. Варианты
- •V. Транспортная задача
- •Контрольные задания для самостоятельного решения
- •VI. Задача о максимальном потоке в сети
- •Алгоритм расстановки пометок нахождения увеличивающего пути
- •Алгоритм Форда – построения максимального потока в сети.
- •Контрольные задания для самостоятельного решения
- •VII. Сетевое планирование.
- •Алгоритм правильной нумерации.
- •Алгоритм нахождения ранних сроков наступления событий
- •Алгоритм нахождения поздних сроков наступления событий
- •Контрольные задания для самостоятельного решения
- •VIII. Задача о кратчайшем пути
- •Алгоритм построения кратчайших путей в сети
- •Контрольные задания для самостоятельного решения
- •Литература
Алгоритм расстановки пометок нахождения увеличивающего пути
Шаг 1. Источник s получает метку (s+).
Шаг 2. Для всех дуг (s,j) выходящих из вершины s, соответствующие вершины j получают метку s+, если xsj dsj. Для дуг (i,s), входящих в вершину s, соответствующие вершины i получают метку (s-), если xis 0.
Шаг k. Просматриваем все вершины, помеченные на (k-1)- ом шаге. Для каждой такой вершины k, соответствующие им вершины j, для которых xki dkj, получают метку (k+), для всех дуг (i,k), входящих в вершину k, соответствующих им вершины i , для которых xik 0, получают метку (k -).
Алгоритм
заканчивает работу одним из двух
состояний: а) после некоторого шага
мы не можем пометить ни одной вершины,
и сток t
остался непомеченным. Это означает,
что имеющийся поток является максимальным,
а (R,
),
где R
–множество
помеченных,
- множество непомеченных вершин, образует
минимальный разрез; б) стокt
оказался помеченным. Двигаясь от стока
t
к вершине, номер которой указан в ее
метке и т.д., мы придем к источнику.
Алгоритм Форда – построения максимального потока в сети.
Начальный.
Выбираем некоторый поток
в сетиG
(V,U)
(например xi
j=
0 для всех
дуг (i,j)
U).
Общая итерация 1. Применяем алгоритм нахождения увеличивающего пути из источника s в сток t. Если такого пути нет, то построенный поток является максимальным. Алгоритм заканчивает работу. Если увеличивающий путь найден, то переходим к 2.
2.
В найденном увеличивающем пути обозначим
через P+
множество прямых, а P
-
- множество обратных дуг пути и вычисляем
величину
1
=
(dij
– xij)
0 и
2
=
.
Полагаем q
= min
(
1,
2).
Увеличиваем
поток вдоль пути P
на величину
,
полагая
xij’
= xij+
,если
(i
,j)
P+
xij’
= xij
–
,
если
(i,
j)
P-
(23)
xij’ = xij для остальных дуг пути.
Переходим к 1.
Рассмотрим пример. На рис.1. изображена сеть. Первое число в скобках указывает пропускную способность дуги, второе – дуговой поток.

Рис.1.
Найдем увеличивающий путь.
Общая итерация: Шаг 1. Источник s получает пометку (s+).
Шаг
2. Так
как
= 1
= 2, то
вершина 1
получает метку (s+).
Вершина
2
получает метку (s-),
т.к. x21
= 1
0. Вершина 5
не может быть помечена, т.к.
(дуга (s,
5) – насыщенная).
Шаг 3. Соседними вершинами с вновь помеченными являются вершины 3 и 4. Вершина 3 помечена не может быть, так как x13 = d13..Вершина 4 получает пометку (2-), т.к. х42 = 1 0.
Шаг 4. Соседними с помеченной вершиной 4 являются вершины t и 5. Вершина t помечена не может быть, т.к. хt4 = 0. Вершина 5 получает пометку (4-), т.к. x54=10.
Шаг 5. Помечаем вершину t с меткой (5+), x51=1 < d51=3.
Увеличивающий путь: s – 2 – 4 – 5 - t , причем на этом пути дуга (5, t) является прямой, а дуги (2, s); (4, 2); (5, 4) обратными.
Увеличим поток вдоль этого пути по формулам (23).
Находим
1
![]()
2
=
![]()
т.е. = min( 1, 2) = 1.
Полагаем
2S
=
x2S
– 1 = 0,
42
= x42
–1 =0,
54
= x54
– 1 = 0,
5t
= x5
t+1
= 2.
Величина суммарного потока в сети равна 3.
Общая
итерация 1.
Для нового потока ищем увеличивающий
путь методом расстановки пометок.
Пометить удается только вершины s
и 1. Следовательно, увеличивающего
пути нет, и построенный поток является
максимальным. Минимальный разрез
(R,,
,
где
R
= 1;
2,
= 2;
3; 4; 5; t
состоит из
дуг (R,
) = (1,
3); (s,
5); (s,2);
(1,2)
и обладает
пропускной способностью
C
(R,
)
= d13
+ dS5
= 3.
На рис.2 минимальный разрез показан пунктирной линией

Рис. 2
