Работы будем обозначать сплошными дугами, а отношения предшествования (фиктивные дуги) – прерывистыми. Составим из работ слоистую сеть. На слой 1 поместим работы, которым ничего не предшествует. Работам следующих слоев предшествуют работы слоев с меньшими номерами, причем хотя бы одна работа с непосредственно предшествующего слоя.
Правила редукции графа. 1. Если концы фиктивной дуги связывает путь, то дугу можно удалить (из r1 в r6 и из r3 в r7).
2. Если в вершину втекает, или из нее вытекает единственная дуга, и она фиктивна, то начало и конец дуги можно склеить (r3 поглощает 2 дуги, r5 и r6 по 1).
3. Две работы, следующих одна за другой, объединим в одну с суммарной длительностью, если степень вершины на стыке равна 2 ( в примере - r6 и r7).
Объединим все вершины слоя 1 в вершину s, последнего слоя – в вершину t.
Пусть ai – самый ранний срок начала работ, выходящих из вершины j, а wi – самый поздний срок окончания работ, входящих в вершину j при условии, что весь комплекс работ будет завершен в минимальное время. Тогда
a1 = 0, ai = max j{ai + tij } wt = at , wi = min j{wj - tij }
ai |
0 |
10 |
8 |
22 |
10 |
36 |
55 |
i |
S |
1 |
2 |
3 |
4 |
5 |
T |
wi |
0 |
10 |
22 |
22 |
29 |
36 |
55 |
Dij = wj - tij - ai - максимальная задержка работы, выполняющейся на отрезке (i,j).
Работу назовем критической, если Dij = 0. Путь критический, если все дуги в нем критические. Он – самый длинный в сети.
Двойственность в сетевом планировании.
Задача нахождения αi = max{αi + dij} ~ задаче αt - αs → min при αi – αj ≥ dij
Она двойственна прямой задаче c’x → max, Ax = b, x ≥ 0 с параметрами: A - матрица инциденций, c ={dij} – длительности работ (реальных и фиктивных), x – единичный поток. Ограничения прямой задачи = уравнения баланса для потока. Матрица инциденций вполне унимодулярна Þ ЛП = ЦЛП Þ c’x = длина пути. Цель – найти максимальный путь. Граф ацикличен Þ задача полиномиальна.
Выделение критических работ и путей непосредственно следует из ТДН ???
Обратим внимание на то, что y=α в двойственной задаче y’b → min, y’A ≥ c’ может быть любым Þ ограничения прямой задачи имеют форму равенств. b=(-1,0 0,1).
Связь с NP ‑полной задачей МНОГОПРОЦЕССОРНОЕ РАСПИСАНИЕ.
3.5. ПОТОКОВЫЕ ЗАДАЧИ
Задача о максимальном потоке (ЗМП).
Пусть S – сеть,
т.е. граф (V,E) с
выделенными стартовой и терминальной вершинами s, t ÎV; A ={a ij ³ 0}
– матрица пропускных способностей ребер,
a ij = 0 Û ребра нет; поток X ={x ij}– матрица, удовлетворяющая ограничениям:
0 £ x ij £ a ij , Sj x ij = Sk x ki , " i ¹ s,t – уравнение баланса.
Максимизируем величину потока, вытекающего из вершины s: F( X ) = Sj x sj .
Предположение А. r =min{x ij, x ji} = 0. Иначе проводим операцию ГАШЕНИЕ:
x ij = x ij – r, x ji = x ji – r. Поток
при этом остается допустимым. В том числе x ii = 0. Предположение Б. x js = x tj = 0 (в s ничего не втекает, из t ничего не вытекает).
На диагонали матрицы X стоят нули. Суммы элементов первой строки и последнего столбца равны. Для остальных строк: сумма элементов строки i равна сумме элементов i-го столбца.
Все ограничения и целевая функция линейны Þ это задача ЛП.
Как и задача о кратчайшем пути, она может решаться волновым алгоритмом.
Пусть W –
множество включенных вершин: WÌV, sÎW, tÏW. Обозначим через R(W) ={(v1,v2)ÎE | v1ÎW, v2ÏW} -разрез,`R(W) ={(v1,v2)ÎE | v1ÏW, v2ÎW} -антиразрез,
a (R (W )) = - пропускную способность разреза.
Теорема 1: Для любого потока X и для любого W .
Доказательство. Имеем .
Следствие 1. Sj x sj = Sk x kt . Для этого достаточно взять W = V \ {t}.
Следствие 2. Для любого потока X и для любого W имеем F (X) ≤ a (R (W )) .
Доказательство: .
Неравенство верно для любых Xи W Þ .
Теорема 2 (Форда-Фалкерсона):
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.