- •1.1. Введение.
- •1.2. Оптимизационные задачи в 2.
- •1.4. Понятие о nр-полноте.
- •Условие целочисленности решения задачи лп.
- •Критерий полной унимодулярности.
- •Задача о назначениях.
- •Задача коммивояжера.
- •2. Принятие решений и элементы теории игр.
- •2.1. Задачи многокритериальной оптимизации.
- •2.3. Игры.
- •Дележи.
- •3. Сетевые модели.
- •3.1. Способы задания графов.
- •3.2. Изоморфизм графов.
- •П оиск простейших узких мест графа за o(|e|).
- •3.3. Остовные деревья.
- •Описание алгоритма Прима:
- •Корректность алгоритма Прима.
- •3.4. Кратчайшие пути в графах. Волновой алгоритм построения дкп (Дейкстра)
- •Нахождение кратчайшего пути для ациклического орграфа
- •3.5. Потоковые задачи Задача о максимальном потоке (змп).
- •На входе: матрицы а –пропускных способностей, и c – цен, c ij 0 - стоимость пропуска единицы потока по ребру (I,j), f0 - ограничение на величину потока.
- •3.6. Приближенное решение np-полных задач.
- •Задача о максимальной клике.
- •3.7. Точные методы решения np-полных задач.
- •4. Элементы теории массового обслуживания.
- •4.1. Пуассоновский поток событий
- •4.2. Моделирование простейшего потока.
- •4.3. Процессы гибели и размножения.
- •Классификация систем массового обслуживания:
- •4.4. Открытая система м | м | 1 (один врач).
- •4.5. Замкнутые системы с резервированием. Будем различать горячий и холодный резервы, т.Е. Исправные, но включенные или выключенные приборы.
- •4.6. Задачи проектирования сетей технического обслуживания.
- •3.5. Алгоритм Тарьяна (для планарных графов мод строится за o(n)).
Нахождение кратчайшего пути для ациклического орграфа
У тверждение 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 раз
В слоистой сети и в начальном графе число дуг совпадает.
№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 |
Работы будем обозначать сплошными дугами, а отношения предшествования (фиктивные дуги) – прерывистыми. Составим из работ слоистую сеть. На слой 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 = 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 ‑полной задачей МНОГОПРОЦЕССОРНОЕ РАСПИСАНИЕ.