Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CLIO_фокин24.doc
Скачиваний:
9
Добавлен:
18.11.2019
Размер:
3.11 Mб
Скачать

Нахождение кратчайшего пути для ациклического орграфа

У тверждение 1: В ациклическом графе существует вершина, в которую не входит ни одна дуга.

Доказательство. Предположим противное. Возьмем любую вершину. По предположению в нее входит дуга. Перейдем в начало дуги, пометив его и т.д. Число вершин конечно  когда-то мы попадем в помеченную вершину и найдем цикл.

В ершины, в которые не входит ни одна дуга, поместим на слой 1 и удалим выхо­дящие из них дуги. В оставшемся графе снова возьмем вершины, в которые не входят дуги, поместим их на слой 2 и восстановим входя­щие в них дуги с предыдущих слоев и т.д.

Обработаем этот граф: D(1)=0 D(2)=d12+D(1)=3, D(4)=d24+D(2)=-1+3=+2,

D(5)=d25+D(2)=-5+3=-2, D(3)= min{d43+D(4), d13+D(1)}=-4, D(6)= min{D(4)+4, D(3)+9, D(5)+2}=0. Кратчайший путь легко строится по вектору отцов.

Алгоритм работает для любого ациклического графа. Оценим его трудоемкость:

  1. построение слоистой сети ~ числу дуг этого графа

  2.  трудоемкость алгоритма ~ числу дуг, каждая дуга будет обработана 1 раз

В слоистой сети и в начальном графе число дуг совпадает.

22. Задача сетевого планирования.

k

P.

tk

i

j

ij = wj – tij – i

1

-

10

S

1

w1 – 10 – S = 0

2

-

8

S

2

w2 – 8 – S = 14

3

1

12

1

3

w3 – 12 – 1 = 0

4

1,2

7

4

5

w5 – 7 – 4 = 19

5

2,3

14

3

5

w5 – 14 – 3 = 0

6

1,4,5

6

5

T

wT – 19 – 5 = 0

7

3,6

13

Дано множество работ {rk} с длительностями tk и отношение предшествования P между работами. Найти минимальное время, за которое можно выполнить все работы.

Работы будем обозначать сплошными дугами, а отношения предшествования (фиктивные дуги) – прерывистыми. Составим из работ слоистую сеть. На слой 1 поместим работы, которым ничего не предшествует. Работам следующих слоев предшествуют работы слоев с меньшими номерами, причем хотя бы одна работа с непосредственно предшествующего слоя.

Правила редукции графа. 1. Если концы фиктивной дуги связывает путь, то дугу можно удалить (из r1 в r6 и из r3 в r7).

2. Если в вершину втекает, или из нее вытекает единственная дуга, и она фик­тивна, то начало и конец дуги можно склеить (r3 поглощает 2 дуги, r5 и r6 по 1).

3 . Две работы, следующих одна за другой, объединим в одну с суммарной дли­тельностью, если степень вершины на стыке равна 2 ( в примере - r6 и r7).

Объединим все вершины слоя 1 в вершину s, последнего слоя – в вершину t.

Пусть i – самый ранний срок начала работ, выходящих из вершины i, а i – самый поздний срок окончания работ, входящих в вершину i при условии, что весь комплекс работ будет завершен в минимальное время. Тогда

1 = 0, i = max j{j + tji } t = t , i = min j{j -  tij }

i

0

10

8

22

10

36

55

i

S

1

2

3

4

5

T

i

0

10

22

22

29

36

55

ij = j - tij - i  - максимальная задержка работы, выполняющейся на отрезке (i,j).

Работу назовем критической, если ij = 0. Путь критический, если все дуги в нем критические. Он – самый длинный в сети.

Двойственность в сетевом планировании.

Задача нахождения αi= max{αi+ dij} ~ задаче αt- αs→ min при αi– αj≥ dij

Она двойственна прямой задаче cx → max, Ax = b, x ≥ 0 с параметрами: A - мат­рица инциденций, c ={dij} – длительности работ (реальных и фиктивных), x – единичный поток. Ограничения прямой задачи = уравнения баланса для потока. Матрица инциденций вполне унимодулярна  ЛП = ЦЛП  cx = длина пути. Цель – найти максимальный путь. Граф ацикличен  задача полиномиальна.

Выделение критических работ и путей непосредственно следует из ТДН ???

Обратим внимание на то, что y в двойственной задаче yb → min, yA ≥ c может быть любым  ограничения прямой задачи имеют форму равенств. b=(-1,0 0,1).

Связь с NP ‑полной задачей МНОГОПРОЦЕССОРНОЕ РАСПИСАНИЕ.