- •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)).
Задача о максимальной клике.
Нельзя ли было бы обойтись двумя красками? Двойственной задачей к этой является задача о максимальной клике (клика = полный подграф). Если в графе существует полный подграф на 3 ребрах, то минимальное число красок = 3 (т.к. минимальное число красок для полного подграфа на N вершинах равно N).
В нашем случае есть клика: т.е. чтобы решить задачу о максимальной клике и решить задачу о раскраске, и посмотреть не являются ли вершины с номерами 8, 7, 1 вершинами клики.
Задача о P-медиане на графе. Даны граф G =(V,E), матрица расстояний D ={dij} и веса вершин W={wi}. Найти подмножество С V и |С| = p такое, что Интерпретация: С – множество складов.
Минимизируем суммарную длину пути при подвозе товаров со складов.
Решение (аналог argmin алгоритма ДОСТРОЙКА). Пусть C* = {j *- новый склад} и - расстояние до ближайшего склада. Тогда
Трудоемкость: 1. C * = C {j *}, 2. ri(C *) 3. n = |V|операций.
O(n2) - выбор одного центра. Повторяя выбор p раз, получим трудоемкость O(n2 p). Задача на графе NP ‑полна, для деревьев существует полиномиальный алгоритм.
Задача о P-центре. В отличие от задачи о p‑медиане функционал будет такой:
Аналог алгоритма ДОСТРОЙКА для этой задачи – наиболее удаленный сосед.
Задача коммивояжера.
Алгоритм 1. Иди в ближайшую непройденную вершину (может не найти цикл).
А лгоритм 2: Если выполнено неравенство треугольника dij dik + dkj, то гарантируется нахождение цикла с длиной, превышающий оптимум не более чем в 2 раза.
Сначала построим МОД и выпишем обход: 1,2,7,6,3,6,5,4,5,6,7,2,8,2,1 (вперед и назад). Проредим его, вычеркивая все повторные вхождения вершин, кроме последней. Получим эйлеров цикл: 1,2,7,6,3,5,4,8,1. Оценим погрешность :
Из неравенства треугольника Dпостр 2D МОД 2Dопт - длина кратчайшего обхода.
2Dопт Dпостр Dпостр - Dопт Dопт - приближенный алгоритм. Трудоемкость решения O(n2) (построение МОД)
№28. Алгоритм Кристофидеса для ЗКНТ.
Строим МОД и на нем множество V’ вершин с нечетной степенью.
На множестве V’ строим минимальное взвешенное паросочетание (МПС) (вершины разбиваются на пары, соединяемые ребрами с минимальной суммарной длиной): (1,8), (2,3), (6,4). Добавляем эти ребра в дерево.
На этом мультиграфе строится эйлеров обход: 1 2 3 6 4 5 6 7 2 8 1
Прореживаем его так же, как в предыдущем алгоритме: 1 2 3 6 4 5 7 8 1.
Докажем, что его длина превышает оптимум не более, чем на.50%.
П усть {i1, i2,…,i2m}- множество вершин из V’, выписанных в порядке появления их на оптимальном маршруте коммивояжера. Тогда по неравенству треугольника имеем для паросочетаний
S1 = {(i1, i2), (i3, i4),…} и S 2 = {(i2, i3), (i4, i5),…}:
Dпостр D МОД + D МПС Dопт + D МПС , и Dопт D(S1) + D(S2) 2D МПС .
Приведем пример того, что эта оценка неулучшаема. МОД – k треугольников.
при
3.7. Точные методы решения np-полных задач.
№29 Решение задачи коммивояжера методом ветвей и границ.
- |
2 |
- |
8 |
3 |
7 |
2 |
- |
2 |
- |
1 |
3 |
- |
2 |
- |
2 |
1 |
2 |
8 |
- |
2 |
- |
2 |
1 |
3 |
1 |
1 |
2 |
- |
3 |
7 |
3 |
2 |
1 |
3 |
- |
Пусть Dопт – оптимальная длина цикла при фиксированной цепочке C,
-длина перемычки, Dопт ≥ DC + DМОД + Dперем.= fC
Если fC fR , т.е. fR - D DМОД + Dперем , (где fR – длина текущего рекордного цикла R), то цепочка C не улучшает рекорд последнее звено цепочки C можно отбросить.
Некоторые ребра выкинем сразу. Если из гамильтонова цикла выкинуть любое ребро, то останется цепочка, для которой Dопт DМОД (V), fR Dопт DМОД (V) + r (на множестве всех вершин графа, r-длина любого ребра, вошедшего в оптимальный цикл). Получаем r fR – DМОД (V). Если r > fR – DМОД (V), то это ребро в улучшающий цикл не войдет.
Чтобы улучшить рекорд, необходимо r fR – DМОД (V). Решаем:
С начала строим текущий рекордный цикл R:
fR=14
Строим МОД алгоритмом Тарьяна: 1 – 2 – 5 – 3 – 4 – 6, D МОД =7
О тбросим ребра 1–4 и 1–6, длина которых. f R - D МОД = 14-7 = 7. Степень вершины 1 равна 2 ребра 1–2 и 1–5 участвуют в цепи, хорда 2–5 не участвует (иначе возникнет цикл). Начнем построение цепочки с вершины 5, т.к. ее степень больше степени вершины 2.
При поиске сначала вглубь цепочка с фиксированным началом целиком определяется своей последней вершиной k. вместо fC и DC будем писать fk. и Dk..
f6 = 8+2+(1+1) = 12 = f3 = 7+1+(2+2) < fR = 14. Оценочные функции совпали выбираем для ветвления вершину с мин.номером, т.е. 3: fR-D3=14-7=7
Ветвим и делаем проверку на новый рекорд: в самом деле, имеем fR=12 назад.
Т .к. рекорд изменился, снова проверяем вершину 6 на возможность ветвления. Проверяем
f6 =12 ≥ fR = 12. улучшения быть не может, назад.
Все висячие вершины раскрыты R – оптимален, fR=12.
Этот метод работает, если граф неориентированный (нужно для построения МОД).
№30. Задача оптимального распределения ограниченного ресурса.
Пусть задан ресурс R 0 и n потребителей со своими функциями прибыли i(x). Требуется распределить ресурс между потребителями: R = i ri , ri 0, максимизируя суммарную прибыль i i(ri). Заметим, что любая часть оптимального распределения сама является оптимальным распределением (принцип Беллмана).
Пусть Fk(y) = { k(xk) + Fk+1(y-xk)} - максимальная прибыль потребителей с номерами от k до n-1 при распределении между ними ресурса y и Fn(y) = n(y). Если R и ri – целые, то, меняя k от n-1 до 1 (метод динамического программирования), мы найдем максимальную прибыль F1(R). Трудоемкость = O(nR2).
Пример: 3 экзамена за 8 дней. i – оценка на экзамене, x - время на подготовку.
x |
1 |
2 |
3 |
|
y |
F3(y) |
x2(y) |
F2(y) |
x1(y) |
F1(y) |
|
2(x) |
F3(4-x) |
2+F3 |
|
1(x) |
F2(8-x) |
1+F2 |
|
0 |
2 |
3 |
2 |
|
0 |
2 |
0 |
5 |
|
|
|
3 |
3 |
6 |
|
2 |
8 |
10 |
|
1 |
2 |
3 |
2 |
|
1 |
2 |
0 |
5 |
|
|
|
3 |
3 |
6 |
|
2 |
8 |
10 |
|
2 |
3 |
4 |
2 |
|
2 |
2 |
2 |
6 |
|
|
|
4 |
2 |
6 |
|
3 |
7 |
10 |
|
3 |
3 |
4 |
3 |
|
3 |
3 |
0 |
6 |
|
|
|
4 |
2 |
6 |
|
3 |
7 |
10 |
|
4 |
4 |
5 |
3 |
|
4 |
3 |
4 |
7 |
|
|
|
5 |
2 |
7 |
|
4 |
7 |
11 |
|
5 |
4 |
5 |
3 |
|
5 |
3 |
2 |
7 |
|
|
|
|
|
max=7 |
|
4 |
6 |
10 |
|
6 |
5 |
5 |
4 |
|
6 |
4 |
0 |
7 |
|
|
xk(y) = min { xk y | |
|
5 |
6 |
11 |
||||
7 |
5 |
5 |
4 |
|
7 |
4 |
4 |
8 |
|
|
k(xk) + Fk+1(y-xk)=Fk(y)} |
5 |
5 |
10 |
|||||
8 |
5 |
5 |
4 |
|
8 |
4 |
2 |
8 |
4 |
11 |
|
max=11 |
5 |
5 |
10 |
Случай идентичных потребителей: i(x)=(x). Докажите, что
а) если (x) выпукла по x, то весь ресурс можно отдать одному потребителю,
б) если вогнута, то его надо делить поровну между всеми потребителями.
№31. Задача о рюкзаке.
Пусть есть рюкзак объема V 0 и n камней с объемами vi и ценами ci. С каждым камнем свяжем переменную xi, равную 1 (если камень берется) или 0 (в противном случае). Требуется найти подмножество камней с максимальной суммарной стоимостью, влезающее в рюкзак (т.е. i cixi → max при i vixi, V).
Пусть Fk(y) - максимальная стоимость камней с номерами от k до n, влезающих в рюкзак объема y. Т.к. любая часть оптимального решения оптимальна, то
Fn(y) = cn (если vn y) или 0 (в противном случае) Если V и vi – целые, то метод
Fk(y) = max { Fk+1(y), ck + Fk+1(y-vk) если y vk} динамического программирования:
xk(y) = min { xk y | ckxk + Fk+1(y-vkxk) = Fk(y) }. меняя k от n-1 до 1, найдем F1(V), Трудоемкость - O(nV). x1(y1=V), xk+1(yk+1= yk - vkxk(yk)).
y |
x1(y) |
F1(y) |
x2(y) |
F2(y) |
x3(y) |
F3(y) |
x4(y) |
F4(y) |
1 |
|
|
0 |
0 |
0 |
0 |
0 |
0 |
2 |
|
|
1 |
6 |
0 |
0 |
0 |
0 |
3 |
|
|
0 |
8 |
1 |
8 |
0 |
0 |
4 |
|
|
0 |
10 |
0 |
10 |
1 |
10 |
5 |
1 |
15 |
1 |
14 |
0 |
10 |
1 |
10 |
5 x1 + 6 x2 + 8 x3 + 10 x4 max
x1 + 2 x2 + 3 x3 + 4 x4 5
F2(4) =max{ F3(4),6+ F3(4-2=2)}
= max {10,6+0} = 10, x2(4)=0.
F1(5) =max{ F2(5),10+ F2(5-1)}
= max {14,5+10} = 15, x1(5)=1.
x1 =x1(5)=1, x2 =x2(5-v1x1 =4)=0, x3 =x3(4-v2x2 =4)=0, x4=x4(4-v3x3 =4)=1.
NP-полны и варианты задачи: если xk {0,1,2,3,…} или ограничен вес рюкзака. Точное решение дает метод ветвей и границ, нижние оценки для которого получают при отказе от ограничений (целочисленности), или метод динамического программирования. NP-полна и задача о двух кучах камней: можно ли разделить на 2 равные части кучу камней с целочисленными весами?
Пример: для набора весов {5,4,3,3,3} жадная эвристика не находит решения.