4_ Коммивояжер
.pdfЛекция 4
Задача о коммивояжере
1 |
Лекция 4. Задача коммивояжера |
|
Задача коммивояжера
Дана матрица (cij) попарных расстояний между городами, 1 i, j n.
Найти контур минимальной длины, то есть цикл, проходящий через каждую вершину ровно один раз и имеющий минимальный вес.
2 |
Лекция 4. Задача коммивояжера |
|
Задачи маршрутизации
J — множество клиентов
K — множество грузовиков
Qk — грузоподъемность грузовика k K
3 |
Лекция 4. Задача коммивояжера |
|
Составление расписаний на одном станке
Дано n деталей и один станок, сij — длительность переналадки станка для обработки j-й детали после i-й детали, pj — длительность обработки j-й детали.
Найти последовательность обработки деталей, имеющую минимальную суммарную длительность.
in |
in–1 … |
i1 |
детали |
станок |
4 |
Лекция 4. Задача коммивояжера |
|
Алгоритмическая сложность
Теорема 1. Задача коммивояжера является NP-трудной даже в случае, когда (сij) — евклидовы расстояния на плоскости, то есть матрица симметрична и удовлетворяет неравенству треугольника
сij сik + сkj, 1 i, |
j, k n. |
Теорема 2. Если существует приближенный полиномиальный алгоритм A и константа r, 1 r < такие, что для любого примера I задачи коммивояжера верно A(I) r OPT(I), то P = NP.
5 |
Лекция 4. Задача коммивояжера |
|
Доказательство. Рассмотрим NP–полную задачу о гамильтоновом цикле: дан граф G = (V, E), правда ли, что он содержит гамильтонов цикл? Если условия теоремы верны и такие A и r существуют, то мы получим точный полиномиальный алгоритм решения задачи о гамильтоновом цикле. По заданному графу G = (V, E) построим пример задачи коммивояжера, положив
|
1, |
если |
(ij) E, |
|
|
cij |
|
|
(ij) E, |
n |V |. |
|
nr, |
если |
||||
|
Применим алгоритм A и посмотрим на ответ. Если получили цикл длины n, то граф G, очевидно, содержит гамильтонов цикл.
Если длина цикла больше n, то она не меньше чем n r + (n – 1), так как включает вес хотя бы одного из «тяжелых» ребер. Но в этом случае граф G не может иметь гамильтонов цикл, так как алгоритм A ошибается не более чем в r раз и ответ в задаче коммивояжера не должен превосходить если гамильтонов цикл есть. Итак, алгоритм A всегда дает правильный вет для NP–полной задачи и имеет полиномиальную трудоемкость,
то есть P = NP.
6 |
Лекция 4. Задача коммивояжера |
|
Нижние оценки в задаче коммивояжера
Примитивная оценка. Плата за выезд Плата за въезд
n
Теорема 3. OPT (cij ) ai
i 1
n
bj .
j 1
|
|
|
|
cij |
Доказательство. Положим cij |
||||
|
|
n |
|
|
|
|
ai . |
|
|
OPT (cij ) OPT (cij ) |
|
|||
|
|
i 1 |
|
|
|
|
bj , |
1 i, j n, |
|
Аналогично, cij |
cij |
ai , 1 i, j n. Тогда
и
n |
n |
|
|
OPT (cij ) OPT (cij ) ai bj |
|
i 1 |
j 1 |
n
ai
i1
n
bj .
j 1
7 |
Лекция 4. Задача коммивояжера |
|
Примитивная оценка:
|
36 |
44 |
37 |
41 |
|
|
|
|
|
32 |
|
48 |
57 |
43 |
|
|
|
|
|
49 |
41 |
|
39 |
60 |
|
|
|
|
|
38 |
34 |
35 |
|
52 |
|
|
|
|
|
40 |
43 |
47 |
37 |
|
|
|
|
|
|
8 |
Лекция 4. Задача коммивояжера |
|
Оценка линейного программирования
Введем переменные
Математическая модель
при ограничениях
xij
i S j J \S
если из города едем в город
n |
n |
|
min cij xij |
||
i 1 j 1 |
|
|
n |
|
|
xij |
1, |
j J , |
i 1 |
|
|
n |
|
|
xij |
1, |
i J , |
j1
1, S J , S , (исключение подциклов)
xij {0,1}, i,j J.
Заменяя xij {0,1} на 0 xij 1, получаем задачу линейного программирования, которая дает нижнюю оценку для оптимума, не хуже предыдущей.
9 |
Лекция 4. Задача коммивояжера |
|
1–Деревья для симметричных матриц
Хотим найти гамильтонов цикл минимального веса. Необходимо найти:
ровно n ребер,
которые покрывают все вершины,
имеют минимальный суммарный вес и
каждая вершина инцидентна ровно двум ребрам. Заменим последнее условие на следующее:
одна заданная вершина инцидентна ровно двум ребрам. Ослабили условия, значит, получим нижнюю оценку.
10 |
Лекция 4. Задача коммивояжера |
|