Теория игр и исследование операций. Модели, алгоритмы, сложность: Конспект лекций, страница 35

Прореживаем его так же, как в предыдущем алгоритме: 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) ³ 2×D МПС  Þ.

Приведем пример того, что эта оценка неулучшаема. МОД – 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.

На вершинах, не вошедших в цепочку, построим МОД.

Dопт  – оптимальная длина при фиксированной цепочке,

-длина перемычки,  Dопт ≥ D + DМОД + Dперем.= Dпостр

Если Dпостр ³ R , то цепочку можно отбросить (R – сам цикл). R – рекорд, т.е. если R - D £ DМОД + Dперем, то цепочка не улучшает рекорд, Þ отсечение.

Некоторые ребра можно выкидывать. Если из гамильтонова цикла выкинем любое ребро, то останется цепочка, для которой Dопт ³ DМОД (v), Þ
R ³ Dопт ³ DМОД (v) + r (на множестве всех вершин графа, r-длина любого ребра, вошедшего в оптимальный цикл). Получаем  r £ R – DМОД (v).

Если r > R – DМОД (v), то это ребро в улучшающий цикл не войдет.

Чтобы улучшить рекорд, необходимо r < R – DМОД (v).                            Решаем:

1.  Сначала строим текущий рекордный цикл R:

fR=14

2.  Строим МОД алгоритмом Тарьяна: 1 – 2 – 5 – 3 – 4 – 6,  DМОД  =7

3.  Отбросим ребра (1,4) и (1,6), длина которых.³ fR - DМОД = 14-17 = 7. Вершина 1 имеет степень 2 Þ ребра (1,2) и (1,5) участвуют в цепи,  хорда (2,5) не участвует (иначе возникнет цикл). Начнем построение с вершины 5, ее степень больше, чем у 2.

Для вершины 1?: fR-D=14-8=6         Для вершины 2: fR-D=14-7=7

Þ Ветвим и делаем перепроверку, т.к. получен новый рекорд: fR=12

fR-D=12-7=5=5= улучшения нет, Þ отсечение.

Для вершины 6: ,

Для нижней вершины 3:      D=10,              fR-D=14-10=4

,

Для нижней вершины 4:      D=9,                fR-D=14-9=5

Þ ветвим, но мы получили цикл, Þ   (r<12-7=5, оставляем. Стоп.)

Все висячие вершины раскрыты Þ R – оптимален,   fR=12.

Этот метод работает, если граф неориентированный ( для построения МОД).


№30. Задача оптимального распределения ограниченного ресурса.

Пусть задан ресурс R ³ 0 и n потребителей со своими функциями прибыли j i(x). Требуется распределить ресурс между потребителями: R = Siri , ri ³ 0, максимизируя суммарную прибыль Si j i(ri). Заметим, что любая часть оптимального распределения сама является оптимальным распределением (принцип Беллмана).

Пусть Fk(y) ={ j k(xk) + Fk+1(y-xk)} - максимальная прибыль потребителей с номерами от k до n-1 при распределении между ними ресурса y и Fn(y) = j n(y). ЕслиR и ri – целые, то, меняя k от n-1 до 1 (метод динамического программирования), мы найдем максимальную прибыль F1(R). Трудоемкость = O(n×R2).

Пример: 3 экзамена за 8 дней. j i – оценка на экзамене, x - время на подготовку.