Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Метод ветвей и границ для решения задачи о коммивояжере.Содержание книги
Поиск на нашем сайте Пусть имеется (n+ 1)городов A 0, A 1, A 2, A 3, ..., An. Между всеми парами городов известно расстояние ci , j ³0. Коммивояжер, который находится в городе A 0, должен обойти все города, побывав в каждом ровно один раз и вернуться в город A 0 так, чтобы длина пройденного пути была наименьшей. Путь коммивояжера i 0, i 1, i 2, ..., in, i 0 образует замкнутый маршрут. Его длина l (i 0, i 1, i 2, ..., in, i 0)= Так как это задача на перестановках, то число таких маршрутов равно n!. Для поиска минимального (оптимального) маршрута применим метод ветвей и границ. Общая схема этого метода приведена в разделе «Комбинаторные методы решения задач целочисленного линейного программирования». Дадим описание этого метода для задачи о коммивояжере. Алгоритм. Шаг 1. Задание множества X 0,1 и вычисление оценки x 0,1. Множество X 0,1 есть множество всех возможных маршрутов коммивояжера. Оценку x 0,1 получаем, используя процедуру приведе н ия матрицы C 0,1= C =(ci , j ), i =1,2,3,…, n, j =1,2,3,…, n, следующим образом. Для всех i =1,2,3,…, n, hi:=min{ ci , j | j =1,2,3,…, n }, c'i , j := ci , j – hi, i =1,2,3,…, n, j =1,2,3,…, n. Для всех j =1,2,3,…, n, Hj:=min{ c'i , j | i =1,2,3,…, n }, c" i , j := c' i , j – Hj, i =1,2,3,…, n, j =1,2,3,…, n. Переменные hi, Hj называют коэффициентами приведения. Матрицу C" 0,1=(c"i , j), i =1,2,3,…, n, j =1,2,3,…, n, называют приведенной матрицей. Полагаем Шаг 2 .Разбиение множества Xr,t на подмножества. Пусть построено подмножество Xr , t и нижняя оценка функционала xr , t на нем. Этому подмножеству соответствует приведенная матрица C"r , t . Подмножество разбиваем на два: Xr+ 1, m+ 1, Xr+ 1, m+ 2, каждому из которых будут соответствовать свои оценки xr+ 1, m+ 1, xr+ 1, m+ 2 и приведенные матрицы С"r+ 1, m+ 1, С"r+ 1, m+ 2. Подмножество Xr+ 1, m+ 1получается из Xr , t добавлением условия: из пункта p непосредственно идти в пункт q. Подмножество Xr+ 1, m+ 2 получается добавлением условия: из пункта p непосредственно в пункт q идти запрещается. Пару (p, q) выбирают таким образом, чтобы с наибольшей вероятностью подмножество Xr+ 1, m+ 1содержало оптимальный цикл, а Xr+ 1, m+ 2 не содержало его. Для этого пару (p, q) выбирают таким образом, чтобы cp , q =0, при этом, чтобы величина min{ cp , j | j¹q } + min{ ci , q | i¹p } была максимальной, где cp , j , ci , q берутся из матрицы C"r , t Шаг 3. Преобразование матриц расстояний, пересчет оценок. Матрицу C"r+ 1, m+ 2строим следующим образом. Полагаем Cr+ 1, m+ 2= Cr , t , в ней сp , q := M, где M – достаточно большое число, принимаемое за бесконечность. Матрица C"r+ 1, m+ 2 получается из Cr+ 1, m+ 2 процедурой приведения. Для получения xr+ 1, m+ 2складываем xr , t с полученными коэффициентами приведения. Матрицу C"r+ 1, m+ 1 строим следующим образом. Полагаем Cr+ 1, m+ 1= Cr , t , и в ней вычеркиваем строку p и столбец q. Налагаем условие, иключающее образование малых циклов. Для этого восстанавливаем части маршрута, образованные непосредственными переходами в Xr+ 1, m+ 1. Если добавление любой пары (i, j) к этим маршрутам образует малый цикл, то в матрице Cr+ 1, m+ 1 ci , j := –M. Матрица C"r+ 1, m+ 1 получается из Cr+ 1, m+ 1 процедурой приведения. Для получения xr+ 1, m+ 2 складываем xr , t с полученными коэффициентами приведения.
Пример. Рассмотрим задачу, в которой матрица расстояний имеет вид:
Требуется решить поставленную задачу методом ветвей и границ. Решение. Шаг 0. Приводим матрицу C 0,1. Находим hi и вычитаем из ci , j . Получим матрицу
Величины Hj записаны в последней строке этой таблицы, вычитаем их из c'i , j ,получим следующую таблицу
Строим дерево разбиения
Шаг 1 . Разбиваем множество X 0,1 на подмножества X 1,1, X 1,2. В качестве пары (p, q) берем (2,3). Для нее c" 2,3=0 и (min{ c 2, j ) |j¹ 3} + min{ ci ,3 | i¹ 2})максимально. Для подмножества X 1,1 из пункта 2 идти в пункт 3. Матрица расстояний будет иметь вид:
Для запрета малых циклов запрещаем переход из пункта 3 в пункт 2, получаем
Все коэффициенты приведения равны 0, поэтому С" 1,1= С 1,1, x 1,1= x 0,1=21. Подмножество X 1,2 получаем их подмножества X 1,1 запретом перехода из пункта 2 непосредственно в пункт 3. Матрица расстояний будет иметь вид
После приведения получим матрицу C¢ 1,2.
При этом оценка получит значение: x 1,2=21 + 5=26. Достраиваем дерево разбиения
Шаг 2. Минимальная оценка x 1,1, поэтому разбиваем подмножество X 1,1. В качестве пары (p, q), относительно которой проводим ветвление, используем пару (4,5). Для подмножества X 2,1
В этой матрице с целью запрета малых циклов запрещен перeход из 5 в 4. H 2=3,поэтому x 2,1=21 + 3=24. Приведенная матрица будет иметь вид
Для подмножества X 2,2
После приведения получим
Оценка принимает вид: x 2,2=21 + 4=25. Достраиваем дерево разбиения
На последующих шагах получим
Для подмножества X 5,1будем иметь:
т.е. остаются переходы из 0 в 4, из 3 в 5. Эти переходы и переходы, выбранные при движении по дереву от вершины для подмножества X 5,1 до вершины подмножества X 0,1, получаем цикл 0 ® 4 ® 2 ® 3 ® 5 ® 1 ® 0, длина которого l =26. Так как все xr , t для концевых вершин дерева не меньше 26, то этот цикл оптимальный. Если требуется найти все оптимальные решения, то работу алгоритма необходимо продолжить, т.к. на подмножестве X 3,1 оценка x 3,1=26 и на этом подмножестве могут быть оптимальные решения. Самостоятельная работа № 12. Задание. Решить задачу коммивояжера для данных, приведенных в таблице (по вариантам)
.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Последнее изменение этой страницы: 2016-06-29; просмотров: 464; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.41 (0.009 с.) |