русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Задача коммивояжера с неравенством треугольника.


Дата добавления: 2015-01-16; просмотров: 1267; Нарушение авторских прав


Напомним, что задача состоит в том, чтобы в полном неориентированном графе G = (V, E), для каждого ребра которого известна его стоимость, найти гамильтонов цикл минимальной стоимости. Стоимость любого множества ребер A Í E есть сумма стоимостей его ребер

c(A) = å c (u, v)

(u, v) ÎA

На практике функция стоимости ребер обычно удовлетворяет неравенству треугольника: с (u, v) £ c (u, w) + c (w, v), для любых трех вершие u, v, w Î V. Даже в предположении неравенства треугольника задача коммивояжера остается NP-полной. Тем самым нет шансов найти полиномиальный алгоритм, дающий оптимальное решение, и есть смысл искать приближенные алгоритмы. Известен полиномиальный алгоритм, решающий задачу с ошибкой не более чем в 2 раза.

Приближенный алгоритм TSP. Воспользуемся алгоритмом Прима (Prim)[] отыскания минимального покрывающего дерева, а затем переделаем это дерево в цикл.

TSP (G, e)

1. возьмем за корень дерева произвольную вершину a Î V

2. построим минимальное полкрывающее дерево T для графа G

с помощью алгоритма Prim (G, c, a)

3. returnцикл обхода вдоль ребер дерева T с выброшенными

повторениями

 

Рис.37.2.

На рис. 37.2 показана работа алгоритма. Для данной системы точек на плоскости (a) строится минимальное остовное дерево T; a – корень (б). Путь, обходящий все вершины дерева (в), не является циклом. Удаляя повторения, получим гамильтонов цикл (г), который примерно на 23% длиннее оптимального цикла (д). Время работы алгоритма TSP равно O(E)=O(V2), поскольку алгоритм применялся к полному графу. Приверим, что найденный цикл не более чем вдвое длиннее оптимального.

Теорема.Алгоритм TSP решает задачу коммивояжера с ошибкой не более чем в 2 раза, если выполнено неравенство треугольника.

Доказательство. Пусть H* - гамильтонов цикл наимньшей стоимости. Покажем, что с (H) £ 2c (H*) для цикла H, найденного с помощью алгоритма TSP. Удаляя любое ребро из цикла H*, мы получим покрывающее дерево. Его стоимость не превосходит c (H*), тем более это верно для оптимального покрывающего дерева T: c (T) £ c(H*).



Совершим полный обход W оптимального дерева T, при этом каждое ребро проходится дважды, поэтому c (W) = 2c (T). Так что c (W) £ 2c (H*).

Осталось заметить, что при удалении повторно проходимых вершин стоимость может только уменьшиться. Таким образом, с (H) £ c (W).

 



<== предыдущая лекция | следующая лекция ==>
Задача о вершинном покрытии | Общая задача коммивояжера


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.123 сек.