25.Метод ветвей и границ. Задача коммивояжера.
Задача коммивояжёра. Задан граф G, каждому ребру соотв. его вес. Найти в G гамильтонов цикл (через все вершины) мин. веса.
Утв. Эта задача NP-трудная, «гамильтонов цикл» « коммивояжер».
Теор. Если для какой-то константы r полиномиальный алгоритм решения задачи коммивояжёра с гарантированной оценкой точностиr, то P=NP.
Док-во. Пусть такой r и алгоритм А Рассм. задачу «гамильтонов цикл», пусть графG =(V,E) её вход, |G| = n. Построим вход задачи коммивояжёра определив веса ребер следующим образом: cij = .
путь коммивояжёра длины n iff в G есть гамильтонов цикл. Если алгоритм гамильтонов цикл. Если длина пути, найденного этим полиномиальным алгоритмом, большеn, то она не меньше nr+(n-1), поскольку включает хотя бы одно ребро веса nr(тяжелые ребра). Но поскольку алгоритм, по условию, ошибается не более чем в r раз, то получается что длина оптимального пути коммивояжера > n =>в G нет гамильтонова цикла .Получили что в G есть гамильтонов цикл iff алгоритм А может найти путь коммивояжера длины n за полиномиальное время => P=NP.
Метод ветвей и границ. Мы решаем задачу Х. S – мн-во всех возм. решений задачи Х. Нам нужно найти решение sS такое, что w(s) минимально. Строим дерево решений. Для какого-то мн-ва решений Т пусть g(T) – нижняя оценка для стоимостей решений из Т, т.е. такое число, что w(s)g(T) длярешенияsПредп., что мы умеем генерировать нижние оценки g для любой вершины дерева решений. Возьмём произв. решение и запомним его стоимость это будет текущий рекорд record.
Для решения задачи коммивояжёра надо знать:
Как ветвить дерево решений
Как генерировать нижние оценки
Пусть S – мн-во всех гамильтоновых циклов, ij – нек. ребро. Разделим S на 2 части, одна содержит ребро ij, другая нет. И т.д.
Задачу коммивояжера можно задать с помощью матрицы
Сij стоимость (вес) ребра ij
Пусть ОРТ(Сij) – оптимальное стоимость пути для задачи коммивояжера, заданной при помощи матрицы С , введем обозначение аi = min cij , i j , i=1,..,n , bj = min (cij - аi), i j , j=1,..,n
Т-ма ОРТ(Сij) +
- 1.Трудоемкость алгоритмов
- 2.Алгоритмы сортировки
- 3.Сортировка слиянием
- 4.Бинарные поисковые деревья
- 5.2-3-4 Деревья
- 6.Хеширование
- 7. Поиск подстроки. Алгоритм Кнута-Морриса- Пратта.
- 8. Графы. Структуры данных для представления графов
- 9. Алгоритм нахождения Эйлерова цикла
- 10 .Поиск в ширину(волновой алгоритм)
- 11.Поиск в глубину
- 12.Жадные алгоритмы и матроиды
- 13.Задача об остовном дереве. Алгоритмы Прима и Краскала, их реализация
- 14. Алгоритм Дийкстры
- 15. Алгоритм Флойда
- 16. Паросочетания в двудольных графах
- 17. Потоки и разрезы в сетях. Алгоритм Форда-Фалкерсона
- 18. Задача о рюкзаке
- 21. Классы p и np. Полиномиальное сведение.
- 22. Np- полные задачи. Теорема Кука-Карпа-Левина. Np-полнота задачи о клике
- 23. Алгоритмы с гарантированной оценкой точности. Задача упаковки
- 24.Метод локального поиска и поиска с запретами. Задача о максимальном разрезе.
- 25.Метод ветвей и границ. Задача коммивояжера.
- 26. Задача коммивояжера с неравенством треугольника. Алгоритм Кристофидеса
- 27.Задача о независимом множестве, точные и эвристические алгоритмы ее решения
- 28.Задача о раскраске графа, точные и эвристические алгоритмы ее решения.
- 31.Задача о раскраске хордальных графов
- 32.Генетические алгоритмы
- 33. Page Rank
- 34 Криптосистема с открытым ключом. Криптосистема rsa
- 35.Задача разделения секрета.
- 36. Алгоритмы сжатия информации